我试图了解如何在YARN群集/客户端上运行spark。我脑子里有以下问题。
是否有必要在纱线群中的所有节点上安装火花?我认为应该是因为集群中的工作节点执行任务并且应该能够解码驱动程序发送到集群的spark应用程序中的代码(spark API)?
它在文档中说明"确保HADOOP_CONF_DIR
或YARN_CONF_DIR
指向包含Hadoop集群(#34;)的(客户端)配置文件的目录。为什么客户端节点在将作业发送到集群时必须安装Hadoop?
答案 0 :(得分:27)
添加其他答案。
- 是否有必要在纱线的所有节点上安装火花 集群?
醇>
否,如果火花作业正在YARN(client
或cluster
模式)进行调度。仅standalone mode的许多节点需要安装Spark。
这些是spark app部署模式的可视化。
Spark Standalone Cluster
在cluster
模式下驱动程序将位于其中一个Spark Worker节点,而在client
模式下,它将启动工作的机器。
YARN群集模式
YARN客户端模式
此表提供了这些模式之间差异的简明列表:
- 在文档中说“确保HADOOP_CONF_DIR或YARN_CONF_DIR指向包含(客户端)的目录 Hadoop集群的配置文件“。为什么客户端节点具有 在将作业发送到集群时安装Hadoop?
醇>
Hadoop安装不是强制性的,但配置(并非所有)都是! 我们可以将它们称为网关节点。这有两个主要原因。
HADOOP_CONF_DIR
目录中包含的配置将是
分发到YARN集群,以便所有容器使用
应用程序使用相同的配置。 yarn-default.xml
)。因此,--master
参数为yarn
。
更新:(2017-01-04)
Spark 2.0+ 不再需要胖装配罐进行生产 部署。 source
答案 1 :(得分:26)
我们正在YARN上运行火花工作(我们使用HDP 2.2)。
我们没有在群集上安装spark。我们只将Spark程序集jar添加到HDFS。
例如,运行Pi示例:
./bin/spark-submit \
--verbose \
--class org.apache.spark.examples.SparkPi \
--master yarn-cluster \
--conf spark.yarn.jar=hdfs://master:8020/spark/spark-assembly-1.3.1-hadoop2.6.0.jar \
--num-executors 2 \
--driver-memory 512m \
--executor-memory 512m \
--executor-cores 4 \
hdfs://master:8020/spark/spark-examples-1.3.1-hadoop2.6.0.jar 100
--conf spark.yarn.jar=hdfs://master:8020/spark/spark-assembly-1.3.1-hadoop2.6.0.jar
- 此配置告诉纱线是否采取火花组件。如果您不使用它,它会在您运行spark-submit
时上传jar。
关于第二个问题:客户端节点不需要安装Hadoop。它只需要配置文件。您可以将目录从群集复制到客户端。
答案 2 :(得分:1)
1 - 如果遵循s slave / master架构,则触发Spark。所以在你的集群上,你必须安装一个spark master和N spark slaves。您可以在独立模式下运行spark。但是使用Yarn架构会给你带来一些好处。 这里有一个非常好的解释:http://blog.cloudera.com/blog/2014/05/apache-spark-resource-management-and-yarn-app-models/
2-如果您想使用Yarn或HDFS,这是必要的,但正如我之前所说,您可以在独立模式下运行它。
答案 3 :(得分:0)
让我试着减少胶水,使其不耐烦。
6个组件:1.客户端,2。驱动程序,3。执行程序,4。应用程序主控,5。工人和6.资源管理器; 2种部署模式;和 2资源(集群)管理。
这里是关系:
没有什么特别的,是一个提交的火花应用程序。
没什么特别的,一个工人拥有一个或多个执行人。
(无论是客户端模式还是集群模式)
Voilà!