运行MapReduce应用程序时(例如排序vs字数)我注意到地方率可能不同。
位置率如何取决于应用程序和输入文件? 为什么有些应用程序的位置率比其他应用程序高?
答案 0 :(得分:0)
<强> YARN 强>
当YARN通过检查资源可用性&amp;选择节点管理器时如果该节点管理器与存储数据的数据节点不同,则数据局部性概念被破坏。在这种情况下,数据将通过网络从一个节点传输到另一个节点。发生此事件的原因:节点管理器忙碌并受CPU和CPU限制。内存要求。
假设已为Map作业识别特定节点管理器以读取数据。但是,如果数据跨越多个节点,则应在节点之间传输数据。
Hadoop在Map reduce框架中使用逻辑拆分而不是物理拆分。输入拆分取决于写入记录的位置。
假设一个数据节点中的DFS块大小为64 MB。如果由于大小限制而未完全写入该块中的最后一条记录。假设该行的一半已写入数据节点1(1 MB),剩余的一半写入数据节点2(另一个64 MB DFS块中的1 MB数据)。
在处理Map reduce作业期间,来自数据节点2的数据将通过网络传输以完成逻辑分割。
在其他SE question中查看我的帖子,这很好地解释了输入拆分过程。
来自Apache Map reduce tutorial
有多少地图?
地图数量通常由输入的总大小驱动,即输入文件的总块数。
有多少减速机?
Reducer将一组中间值减少到一组较小的值,这些中间值共享一个键。用户通过Job.setNumReduceTasks(int
)设置作业的减少次数。
假设Mappers输出已准备就绪。如果Mapper节点&amp; Reducer节点不同,然后数据将通过网络传输。 Hadoop框架决定了给定Hadoop作业的映射器数和减少器数。