我想了解spark如何在YARN群集/客户端上运行。我的脑海中有以下问题。
是否有必要在纱线簇的所有节点上安装 Spark ?我认为应该这样做是因为集群中的工作程序节点执行任务,并且应该能够解码驱动程序发送给集群的spark应用程序中的代码(spark API)?
它在文档中说“确保HADOOP_CONF_DIR
或YARN_CONF_DIR
指向包含Hadoop集群的(客户端)配置文件的目录”。为什么客户端节点在将作业发送到集群时必须安装Hadoop?
我们正在YARN上运行Spark作业(我们使用HDP 2.2)。
我们没有在群集上安装spark。我们仅将Spark装配罐添加到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 组件。如果你不使用它,它将在你运行时上传jar spark-submit
。
关于第二个问题:客户端节点不需要安装Hadoop。它只需要配置文件。你可以将目录从群集复制到客户端。
正如@Jacek Laskowski 在此指出的,
Spark
不再--num-executors
在YARN
模式下使用我相信我们现在 可以退回
spark.dynamicAllocation.initialExecutors
给--num-executors
或spark.executor.instances