Flink 集群安装部署和 HA 配置

时间:2024-03-16 22:30:40
  • Flink 常见的部署模式
    • 环境准备
      • 推荐在 Mac OS 或者 Linux 环境下运行 Flink
      • 集群模式,那么可以在自己电脑上安装虚拟机
      • 所有的机器上都应该安装 JDK 和 SSH
    • Local 模式
      • 测试任务
        ./bin/flink run examples/batch/WordCount.jar
    • Standalone 模式
      • 和yarn模式相比:
        • Standalone 模式的部署相对简单,可以支持小规模,少量的任务运行;
        • Stabdalone 模式缺少系统层面对集群中 Job 的管理,容易遭成资源分配不均匀;
        • 资源隔离相对简单,任务之间资源竞争严重。
      • 重点:
        • master节点解压
        • 修改 conf 目录下的 flink-conf.yaml:Flink 集群安装部署和 HA 配置
          jobmanager.rpc.address: master
          jobmanager.heap.size: 1024m
          jobmanager.rpc.port: 6123
          taskmanager.memory.process.size: 1568m
          taskmanager.numberOfTaskSlots: 1
          parallelism.default: 1
          jobmanager.execution.failover-strategy: region
          io.tmp.dirs: /tmp
        • 修改 conf 目录下的 master 和 slave 文件
          vim master,将内容修改为:
          master
          vim slave,将内容修改为:
          slave01
          slave02
        • 将修改好的解压目录完整的拷贝到两个从节点中去
          scp -r /SoftWare/flink-1.10.0 slave01:/SoftWare/
          scp -r /SoftWare/flink-1.10.0 slave02:/SoftWare/
        • 在 master、slave01、slave02 上分别配置环境变量
          vim /etc/profile,将内容修改为:
          export FLINK_HOME=/SoftWare/flink-1.10.0
          export PATH=$PATH:$FLINK_HOME/bin
        • 启动集群
          登录 master 节点执行:
          /SoftWare/flink-1.10.0/bin/start-cluster.sh
        • 访问8081端口检查是否启动成功
      • 可能遇到的问题
        • 端口被占用,需要手动杀掉占用端口的程序;
        • 目录找不到或者文件找不到,在 flink-conf.yaml 中配置过 io.tmp.dirs ,这个目录需要手动创建。
    • On Yarn 模式和 HA 配置Flink 集群安装部署和 HA 配置
      • 在 Flink on Yarn 模式中也是借助 Yarn 的资源管理优势
        需要在三个节点中配置 YARN_CONF_DIR、HADOOP_CONF_DIR、HADOOP_CONF_PATH 中的任意一个环境变量即可。
      • 基于独立的 ZooKeeper 集群配置高可用 HA集群过程
        • 环境准备
          • ZooKeeper-3.x
          • Flink-1.10.0
          • Hadoop-2.6.5
          • 5台虚拟机
        • 添加环境变量
          vi /etc/profile
          # 添加环境变量
          export HADOOP_CONF_DIR=/Software/hadoop-2.6.5/etc/hadoop
          # 环境变量生效
          source /etc/profile​
        • 修改 conf 目录下的 flink-conf.yaml:Flink 集群安装部署和 HA 配置
          high-availability: zookeeper
          high-availability.storageDir: hdfs://cluster/flinkha/
          high-availability.zookeeper.quorum: slave01:2181,slave02:2181,slave03:2181
        • 修改 conf 目录下的 master 和 slave 文件
          vim master,将内容修改为:
          master01:8081
          master02:8081
          vim slave,将内容修改为:
          slave01
          slave02
          slave03
          vim zoo.cfg,将内容修改为:
          server.1=slave01:2888:3888
          server.2=slave02:2888:3888
          server.3=slave03:2888:3888
        • 将整个修改好的 Flink 解压目录使用 scp 远程拷贝命令发送到从节点
          scp -r /SoftWare/flink-1.10.0 slave01:/SoftWare/
          scp -r /SoftWare/flink-1.10.0 slave02:/SoftWare/
          scp -r /SoftWare/flink-1.10.0 slave03:/SoftWare/
        • 分别启动 Hadoop 和 ZooKeeper,然后启动集群
          在master节点,使用命令:
          /SoftWare/flink-1.10.0/bin/start-cluster.sh
        • 访问8081端口检查是否启动成功
      • Flink on yarn 模式下,启动集群的方式
        • 直接在 yarn 上运行任务
          相当于将 job 直接提交到 yarn 上,每个任务会根据用户的指定进行资源申请,任务之间互不影响。
          ./bin/flink run -yjm 1024m -ytm 4096m -ys 2 ./examples/batch/WordCount.jar
        • yarn session 模式
          需要先启动一个 yarn-session 会话,相当于启动了一个 yarn 任务,这个任务所占用的资源不会变化,并且一直运行。我们在使用 flink run 向这个 session 任务提交作业时,如果 session 的资源不足,那么任务会等待,直到其他资源释放。当这个 yarn-session 被杀死时,所有任务都会停止。

          例如我们启动一个 yarn session 任务,该任务拥有 8G 内存、32 个槽位。
          ./bin/yarn-session.sh -tm 8192 -s 32
          我们在 yarn 的界面上可以看到这个任务的 ID,然后向这个 session ID 提交 Flink 任务:
          ./bin/flink run -m yarn-cluster -yid application_xxxx ./examples/batch/WordCount.jar
          其中,application_xxxx 即为上述的 yarn session 任务 ID。
          ​​
  •