在Hadoop中,数据局部性到底意味着什么?

在Hadoop中,数据局部性到底意味着什么?,hadoop,mapreduce,Hadoop,Mapreduce,许多Hadoop教程网站(即)定义的数据局部性指出:“Hadoop中的数据局部性是将计算移动到接近实际数据所在位置的过程,而不是将大数据移动到计算位置。这可以最大限度地减少总体网络拥塞。” 我可以理解,让数据所在的节点处理这些数据的计算,而不是四处移动数据,将是高效的。然而,“将计算移到接近实际数据所在的位置”是什么意思?这是否意味着,如果数据位于德国的服务器中,最好使用法国的服务器对这些数据进行计算,而不是使用新加坡的服务器进行计算,因为法国比新加坡更接近德国 人们通常会以完全不同的方式谈论这

许多Hadoop教程网站(即)定义的数据局部性指出:“Hadoop中的数据局部性是将计算移动到接近实际数据所在位置的过程,而不是将大数据移动到计算位置。这可以最大限度地减少总体网络拥塞。”


我可以理解,让数据所在的节点处理这些数据的计算,而不是四处移动数据,将是高效的。然而,“将计算移到接近实际数据所在的位置”是什么意思?这是否意味着,如果数据位于德国的服务器中,最好使用法国的服务器对这些数据进行计算,而不是使用新加坡的服务器进行计算,因为法国比新加坡更接近德国

人们通常会以完全不同的方式谈论这一点,尤其是在Hadoop环境中

假设您有一个由5个节点组成的集群,您在那里存储了一个文件,需要对其进行计算

使用数据局部性,您可以尝试在存储数据的节点(而不是第一个具有可用计算资源的节点)上进行计算

这降低了网络负载



很高兴认识到,在许多新的基础架构中,网络不是瓶颈,因此您将不断听到更多关于计算和存储解耦的信息

I+1 Dennis Jaheruddin的答案,只是想补充一点——当您检查作业计数器时,您实际上可以在MR中看到不同的位置级别,例如在作业历史UI中


HDFS和纱线不仅仅是二进制相同或其他节点:在上面的屏幕中,
数据本地
表示任务在包含实际数据的机器本地运行
机架本地
——数据不是运行任务的节点的本地数据,需要复制,但仍在同一机架上;最后是另一个本地案例——数据在本地不可用,也不在同一机架上,因此必须通过两个交换机将数据复制到运行计算的节点。

典型的Hadoop设置由同一房间内的多个节点(机器)组成。它不应该在国家间传播,尽管这会使数据的位置更加重要!我理解在存储数据的节点上进行计算的部分。我不明白的是,教程网站上说“将计算移到接近实际数据所在的位置”。“接近”到底是什么意思?它不是正好在存储数据的节点中吗?他们为什么说“接近”?