介绍
YARN 上部署的过程是:客户端把 Flink 应用提交给 Yarn 的ResourceManager, Yarn 的 ResourceManager 会向 Yarn 的 NodeManager 申请容器。在这些容器上,Flink 会部署JobManager 和 TaskManager 的实例,从而启动集群。Flink 会根据运行在 JobManger 上的作业所需要的 Slot 数量动态分配TaskManager 资源。
集群部署模式分为
1.会话模式
2.单作业模式
3.应用模式
本文只介绍会话模式
1.相关准备和配置
在 Flink1.8.0 之前的版本,想要以 YARN 模式部署 Flink 任务时,需要 Flink 是有 Hadoop 支持的。从 Flink 1.8 版本开始,不再提供基于 Hadoop 编译的安装包,若需要Hadoop 的环境支持,需要自行在官网下载 Hadoop 相关版本的组件flink-shaded-hadoop-2-uber-2.7.5-10.0.jar, 并将该组件上传至 Flink 的 lib 目录下。在 Flink 1.11.0 版本之后,增加了很多重要新特性,其中就包括增加了对Hadoop3.0.0 以及更高版本Hadoop 的支持,不再提供flink-shaded-hadoop-*jar 包,而是通过配置环境变量完成与 YARN 集群的对接。
下载flink安装包:Downloads | Apache Flink
本文选中flink版本为flink-1.14.0-bin-scala_2.12.tgz
将flink-1.14.0-bin-scala_2.12.tgz上传到/opt/software下然后解压到
/opt/module下
tar -zxvf /opt/software/flink-1.14.0-bin-scala_2.12.tgz -C /opt/module
环境变量配置
vim /etc/profile
增加环境变量配置如下,这里必须保证设置了环境变量
HADOOP_CLASSPATH
:(一定要配)
hadoop
export HADOOP_HOME=/opt/module/hadoop-3.1.3
export PATH=$PATH:$PATH:$HADOOP_HOME/bin:$HADOOP_HOME/sbin
export HADOOP_CONF_DIR=${HADOOP_HOME}/etc/hadoop
export HADOOP_CLASSPATH=hadoop classpath
flink
export FLINK_HOME=/opt/module/flink-1.14.0
export PATH=$PATH:$FLINK_HOME/bin
修改完使用以下命令生效
source /etc/profile
flink配置修改
进入 conf 目录,修改 flink-conf.yaml 文件
cd $FLINK_HOME
vim conf/flink-conf.yaml
修改以下配置
jobmanager.memory.process.size: 1600m
taskmanager.memory.process.size: 1728m
taskmanager.numberOfTaskSlots: 1
parallelism.default: 1
参数意义如下
测试
会话模式执行(yarn session)
YARN 的会话模式与独立集群略有不同,需要首先申请一个 YARN 会话(YARN session) 来启动 Flink 集群。
启动集群
执行脚本命令向 YARN 集群申请资源,开启一个 YARN 会话,启动 Flink 集群。
[root@master sofatware]# start-cluster.sh
Starting cluster.
Starting standalonesession daemon on host master.
Starting taskexecutor daemon on host Slave1.
Starting taskexecutor daemon on host Slave2.yarn-session.sh -nm test
可用参数解读:
-d:分离模式,如果你不想让 Flink YARN 客户端一直前台运行,可以使用这个参数,即使关掉当前对话窗口,YARN session 也可以后台运行。
-jm(--jobManagerMemory):配置 JobManager 所需内存,默认单位 MB。
-nm(--name):配置在 YARN UI 界面上显示的任务名。
-qu(--queue):指定 YARN 队列名。
-tm(--taskManager):配置每个 TaskManager 所使用内存。
注意:Flink1.11.0 版本不再使用-n 参数和-s 参数分别指定 TaskManager 数量和 slot 数量, YARN 会按照需求动态分配TaskManager 和 slot。所以从这个意义上讲,YARN 的会话模式也不会把集群资源固定,同样是动态分配的。
YARN Session 启动之后会给出一个web UI 地址以及一个 YARN application ID,如下所示,用户可以通过web UI 或者命令行两种方式提交作业。
YARN Session 启动之后会给出一个web UI 地址以及一个 YARN application ID,如下所示,用户可以通过web UI 或者命令行两种方式提交作业。
提交任务
执行以下命令将该任务提交到已经开启的 Yarn-Session 中运行。
首先启动nc监听
nc -lk 7777
然后执行命令
flink run -c Test.Stream_Word_count_Two -p 2 ./FLINK_TEST-1.0.0.jar --port 7777 --host maste
通过 Flink 的 Web UI 页面查看提交任务的运行情况
测试 helloworld看拆分情况
版权归原作者 抽着烟吃鸡 所有, 如有侵权,请联系我们删除。