2016-12-06 167 views
2

我有以下情形:运行EMR集群外星火客户端和连接到YARN

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

谢谢。

修改:在主题行和正文中将'driver'更改为'client'。

回答

1

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

当在纱线模式下运行火花时,它无法控制执行器,AM和驾驶员将坐在哪里。

Yarn会检查每个任务节点上的内存使用情况以及数据可用性,并将这些组件计算为理想状态。

因此,即使您设法将外部节点添加到纱线(您可以明显地做到这一点),只需设置适当的配置并在纱线的资源管理器上运行管理员刷新即可。 但是,也不能确保,你的火花驱动程序将在哪里运行。

更新 完全可以这样做。这是你需要做的事情。

  1. 安装livy服务器。这是一个基于休息的Spark通信服务器,与纱线进行交谈。如果你有像cloudera或HDP这样的发行版,只需点击UI上的一些按钮即可。
  2. 安装GUI像Zappelin或Apache Hue,并正确配置它与livy服务器进行通信。

Livy服务器将在您的本地系统或外部节点可以与之通话的开放端口上处于AWS状态。 Hue或Zappelin可以在你的外部节点上。