我是 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 集群吗?