我是一个完全的Spark新手,刚开始探索更多相关知识。我选择了更长的路径,没有使用任何CDH发行版安装hadoop,而是从Apache网站安装,并设置配置文件以更好地理解基础知识。
我已经设置了一个3节点集群(所有节点都是从ESX服务器创建的虚拟机)。我通过使用zookeeper机制为NameNode和ResourceManager设置了高可用性。所有三个节点也作为DataNode在使用。
以下守护进程正在所有三个节点上运行。
我已经在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群集吗?
我已经设置了一个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群集吗?