我正在使用Spark
HDFS Hadoop
存储和Yarn
。我的群集包含5个节点(1个主节点和4个从节点)。
我正在执行两个不同的进程:WordCount方法和带有两个不同文件的SparkSQL。一切正常,但我问了一些问题,也许我不太了解Hadoop-Spark。
第一个例子:WordCount
我执行了WordCount功能,我得到两个文件的结果(部分00000和部分00001)。可用性为slave4,slave1为part-00000,slave3为slave4,slave4为part-00001。
为什么不关注slave2呢?这是正常的吗?
当我查看application_ID时,我看到只有1个奴隶做了这个工作:
为什么我的任务在我的群集上分布不均很好?
第二个例子:SparkSQL
在这种情况下,我没有保存文件,因为我只想返回一个SQL结果,但只有一个从节点也能正常工作。
那么为什么我只有一个从节点来完成任务而我有一个似乎工作正常的集群呢?
执行此操作的命令行是:
time ./spark/bin/spark-submit --master yarn --deploy-mode cluster /home/valentin/SparkCount.py
谢谢!
答案 0 :(得分:1)
spark.executor.instances
defaults to 2
您需要增加此值以使更多执行程序一次运行
您还可以调整分配给每个执行程序的核心和内存。据我所知,没有神奇的公式。
如果您不想手动指定这些值。我可能会建议阅读Spark文档中的Speculative Execution部分