将Spark作业提交到Spark集群

3
我是一个完全的Spark新手,刚开始探索更多相关知识。我选择了更长的路径,没有使用任何CDH发行版安装hadoop,而是从Apache网站安装,并设置配置文件以更好地理解基础知识。
我已经设置了一个3节点集群(所有节点都是从ESX服务器创建的虚拟机)。我通过使用zookeeper机制为NameNode和ResourceManager设置了高可用性。所有三个节点也作为DataNode在使用。
以下守护进程正在所有三个节点上运行。
Daemon in Namenode 1          Daemon In Namenode 2       Daemon in Datanode         
8724 QuorumPeerMain           22896 QuorumPeerMain       7379 DataNode   
13652 Jps                     23780 ResourceManager      7299 JournalNode
9045 DFSZKFailoverController  23220 DataNode             7556 NodeManager
9175 DataNode                 23141 NameNode             7246 QuorumPeerMain
9447 NodeManager              27034 Jps                  9705 Jps
8922 NameNode                 23595 NodeManager
8811 JournalNode              22955 JournalNode
9324 ResourceManager          23055 DFSZKFailoverController

我已经在NameNode 1&2中为NN和RM设置了HA。这些节点的硬件配置非常低(每个节点只有4GB RAM和20GB磁盘空间),但这只是为测试目的,我想这没问题。
我在NameNode 1中安装了Spark(与我安装的Hadoop 2.7兼容的版本)。我能够在本地启动Spark-shell并执行基本的scala命令创建RDD并对其执行一些操作。我还测试运行了以Yarn-Cluster和Yarn-Client部署模式作为示例的SparkPi,所有功能都很好。
现在我的问题是,在实时场景中,我们将在本地机器上编写(Java、Scala或Py)代码(而不是形成Hadoop集群的节点)。假设我有另一台机器在与我的HA集群相同的网络中。我该如何从主机不在HA中向Yarn RM提交我的作业(比如我想尝试提交SparkPi)?我应该怎么做?
我认为,在我编写代码的机器上必须安装SPARK(我的假设是否正确),而且HA集群中不需要安装任何Spark。我还希望将提交的作业输出返回到发起提交的主机。我不知道需要做什么才能使这个工作。
我听说过Spark JobServer,这是我需要启动它所有的东西吗?我相信你们可以解决我的困惑。我只是找不到任何明确指定步骤以完成此操作的文档。我可以从基于Windows的机器提交作业到在Unix环境中设置的HA群集吗?
2个回答

0

你能确认一下我需要在客户端机器上安装这个还是在Hadoop集群中安装吗?另外,如果我没记错的话,Spark只需要在客户端机器上安装。 - Ashesh Nair
是的,必须在要运行Spark JobServer的机器上安装Spark,但是除非存在强制网络限制,否则不需要将SJS运行在集群中。 - noorul
你有没有参考网站可以解释如何从远程机器向Yarn集群提交Spark作业。我发现的大多数文章都使用本地主机(将作业提交到独立服务器)。 - Ashesh Nair
不,我没有使用yarn。这里有关于EMR和SJS的文档:https://github.com/spark-jobserver/spark-jobserver/blob/master/doc/EMR.md 这可能对你有用。Yarn客户端文档在这里:https://github.com/spark-jobserver/spark-jobserver/blob/master/doc/yarn.md - noorul

0
为了向集群提交Spark作业,您的机器必须成为“网关节点”。这基本上意味着您在该机器上安装了Hadoop二进制文件/库/配置,但没有Hadoop守护程序在其上运行。
设置完成后,您应该能够从该机器运行hdfs命令来访问您的集群(例如hdfs dfs -ls /),将yarn应用程序提交到集群(yarn jar /opt/cloudera/parcels/CDH/jars/hadoop-examples.jar pi 3 100)。
在此步骤之后,您可以在网关机器上安装Spark并开始提交Spark作业。如果您要使用Spark-on-yarn,则只需要在此机器上安装Spark。
您(您的代码)负责获取作业的输出。您可以选择将结果保存在HDFS中(最常见的选择),将其打印到控制台等。Spark的历史服务器是用于调试目的。

感谢您的输入。为了澄清,您所指的“网关节点”机器是指开发人员编写应用程序代码并将其提交到Yarn-Cluster的机器。每台这样的机器必须安装有Hadoop(但不是必需的)以启动所有守护进程。而在我的情况下,“网关机器”指的是Namenode 1,在该集群中我已经安装了SPARK。 - Ashesh Nair
正确。网关机器是开发人员提交作业的机器。这些机器中的每一个都必须安装有Hadoop,但不会运行任何Hadoop守护进程。 - facha
那么这个过程跳过了使用Spark-Job Server的需要吗? - Ashesh Nair
Spark-Job Server是什么意思?它是Spark History Server吗?Spark History Server是一个Web服务器,允许您浏览过去执行的作业信息。如果您不需要它,就没有必要安装它。 - facha

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接