Spark with Hadoop Yarn:使用整个群集节点

时间:2018-04-09 09:08:29

标签: apache-spark hadoop

我正在使用Spark HDFS Hadoop存储和Yarn。我的群集包含5个节点(1个主节点和4个从节点)。

  • 主节点:48Gb RAM - 16个CPU内核
  • 从节点:12 Gb RAM - 16个CPU内核

我正在执行两个不同的进程:WordCount方法和带有两个不同文件的SparkSQL。一切正常,但我问了一些问题,也许我不太了解Hadoop-Spark。

第一个例子:WordCount

我执行了WordCount功能,我得到两个文件的结果(部分00000和部分00001)。可用性为slave4,slave1为part-00000,slave3为slave4,slave4为part-00001。

为什么不关注slave2呢?这是正常的吗?

当我查看application_ID时,我看到只有1个奴隶做了这个工作:

enter image description here

为什么我的任务在我的群集上分布不均很好?

第二个例子:SparkSQL

在这种情况下,我没有保存文件,因为我只想返回一个SQL结果,但只有一个从节点也能正常工作。

那么为什么我只有一个从节点来完成任务而我有一个似乎工作正常的集群呢?

执行此操作的命令行是:

time ./spark/bin/spark-submit --master yarn --deploy-mode cluster /home/valentin/SparkCount.py

谢谢!

1 个答案:

答案 0 :(得分:1)

spark.executor.instances defaults to 2

您需要增加此值以使更多执行程序一次运行

您还可以调整分配给每个执行程序的核心和内存。据我所知,没有神奇的公式。

如果您不想手动指定这些值。我可能会建议阅读Spark文档中的Speculative Execution部分