谷歌MapReduce论文表示,工作人员被安排在与数据相同的节点上,或者至少在相同的机架上(如果可能的话)。我没有阅读整个Hadoop文档,但我认为如果可能的话,它会将计算移动到数据,而不是计算的数据。
(当我第一次了解Hadoop时,从HDFS到工作人员的所有数据都必须通过TCP连接,即使工作人员与数据位于同一节点上。这仍然是这样吗?)
无论如何,使用Apache Spark,工作人员是否会在与数据相同的节点上进行调度,或者RDD概念是否会使其更难实现?
答案 0 :(得分:5)
一般来说,这取决于。 Spark识别多个级别的位置(包括PROCESS_LOCAL
,NODE_LOCAL
,RACK_LOCAL
),并尝试安排任务以达到最佳位置级别。请参阅Data Locality
可以使用spark.locality.*
属性控制确切的行为。它包括在选择具有较低位置的节点之前调度程序等待空闲资源的时间量。请参阅Scheduling中的Spark Configuration。