Flink学习笔记(2) -- Flink部署和解析

1、Flink Local模式部署

Ⅰ、依赖环境:

  linux机器

  jdk1.8及以上【配置JAVA_HOME环境变量】

Ⅱ、下载地址

  https://mirrors.tuna.tsinghua.edu.cn/apache/flink/flink-1.6.1/flink-1.6.1-bin-hadoop27-scala_2.11.tgz

Ⅲ、local模式快速安装启动

  (1)解压:tar -zxvf flink-1.6.1-bin-hadoop27-scala_2.11.tgz

  (2)cd flink-1.6.1

  (3)启动:./bin/start-cluster.sh

  (4)停止:./bin/stop-cluster.sh

  (5)访问web界面

    http://hostname:8081

2、Flink StandAlone模式部署和解析

Ⅰ、依赖环境

  jdk1.8及以上【配置JAVA_HOME环境变量】

  ssh免密码登录【集群内节点之间免密登录】

Ⅱ、集群规划:

  master(JobManager)+slave/worker(TaskManager)

  hadoop100(master)    hadoop101(slave)    hadoop102(slave)

Flink学习笔记(2) -- Flink部署和解析

Ⅲ、集群安装

  1:修改conf/flink-conf.yaml

    jobmanager.rpc.address: hadoop100

  2:修改conf/slaves

    hadoop101

    hadoop102

  3:拷贝到其他节点

    scp -rq /usr/local/flink-1.6.1 hadoop101:/usr/local

    scp -rq /usr/local/flink-1.6.1 hadoop102:/usr/local

  4:在hadoop100(master)节点启动

    bin/start-cluster.sh

  5:访问http://hadoop100:8081

Ⅳ、Flink配置文件重要参数解析

  jobmanager.heap.mb:jobmanager节点可用的内存大小

  taskmanager.heap.mb:taskmanager节点可用的内存大小

  taskmanager.numberOfTaskSlots:每台机器可用的cpu数量

  parallelism.default:默认情况下任务的并行度

  taskmanager.tmp.dirs:taskmanager的临时数据存储目录

Ⅴ、slot和parallelism总结

  1.slot是静态的概念,是指taskmanager具有的并发执行能力

  2.parallelism是动态的概念,是指程序运行时实际使用的并发能力

  3.设置合适的parallelism能提高运算效率,太多了和太少了都不行

Ⅵ、集群节点重启和扩容

  启动jobmanager

    如果集群中的jobmanager进程挂了,执行下面命令启动。

    bin/jobmanager.sh start

    bin/jobmanager.sh stop

  启动taskmanager

    添加新的taskmanager节点或者重启taskmanager节点

    bin/taskmanager.sh start

    bin/taskmanager.sh stop

Ⅶ、Flink standalone集群中job的容错

  jobmanager挂掉

    正在执行的任务会失败

    存在单点故障,(Flink支持HA)

  taskmanager挂掉

    如果有多余的taskmanager节点,flink会自动把任务调度到其它节点执行

3、Flink on Yarn模式部署和解析

Ⅰ、依赖环境

  至少hadoop2.2

  hdfs & yarn

Ⅱ、Flink on Yarn 的两种使用方式

Flink学习笔记(2) -- Flink部署和解析

Flink on Yarn的两种运行方式:

  第一种【yarn-session.sh(开辟资源)+flink run(提交任务)】

    启动一个一直运行的flink集群

    ./bin/yarn-session.sh -n 2 -jm 1024 -tm 1024 [-d]

    附着到一个已存在的flink yarn session

    ./bin/yarn-session.sh -id application_1463870264508_0029

    执行任务

    ./bin/flink run ./examples/batch/WordCount.jar -input hdfs://hadoop100:9000/LICENSE -output
    hdfs://hadoop100:9000/wordcount-result.txt

    停止任务 【web界面或者命令行执行cancel命令】

  第二种【flink run -m yarn-cluster(开辟资源+提交任务)】

    启动集群,执行任务

    ./bin/flink run -m yarn-cluster -yn 2 -yjm 1024 -ytm 1024 ./examples/batch/WordCount.jar

    注意:client端必须要设置YARN_CONF_DIR或者HADOOP_CONF_DIR或者HADOOP_HOME环境变量,通过这个环境变量来读取YARN和HDFS的配置信息,否则启动会失败

./bin/yarn-session.sh 命令分析:

Flink学习笔记(2) -- Flink部署和解析

./bin/flink run 命令分析:

Flink学习笔记(2) -- Flink部署和解析

Ⅲ、Flink在Yarn上的分布:

  ResourceManager

  NodeManager

  AppMater(jobmanager和它运行在一个Container中)

  Container(taskmanager运行在上面)

Ⅳ、使用on-yarn的好处:

  提高集群机器的利用率

  一套集群,可以执行MR任务,spark任务,flink任务等…

Ⅴ、Flink on yarn内部实现:

Flink学习笔记(2) -- Flink部署和解析

4、Flink HA -- JobManager HA

  jobManager协调每个flink任务部署。它负责任务调度和资源管理。

  默认情况下,每个flink集群只有一个JobManager,这将导致一个单点故障(SPOF):如果JobManager挂了,则不能提交新的任务,并且运行中的程序也会失败。

  使用JobManager HA,集群可以从JobManager故障中恢复,从而避免SPOF(单点故障) 。 用户可以在standalone或 YARN集群 模式下,配置集群高可用。

Flink学习笔记(2) -- Flink部署和解析