Flink 从 0 到 1 学习 —— 第三章 Flink 部署

1. Standalone 模式

1.1 安装

解压缩 flink-1.10.1-bin-scala_2.12.tgz,修改名称为 flink,进入conf目录中。

  1. 修改flink/conf/flink-conf.yaml文件

    jobmanager.rpc.address: hadoop102
    
  2. 修改 flink/conf/slaves文件

    hadoop103
    hadoop103
    hadoop104
    
  3. 分发给另外两台机器

    $ scp -r flink dwjf321@hadoop103:`pwd`
    $ scp -r flink dwjf321@hadoop104:`pwd`
    
  4. 启动

    ./start-cluster.sh
    

    访问 http://hadoop102:8081 可以对 flink 集群和任务进行监控管理。

2. YARN 模式

以 Yarn 模式部署 Flink 任务时,要求 Flink 是有 Hadoop 支持的版本,Hadoop 环境需要保证版本在 2.2 以上,并且集群中安装有 HDFS 服务。

2.1 Flink On Yarn

Flink 提供了两种在 yarn 上运行的模式,分别为 Session-ClusterPer-Job-Cluster模式。

  1. Session-Cluster

    在这里插入图片描述

    Session-Cluster 模式需要先启动集群,然后再提交作业,接着会向 yarn 申请一块空间后,资源永远保持不变。如果资源满了,下一个作业就无法提交,只能等到 yarn 中的其中一个作业执行完成后,释放了资源,下个作业才会正常提交。所有作业共享 Dispatcher 和 ResourceManager;共享资源;适合规模小执行时间短的作业。

    在 yarn 中初始化一个 flink 集群,开辟指定的资源,以后提交任务都向这里提交。这个 flink 集群会常驻在 yarn 集群中,除非手工停止。

  2. Per-Job-Cluster

    在这里插入图片描述

    一个 Job 会对应一个集群,每提交一个作业会根据自身的情况,都会单独向 yarn 申请资源,直到作业执行完成,一个作业的失败与否并不会影响下一个作业的正常提交和运行。独享 Dispatcher 和 ResourceManager,按需接受资源申请;适合规模大长时间运行的作业。

    每次提交都会创建一个新的 flink 集群,任务之间互相独立,互不影响,方便管理。任务执行完成之后创建的集群也会消失。

3. Session Cluster

  1. 启动 hadoop 集群 (略)

  2. 设置环境变量

    export HADOOP_CLASSPATH=`hadoop classpath`
    
  3. 启动 yarn-session

    $ ./yarn-session.sh -n 2 -s 2 -jm 1024 -tm 1024 - nm test -d
    

    启动参数:

    -D <arg>                        动态配置,如:yarn.reallocate-failed
    -d,--detached                   任务后台运行
    -jm,--jobManagerMemory <arg>    1024 表示jobmanager 1024M内存
    -tm,--taskManagerMemory <arg>   1024表示taskmanager 1024M内存
    -nm,--name                      YARN上为一个自定义的应用设置一个名字
    -q,--query                      显示yarn中可用的资源 (内存, cpu核数)
    -qu,--queue <arg>               指定YARN队列
    -s,--slots <arg>                指定每一个taskmanager分配多少个slots(处理进程)。建议设置为每个机器的CPU核数。一般情况下,vcore的数量等于处理的slot(-s)的数量
    -z,--zookeeperNamespace <arg>   针对HA模式在zookeeper上创建NameSpace
    
  4. 执行任务

    $ bin/flink run -c com.flink.wc.StreamWordCount WordCount-1.0-SNAPSHOT-jar-with-dependencies.jar --host hadoop102 –-port 7777
    
  5. 取消 yarn-session

    yarn application --kill [任务ID]
    

4. Per-Job Cluster

  1. 启动 hadoop 集群 (略)

  2. 设置环境变量

    export HADOOP_CLASSPATH=`hadoop classpath`
    
  3. 不启动 yarn-session,直接启动任务

    $ bin/flink run -m yarn-cluster --yarnslots 3 -p 2 -yjm 1024m -ytm 1024m -c com.flink.wc.StreamWordCount WordCount-1.0-SNAPSHOT-jar-with-dependencies.jar --host hadoop102 –-port 7777 --output hdfs:///opt/module/flink/stream.log
    

    启动参数:

    -c,--class <classname> 			如果没有在jar包中指定入口类,则需要在这里通过这个参数指定 
    -m,--jobmanager <host:port> 	指定需要连接的jobmanager(主节点)地址,使用这个参数可以指定一个不同于配置文件中的jobmanager 
    -p,--parallelism <parallelism> 	指定程序的并行度。可以覆盖配置文件中的默认值
    -yn 							taskmanager个数
    -yjm  							jobmanager内存大小
    -ytm  							taskmanager内存大小
    -ys    							一个taskmanager的slot个数
    

5. flink on yarn 故障恢复

flink 的 yarn 客户端通过下面的配置参数来控制容器的故障恢复。这些参数可以在 conf/flink-conf.yaml 或者启动 yarn session 的时候通过 -D参数来指定。

  • yarn.reallocate-failed:这个参数控制了 Flink 是否应该重新分配失败的 taskmanager容器,默认是 true。
  • yarn.maximun-failed-containers:applicationMaster 可以接受的容器最大失败次数,达到这个参数就会认为 yarn session 失败。默认这个次数和初始化请求的 taskmanager 数量相等( -n 参数指定的)。
  • yarn.application-attempts:applicationMaster 重试的次数。如果这个值被设置为 1 (默认值就是1)。当 application master 失败的时候,yarn session 会失败。设置一个比较大的值的话,yarn 会尝试重启 applicationMaster。

猜你喜欢

转载自blog.csdn.net/dwjf321/article/details/109830227
今日推荐