在EMR集群外运行Spark Client并连接到YARN

时间:2016-12-06 17:54:05

标签: apache-spark yarn amazon-emr

我有以下情况:

  1. 我在一家大公司工作。
  2. 我们有一个在YARN上运行Spark / Hadoop堆栈的EMR集群。
  3. 我可以通过SSH连接到集群的主节点,从那里,我可以创建Spark shell或spark-submit作业到Spark集群,没有任何问题。
  4. 但是,我想在我公司的服务器上运行Spark客户端,因为我们所有的代码库都在那里,因此我能够在该服务器上进行主动开发,因为我可以克隆并推送到位于该存储库的存储库在我公司的服务器上。我不想将所有公司代码转移到AWS的主节点来进行主动开发。
  5. 那么,如何修改Spark设置以使用AWS的YARN作为资源管理器?
  6. 我尝试将Spark安装(在/user/lib/spark)和HADOOP_CONF_DIR(在/etc/hadoop/conf中)从EMR群集的主节点复制到我公司的服务器,但Spark无法识别YARN。
  7. 感谢。

    编辑:将“驱动程序”更改为主题行和正文中的“客户”。

1 个答案:

答案 0 :(得分:1)

这可以在独立模式下进行,但不能在纱线模式下进行。

当在纱线模式下运行火花时,它无法控制执行者,AM和司机将坐在哪里。

Yarn检查每个任务节点上的内存使用情况和数据可用性,并将这些组件旋转到理想的位置。

因此,即使您设法将外部节点添加到纱线(显然可以这样做),只需设置正确的配置并在yarn的资源管理器上运行admin refresh。 但是,还有,你无法确定你的火花司机将在哪里运行。

<强>更新 这样做是完全可能的。以下是您需要做的事情。

  1. 设置livy服务器。这是一个基于休息的Spark通信服务器,可与yarn进行通信。如果您有像cloudera或HDP这样的发行版,那么只需点击UI上的某些按钮即可。
  2. 设置GUI,如Zappelin或Apache Hue,并正确配置以与livy服务器通信。
  3. Livy服务器将在本地系统或外部节点可以与之通信的开放端口上的AWS中。 Hue或Zappelin可以在您的外部节点上。