参考地址:https://blog.youkuaiyun.com/NDF923/article/details/135599822
1、解压(这里采用的参考文档的1.14.5版本,本人测试过1.17.0版本的flink,版本和cdh当前的cdh涉及的组件不匹配,除参考文章的scala,zookeeper版本也不匹配)
cd /softwaretar -zxvf flink-1.14.5-bin-scala_2.11.tgz
#修改名称
mv software/flink-1.14.5 /data/flink-yarn
3、修改flink配置
vim conf/flink-conf.yaml#配置java环境变量
env.java.home: /usr/java/jdk1.8.0_181-cloudera/
#以下为高可用配置
yarn.application-attempts: 3
high-availability: zookeeper
high-availability.storageDir: hdfs://cm1:8020/flink1_14/yarn/ha
high-availability.zookeeper.quorum: cm1:2181,cm2:2181,cm3:2181
high-availability.zookeeper.path.root: /flink1_14
high-availability.cluster-id: /cluster_flink1_14_yarn
4、修改操作用户
vim bin/yarn-session.sh#操作hdfs的用户
export HADOOP_USER_NAME=hdfs
vim bin/flink
#操作hdfs的用户
export HADOOP_USER_NAME=hdfs
5、分发到其它节点
将配置好的flink分发到其它两个节点(我的集群是三个节点)scp -r flink-yarn cm2:/data/
scp -r flink-yarn cm3:/data/
6、配置全局环境变量
想要让 Flink 服务运行与 YARN 之上,首先需要让 Flink 能够发现 YARN 和 HDFS 的相关配置,因此,需要通过HADOOP_CLASSPATH、HADOOP_CONF_DIR 属性来指定 Hadoop 配置文件所在目录;因此需要在各个节点配置这两个属性的去全局变量。
vim /etc/profile
#添加如下两行
export HADOOP_CLASSPATH=`hadoop classpath`
export HADOOP_CONF_DIR=/etc/hadoop/conf.cloudera.yarn/
#刷新
source /etc/profile
7、运行任务(由于第4步已经在flink中设置了用户名hdfs,后续提交到yarn上显示的用户也是hdfs)
./flink run-application -t yarn-application -c com.atguigu.wc.WordCountUnBoundedDemo /opt/myjar/flink-1.0-SNAPSHOT.jar