如何将Flink作业提交到远程YARN群集?

时间:2016-08-14 14:17:01

标签: hadoop yarn apache-flink ambari

我使用Apache Ambari在4节点上安装了Apache Hadoop。我用Apache Flink写了一篇简单的工作。我想将这份工作提交给我的YARN集群。但是Flink需要在本地机器上的YARN配置文件(core-site.xml,yarn-site.xml等)。所以,如果我没有误解,有两种方式

  1. 在ResourceManager节点上启动flink作业(以查找配置文件)
  2. 将资源管理器中的配置文件下载到本地。
  3. 我认为,这两种方式并不是很好。如何将作业提交到远程YARN群集。有没有合适的方式?

2 个答案:

答案 0 :(得分:1)

在Hadoop / YARN世界中,您始终需要客户端计算机上的配置文件。所以,你需要在本地获取它们。但是,您通常需要其中一些而不是全部。在大多数情况下,如果我没有弄错的话,应该有足够的hdfs-site.xml,core-site.xml和yarn-site.xml。为了安全起见,请将它们全部复制到本地目录中。

然后在机器上的flink-conf.yaml文件中配置以下参数,该文件将扮演客户端的角色。你将从那里开始你的工作。

fs.hdfs.hadoopconf: path_to_hadoop_conf_dir

然后你应该能够通过告诉flink工具使用纱线大师作为工作经理来启动YARN工作。

flink run -m yarn-cluster -yn <num_task_managers> -yjm <job_manager_memory> -ytm <task_manager_memory -c <main_class> <jar>

如果您在flink-conf.yaml中配置了上述内存参数,则应该可以通过省略所有那些详细参数来启动具有默认值的作业

flink run -m yarn-cluster -n <num_task_managers> -c <main_class> <jar>

作为快速测试,您可以尝试在YARN上启动Scala shell。

start-scala-shell.sh yarn -n <num_task_managers> -nm test_job

答案 1 :(得分:0)

我认为这更像是一个关于启动你的YARN客户端的问题Flink碰巧比Flink本身。

我对Flink知之甚少,但鉴于我对YARN上的Spark的了解,我可以说你只能做2,即将配置文件下载到你将用来启动你的Flink应用程序的机器上。您还可以使用YARN群集中的边缘计算机作为从中部署应用程序的计算机。

同样,我认为这是关于如何向YARN进行应用程序部署的问题。