flink-on-yarn解读
相关参考资料: https://blog.csdn.net/wangweislk/article/details/79081769 【好文欣赏】
flink on yarn 有两种使用方式:
方式一:
在安装和flink相关包的机器上执行如下命令 (此处已经配置好flink环境变量):
第一步:1.使用yarn-session启动相应的容器资源,初始化一个flink集群
HADOOP_HOME=/hadoop/hadoop-2.7.2/
HADOOP_CONF_DIR=/hadoop/hadoop-2.7.2/etc/hadoop/
yarn-session.sh -nm "Flink test2" -n 9 -jm 8192 -tm 8192 -s 8
这条命令表示,我通过yarn资源管理给flink申请了相应的资源,一共是9个taskManager,每个taskManager有8G,每个taskManager有8 个线程(一般小于服务器中的线程数量【没有超线程的话就是cpu的核心core的数量】);-nm表示申请的flink集群资源的名称,在yarn-web ui上可见。
第二步:
提交flink任务到yarn集群中,有两种方式:web ui提交和命令行提交。
(1)使用yarn界面flink web ui界面直接提交flink任务
在初始化好的yarn资源容器中,如图,点击如上(主要我使用的flink是1.6.0版本的,之前使用的1.4.2的版本不支持web ui提交).
(2)或者使用命令行
###其中的 -p 72 则表示9个taskManager,用完其中每个8个core(线程),一共使用完成72个core
###注意:设置的并发度不能大于你定义的逻辑分区的个数,否则导致cpu资源core浪费
###例如:你使用partitionByHash进行分区,一共50个分区,自己却使用72个core处理,导致还有22个core处于无任务可做的闲置状态。
./flink run -m jobmanagerIP:Port -p 72 -c xxx.xxx.xx.WorldCountMain /home/myFlinlkCount.jar
注意事项:
HADOOP_HOME=/hadoop/hadoop-2.7.2/
HADOOP_CONF_DIR=/hadoop/hadoop-2.7.2/etc/hadoop/
此处,需要配置好相应的环境变量,如果没有配置相应的环境变量,需要在执行yarn-session中声明相应的环境变量,否则导致flink读取hadoop中yarn配置信息、hdfs配置文件信息失败。
方式二:
使用flink自带命令,提交任务到相应的yarn-flink集群环境
./flink run
-m yarn-cluster
-yn 9
-c myflink.main.BargeMain_v2
./BargeStatistic-1.0-SNAPSHOT-jar-with-dependencies.jar
以上命令表示:提交相应的flink 批处理程序到集群中,并重新指定相应的app需要的资源(此处有9 个taskManager)。
其中也是可以 添加如下参数:
-p,--parallelism <parallelism>
## 可以指定app程序的并行度,此处指定时候,可以覆盖掉配置文件中的默认值
具体的并发度参考如下:
设置并发度根据如上重新设置并发度即可