跨群集分发分区

时间:2018-05-08 07:49:40

标签: apache-spark hadoop pyspark bigdata cluster-computing

apache spark中,允许从许多不同来源加载数据集。根据我的理解,spark集群的计算节点可能与hadoop用于存储数据的节点不同(我是对的吗?)。更重要的是,我们甚至可以将本地文件加载到spark作业中。这里有一个主要问题:即使我们使用相同的计算机进行hdfsspark目的,spark在创建RDD期间是否会随机播放所有数据?或spark只会尝试加载数据以利用已有的数据位置?

1 个答案:

答案 0 :(得分:0)

您可以使用HDFS作为MapReduce (Hadoop)Spark引擎的公共底层存储,并使用像YARN这样的集群管理器来执行资源管理。 Spark将尝试利用数据局部性,并尽可能接近数据执行任务。

这是它的工作方式:如果要处理的节点上有数据,但CPU不是空闲的,Spark将等待一段时间(由配置参数确定:{ CPU可以使用{1}}秒,默认为3秒。

如果在配置的时间过后CPU仍然没有空闲,Spark会将任务切换到较低的位置级别。然后它将再次等待spark.locality.wait秒,如果再次发生超时,它将切换到更低的位置级别。

地点级别定义如下,从最接近数据到最远数据(https://spark.apache.org/docs/latest/api/scala/index.html#org.apache.spark.scheduler.TaskLocality$)的顺序如下:

spark.locality.wait

也可以单独配置地点级别的等待时间。对于较长的作业,等待时间可以增加到比默认值3秒更大的值,因为CPU可能会更长时间。