对纱线概念理解的火花

时间:2014-07-23 12:00:28

标签: hadoop apache-spark hdfs yarn

我试图了解如何在YARN群集/客户端上运行spark。我脑子里有以下问题。

  1. 是否有必要在纱线群中的所有节点上安装火花?我认为应该是因为集群中的工作节点执行任务并且应该能够解码驱动程序发送到集群的spark应用程序中的代码(spark API)?

  2. 它在文档中说明"确保HADOOP_CONF_DIRYARN_CONF_DIR指向包含Hadoop集群(#34;)的(客户端)配置文件的目录。为什么客户端节点在将作业发送到集群时必须安装Hadoop?

4 个答案:

答案 0 :(得分:27)

添加其他答案。

  
      
  1. 是否有必要在纱线的所有节点上安装火花   集群?
  2.   

,如果火花作业正在YARN(clientcluster模式)进行调度。仅standalone mode的许多节点需要安装Spark。

这些是spark app部署模式的可视化。

Spark Standalone Cluster Spark standalone mode

cluster模式下驱动程序将位于其中一个Spark Worker节点,而在client模式下,它将启动工作的机器

YARN群集模式 YARN cluster mode

YARN客户端模式 YARN client mode

此表提供了这些模式之间差异的简明列表:

differences among Standalone, YARN Cluster and YARN Client modes

pics source

  
      
  1. 在文档中说“确保HADOOP_CONF_DIR或YARN_CONF_DIR指向包含(客户端)的目录   Hadoop集群的配置文件“。为什么客户端节点具有   在将作业发送到集群时安装Hadoop?
  2.   

Hadoop安装不是强制性的,但配置(并非所有)都是! 我们可以将它们称为网关节点。这有两个主要原因。

  • HADOOP_CONF_DIR目录中包含的配置将是 分发到YARN集群,以便所有容器使用 应用程序使用相同的配置。
  • 在YARN模式下,从中获取ResourceManager的地址 Hadoop配置(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à!