【发布时间】:2018-04-10 21:47:29
【问题描述】:
我将Spark 与HDFS Hadoop 存储和Yarn 一起使用。我的集群包含 5 个节点(1 个主节点和 4 个从节点)。
- 主节点:48Gb RAM - 16 个 CPU 内核
- 从节点:12 Gb RAM - 16 个 CPU 内核
我正在执行两个不同的进程:WordCount 方法和具有两个不同文件的 SparkSQL。一切正常,但我在问一些问题,也许我不太了解 Hadoop-Spark。
第一个例子:字数
我执行了 WordCount 函数,得到了两个文件(part-00000 和 part-00001)的结果。 part-00000 的可用性是 slave4 和 slave1,part-00001 的可用性是 slave3 和 slave4。
为什么不在 slave2 上的一部分?正常吗?
当我查看 application_ID 时,我看到只有 1 个奴隶完成了这项工作:
为什么我的任务没有很好地分布在我的集群上?
第二个例子:SparkSQL
在这种情况下,我没有保存文件,因为我只想返回一个 SQL 结果,但也只有 1 个从节点工作。
那么为什么我只有 1 个从节点来执行任务,而我有一个似乎工作正常的集群?
执行此操作的命令行是:
time ./spark/bin/spark-submit --master yarn --deploy-mode cluster /home/valentin/SparkCount.py
谢谢!
【问题讨论】:
-
你还没有说明你的数据集有多大...为什么你认为所有节点都需要使用?
-
因为我相信在集群模式下所有节点都被用于制作我的流程。我正在尝试使用最大的数据集来查看这个假设。
-
只使用尽可能多的节点来处理数据的所有 InputSplit。这并不一定意味着所有将被使用...此外,您没有明确设置执行程序的数量或
spark-submit的执行程序内存使用超过默认值
标签: apache-spark hadoop