3

我是 Spark 的新手,刚刚开始对此进行更多探索。我选择了更长的路径,不使用任何 CDH 发行版安装 hadoop,我已经从 Apache 网站安装了 Hadoop,并自己设置了配置文件以了解更多基础知识。

我已经设置了一个 3 节点集群(所有节点都是从 ESX 服务器创建的 VM 机器)。我已经使用 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。节点具有非常小的硬件配置(每个 4GM RAM 和 20GB 磁盘空间),但这些仅用于测试目的。所以我想没关系。

我已经在 NameNode 1 中安装了 Spark(与我安装的 Hadoop 2.7 兼容的版本)。我能够在本地启动 Spark-shell 并执行基本的 scala 命令来创建 RDD 并对其执行一些操作。我还设法以 Yarn-Cluster 和 Yarn-Client 部署模式测试运行 SparkPi 示例。一切都很好。

现在我的问题是,在实时场景中,我们将在我们的本地机器上编写基于(Java、scala 或 py)的代码(而不是在形成 Hadoop 集群的节点中)。假设我在与我的 HA 集群相同的网络中有另一台机器。如何将我的作业提交到 Yarn-Cluster(假设我想尝试提交 SparkPi)示例从不在 HA 中的主机到 Yarn RM,如何我这样做?

我相信,SPARK 必须安装在我正在编写代码的机器上(我的假设是否正确),并且 HA 集群中不需要安装 Spark。我还想将提交的作业的输出从提交的位置返回给主机。我不知道需要做什么才能完成这项工作。

我听说过Spark JobServer,这是我需要让这一切正常运行吗?我相信你们可以帮助我解决这个困惑。我只是找不到任何明确指定完成此操作的步骤的文件。我可以将作业从基于 Windows 的机器提交到我在 unix 环境中设置的 HA 集群吗?

4

2 回答 2

0

为了向集群提交 Spark 作业,您的机器必须成为“网关节点”。这基本上意味着您在该机器上安装了 hadoop 二进制文件/库/配置,但没有在其上运行 hadoop 守护进程。

设置完成后,您应该能够从该机器对您的集群运行 hdfs 命令(如 hdfs dfs -ls /),将纱线应用程序提交到集群(yarn jar /opt/cloudera/parcels/CDH/jars/hadoop -examples.jar pi 3 100)。

完成该步骤后,您可以在网关机器上安装 spark 并开始提交 spark 作业。如果你打算使用 Spark-on-yarn,这是唯一需要安装 spark 的机器。

你(你的代码)是负责获得工作输出的人。您可以选择将结果保存在 HDFS 中(最常见的选择),将其打印到控制台等... Spark 的历史服务器用于调试目的。

于 2016-05-12T06:33:52.470 回答
0

Spark JobServer 为您的需求提供了 rest 接口。除此之外还有其他功能。

有关更多信息,请参阅https://github.com/spark-jobserver/spark-jobserver

于 2016-05-12T06:28:34.143 回答