Flink学习笔记(2):Standalone集群部署

1. 部署说明

Flink 有三种部署模式,分别是 Local、Standalone Cluster 和 Yarn Cluster。对于 Local 模式来说,JobManager 和 TaskManager 共用一个 JVM,Local模式的部署请点击http://www.jianshu.com/p/26c9ef86fb19。如果要验证一个简单的应用,Local 模式是最方便的。实际应用中大多使用 Standalone 或者 Yarn Cluster。

Flink是Master/Slave架构,充当Master角色的是JobManager,充当Slave角色是SlaveTaskManager。和所有Master/Slave架构的集群一样,JobManager也存在单点故障的问题;Flink也提供了Master HA的方案,是由Zookeeper支撑的;本次部署暂不考虑HA的情况,仅仅达到了集群运行起来的目标。

2. 部署要求

  • 机器三台,IP是192.168.1.90—92,主机名分别是vm1、vm2、vm3。

  • Linux操作系统,本次使用Centos 7.1。

  • JDK1.7或者更高版本,本次使用JDK 1.8,并配置环境变量。

      [root@vm1 ~]# vi /etc/profile
      #在文件的末尾配置JAVA_HOME和Path
      export JAVA_HOME=/opt/jdk
      export PATH=$PATH:$JAVA_HOME/bin
    
      [root@vm1 ~]# source /etc/profile
    
  • 设置ssh免登录

    • 生成ssh密码的命令,-t 参数表示生成算法,有rsa和dsa两种;-P表示使用的密码,这里使用“”空字符串表示无密码。直接回车。

        [root@vm1 ~]# ssh-keygen -t rsa -P ""
      
    • 将生成的密钥写入authorized_keys文件。

        [root@vm1 ~]# cat .ssh/id_rsa.pub >>.ssh/authorized_keys
      
    • 将.ssh目录拷贝到其它主机相同目录下。

        [root@vm1 ~]# scp -r ~/.ssh [email protected]:~/
        [root@vm1 ~]# scp -r ~/.ssh [email protected]:~/
      

3. 部署过程

3.1 部署Flink

把Flink的压缩包解压到/opt目录下,即Flink的Home路径是/opt/flink-1.1.2,保持各台机器上flink目录一致。

3.2 Flink参数设置

Flink的配置文件路径是/opt/flink-1.1.2/conf,目录下的文件包括

  • flink-conf.yaml #flink的主配置文件
  • log4j-cli.properties
  • log4j.properties
  • log4j-yarn-session.properties
  • logback.xml
  • logback-yarn.xml
  • masters # master(jobmanager)配置文件
  • slaves # slave(taskmanager)配置文件
  • zoo.cfg # Zookeeper配置文件

本次部署,修改了vm1上的flink-conf.yaml、mastes和slaves,并在修改完成后拷贝到了vm2和vm3上。

3.2.1 flink-conf.yaml的修改

文件路径是/opt/flink-1.1.2/conf/flink-conf.yaml,主要关注以下参数,具体的含义见注释。还有更多的参数配置,例如前端页面的配置、文件存储的配置(支持HDFS)、HA的配置等,更多配置说明参考:Flink官方配置说明。

# Master的主机名或者ip
jobmanager.rpc.address: vm1

# JobManager监听端口
jobmanager.rpc.port: 6123

# JobManager的内存参数
jobmanager.heap.mb: 512

# 每台taskmanager可用的总内存
taskmanager.heap.mb: 8192

# 每台taskmanager可用的solt数目,一般设置成CPU的core数
taskmanager.numberOfTaskSlots: 2

# NumTaskManagers(slave的个数) * NumSlotsPerTaskManager
parallelism.default: 4

# 酌情修改临时目录。/tmp中的数据重启就没了。
taskmanager.tmp.dirs: /tmp

3.2.1 masters的修改

在配置jobmanager(master)文件时,除了配置master的主机名(IP)之外,还需要指定 JobManager 的 UI 监听端口。

vm1:8081

3.2.1 slaves的修改

修改slaves文件,配置多个taskmanager(slave)。

vm2
vm3

3.3 集群启动和停止

3.3.1 启动集群

在master节点,即本例中的vm1节点上执行以下命令,启动集群。其过程就是先启动本机的jobmanager,然后ssh到各个slave节点上启动taskmanager。

[root@vm1 flink-1.1.2]# bin/start-cluster.sh

访问http://vm1:8081,可以看到有2个taskmanager,和4个slot。

Flink学习笔记(2):Standalone集群部署_第1张图片
Paste_Image.png

3.3.2 停止集群

在master节点,即本例中的vm1节点上执行以下命令,启动集群。其过程是先ssh到各个slave节点上停止taskmanager,再停止本机的jobmanager。

[root@vm1 flink-1.1.2]# bin/stop-cluster.sh

3.3.3 启停集群中的一个节点

如果想要启动或者停止机器中的节点,不论是jobmanager或者taskmanager,都可以在对应的主机上执行以下命令。

# 启动本机的jobmanager
bin/jobmanager.sh start
# 启动本机的taskmanager
bin/taskmanager.sh start

# 停止本机的taskmanager
bin/taskmanager.sh stop
# jobmanager
bin/jobmanager.sh stop

https://ci.apache.org/projects/flink/flink-docs-release-1.1/quickstart/setup_quickstart.html#cluster-setup
https://ci.apache.org/projects/flink/flink-docs-release-1.1/setup/cluster_setup.html

(完)

你可能感兴趣的:(Flink学习笔记(2):Standalone集群部署)