概要描述
在一些场景中使用开源Flink执行相关流处理任务,需要将Flink任务提交至Yarn上。此KB将指导能够在TDH开启安全的提交Flink ON Yarn的Session。
此KB案例采用Flink版本为Flink 1.11.1,TDH版本为TDH 6.2.2(开启guardian安全)
详细说明
1、部署TDH-Client
在需要在提交Flink程序的机器上提前完成TDH-Clinet的部署,可以参考KB-准备TDH客户端环境
2、准备Flink客户端
在Flink官方渠道中可以下载符合代码需求的Flink版本,如本 KB中使用的flink-1.11.1-bin-scala_2.11.tgz 。
将flink-1.11.1-bin-scala_2.11.tgz上传至机器上并解压。
tar -zxvf flink-1.17.2-bin-scala_2.12.tgz
3、 修改Flink配置文件
1、添加 jaas.conf 文件
cp /etc/yarn1/conf/jaas.conf flink-1.11.2/conf/
2、修改 flink-conf.yaml
vi flink-1.11.2/conf/flink-conf.yaml
添加如下内容:
env.java.home: /usr/java/jdk1.8.0_25/
#由于TDH6.2.2默认java版本为jdk1.7,需要手动指定On yarn运行时的jdk版本为1.8
containerized.master.env.JAVA_HOME: /usr/java/jdk1.8.0_25/
containerized.taskmanager.env.JAVA_HOME: /usr/java/jdk1.8.0_25/
java.security.auth.login.config: /home/flink-1.11.2/conf/jaas.conf
security.kerberos.login.use-ticket-cache: true
security.kerberos.login.keytab: /etc/yarn1/conf/yarn.keytab
security.kerberos.login.principal: yarn/test01@TDH
security.kerberos.login.contexts: Client
classloader.check-leaked-classloader: false
5、提交yarn-session
执行命令运行Flink On Yarn:
source /root/TDH-Client/init.sh y y
export HADOOP_CLASSPATH=hadoop classpath
export HADOOP_CONF_DIR=/etc/yarn1/conf/
./flink-1.11.2/bin/yarn-session.sh -d
如果运行成功会打印:
JobManager Web Interface: http://ts-cloudyi06:42781
2021-11-18 11:21:50,394 INFO org.apache.flink.yarn.cli.FlinkYarnSessionCli [] - The Flink YARN session cluster has been started in detached mode. In order to stop Flink gracefully, use the following command:
$ echo "stop" | ./bin/yarn-session.sh -id application_1637139361677_0012
If this should not be possible, then you can also kill Flink via YARN's web interface or via:
$ yarn application -kill application_1637139361677_0012
Note that killing Flink might not clean up all job artifacts and temporary files.
在浏览器中打开yarn管理页面可以看到flink-session应用Running。
在浏览器中访问控制台打印的连接 http://ts-cloudyi06:42781 或者yarn界面上的Tracking UI链接都可以访问Flink的管理界面。
其他信息
本KB仅如何运行FlinkOnYarn的基本操作,如果需要运行JOB需要自行构建Flinkdemo程序,更多关于Flink用法参见:Flink社区官方文档
建议您构建FlinkDemo程序时使用jdk1.8.25版本,否则可能会出现报错:
aused by: java.lang.Error: Failed to find GC Cleaner among available providers: [Legacy (before Java 9) cleaner provider, New Java 9+ cleaner provider]