LOADING

缓存加载中...

分布式搭建记录

2025/4/5 课外

 
lab的项目:将流批一体化的DB扩充到分布式的集群。

TODO:k8s,测试

基础层

  1. hadoop(yarn):包含存储层HDFS,基础调度层YARN
  2. zookeeper:分布式协调服务
  3. HBase:大规模吞吐的NoSQL
    计算层
  4. Spark:批式计算
  5. Flink:流式计算
  6. Geomesa:时空数据处理
    服务层
  7. Livy:restful接口简化spark任务处理
    其他
  8. 安全

让我们开始吧!

preliminary

Docker init:编写构建脚本

(这里好像不能用,但暂且记录一下。
用于快速将一个项目容器化打包。

在项目中执行docker init后,会进入交互式配置cli,按提示选择:

  1. 应用类型​​(如 Python、Node.js、java 等)。
  2. ​​项目配置​​(如端口、依赖文件路径等)。
  3. ​​是否生成 compose.yaml​​(用于多服务编排)。

生成文件:
├── Dockerfile # 容器构建配置
├── compose.yaml # 多容器编排配置(可选)
└── .dockerignore # 忽略文件列表

好像目前不能用于分布式……

ssh

集群节点间要使用ssh进行通信。

使用sudo service ssh start就能开启系统(我这里用的ubuntu2204)的ssh服务。

script

主要需要进行以下配置:

  1. bash:服务启动脚本,根据需求合并或者分离。
  2. dockerfile:每个服务有单独的dockerfile。因为服务要在docker中部署,所以使用dockerfile指定镜像构建规则。比如解压安装、环境变量、网络、用户等配置。
  3. docker-compose:所有服务共用一个compose文件,所以用来编排多容器,指定容器间依赖关系。它会调用dockerfile。
  4. config:每个服务有单独的config文件。

在所有dockerfile之前做一个基础的dockerfile,创建操作系统环境,安装wget、ssh-server等,配置jdk和环境变量,配置用户、端口等等基础的东西。

k8s

TODO

基础层

Hadoop(yarn)配置

集群规划

服务/节点 01 02 03
HDFS NameNode,DataNode DataNode SecondaryNameNode,DataNode
Yarn NodeManager NodeManager,ResourceManager NodeManager
Mapreduce JobHistoryServer - -

写脚本

  • dockerFile:下载hadoop——>上传Hadoop到Linux——>解压安装——>设置环境变量——>配置Hadoop的SSH文件(先设为免密)

确保hadoop可以无密码ssh其他节点。bin:用户操作;sbin:管理员操作。

  • .sh:预先防止出现权限问题——>启动ssh——>NameNode上格式化HDFS——>启动HDFS(——>启动yarn)——>启动JobHistoryServer

最一开始再刷新一下权限,防止出问题。格式化:创建空白元数据存储,如果第一次就格式化,不是第一次就跳过。
ResourceManager启动yarn,HistoryServer启动JobHistoryServer。其他不鸟。

  • compose:hadoop每个节点:镜像,主机名,网络,端口,环境,volume挂载,启动命令。

只需要启动,容器会将服务自动分发到各个节点。

镜像:dockerfile中构建过。
主机:按照.sh中解析之后的。
网络:所有加入自定义网络的容器可以通过主机名IP地址通信。为容器分配固定ip防止变化产生问题。
端口:外部与docker的端口映射。格式为HOST:CONTAINER。
环境:在这里确定要启动哪些服务(yarn?mapreduce?……)。
volume挂载:bash——>/opt/startup,config/hadoop——>etc/hadoop,namenode-data——>dfs/data。(主要是config和data和log
启动命令:.sh的路径。

Zookeeper