对纱线概念理解的火花

Spo*_*rty 37 hadoop hdfs hadoop-yarn apache-spark

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

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

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

mrs*_*vas 30

添加到其他答案.

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

,如果火花作业纱(或安排clientcluster模式).许多节点都需要Spark安装,仅用于独立模式.

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

Spark Standalone Cluster Spark独立模式

cluster模式驱动程序中,驱动程序将位于其中一个Spark Worker节点中,而在client模式下,驱动程序将位于启动作业的计算机中.


YARN群集模式 YARN群集模式

YARN客户端模式 YARN客户端模式

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

Standalone,YARN Cluster和YARN Client模式之间的差异

照片来源

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

Hadoop安装不是强制性的,但配置(并非所有)都是!这可能是两个主要原因.

  • HADOOP_CONF_DIR目录中包含的配置将分发到YARN群集,以便应用程序使用的所有容器使用相同的配置.
  • 在YARN模式下,从Hadoop配置(yarn-default.xml)中获取ResourceManager的地址.因此,--master参数是yarn.


更新:(2017-01-04)

Spark 2.0+ 不再需要胖组件jar来进行生产部署.资源


Ran*_*anP 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
Run Code Online (Sandbox Code Playgroud)

--conf spark.yarn.jar=hdfs://master:8020/spark/spark-assembly-1.3.1-hadoop2.6.0.jar - 这个配置告诉纱线是采取火花组件.如果您不使用它,它会在您运行时上传jar spark-submit.

关于第二个问题:客户端节点不需要安装Hadoop.它只需要配置文件.您可以将目录从群集复制到客户端.

  • 正如 **@Jacek Laskowski** [here](/sf/ask/2283539331/#comment53178300_32628057) 所指出的,`Spark ` 在 `YARN` 模式下不再使用 `--num-executors` (2认同)
  • 我相信我们可以 [现在回退](https://spark.apache.org/docs/latest/configuration.html#dynamic-allocation) `--num-executors` 的 `spark.dynamicAllocation.initialExecutors` 或`spark.executor.instances` (2认同)