> 文章列表 > flink集群使用yarn per-job提交jar任务

flink集群使用yarn per-job提交jar任务

flink集群使用yarn per-job提交jar任务

需求

把flink的资源调度管理交给专业的框架yarn框架去做!

怎么做?

  1. 搭建好hadoop集群,启动hdfs集群和yarn集群

  1. 安装好flink集群

  1. 进入flink集群下面,用per-job的方式启动

 bin/flink  run -m yarn-cluster -yn 2 -yjm 1024 -ytm 1024 /home/bigdata/server/jar/productDownLine-1.0-SNAPSHOT.jar
flink集群使用yarn per-job提交jar任务

出了一个错误java.lang.IllegalStateException: No Executor found. Please make sure to export the HADOOP_CLASSPATH environment variable or have hadoop in your classpath. For more information refer to the "Deployment" section of the official Apache Flink documentation.

百度以后的解决方案是

link 1.11开始官方不再维护flink-shaded-hadoop-2-uber jar,可以使用之前版本的shade,社区建议导入hadoop classpath,执行这行代码,不需要改任何东西

执行这个命令 export HADOOP_CLASSPATH=`hadoop classpath`

flink集群使用yarn per-job提交jar任务

解决这个问题以后,继续启动刚才的命令

还是报错,但是报的是另一种错误

flink集群使用yarn per-job提交jar任务

这个错误的原因是没有指定入口类的地址,如org.example.job.T4301MesDownline

flink集群使用yarn per-job提交jar任务

bin/flink run -t yarn-per-job -c org.example.job.T4301MesDownline /home/bigdata/server/jar/productDownLine-1.0-SNAPSHOT.jar

flink集群使用yarn per-job提交jar任务

启动成功不报错!我们看看页面的情况吧

flink集群使用yarn per-job提交jar任务

查看yarn集群正在运行的任务有哪些?

yarn application -list
flink集群使用yarn per-job提交jar任务

杀掉正在进行的任务

yarn application -kill a_id

flink集群使用yarn per-job提交jar任务

有一个疑问,当我把flink任务提交给yarn集群进行资源调度管理的时候,

  1. 为什么flink集群里面没有任何任务显示?

因为此时用的是hadoop的yarn的集群,而不是自带的集群!!

  1. Tracking UI根本点不开?为什么?

flink集群使用yarn per-job提交jar任务

无法访问含有host主机名的任何链接,但是把主机名改成ip就可以了!!

浏览器的主机没有设置host与ip识别

flink集群使用yarn per-job提交jar任务

设置hosts文件可以修改权限

然后添加集群的ip与hostname进去,保存退出

flink集群使用yarn per-job提交jar任务

现在可以正常访问了

flink集群使用yarn per-job提交jar任务