什么决定了mapreduce应用程序的位置率?

jchrr9hc  于 2021-06-02  发布在  Hadoop
关注(0)|答案(1)|浏览(285)

当运行mapreduce应用程序(例如排序和字数)时,我注意到位置率可能不同。
位置率如何依赖于应用程序和输入文件?为什么有些应用程序具有比其他应用程序更高的局部性率?

gcuhipw9

gcuhipw91#

看看Yarn教程
Yarn
当您通过检查资源可用性来选择节点管理器时&如果该节点管理器与存储数据的数据节点不同,那么数据局部性概念就被打破了。在这种情况下,数据将通过网络从一个节点传输到另一个节点。发生此事件的原因:节点管理器很忙,并且受到cpu和内存需求的限制。
假设已经为Map作业标识了一个特定的节点管理器来读取数据。但是如果数据跨越多个节点,那么数据应该在节点之间传输。
hadoop在map-reduce框架中使用逻辑拆分而不是物理拆分。输入拆分取决于记录的写入位置。
假设一个数据节点中的dfs块大小为64 mb。如果由于大小限制,该块中的最后一条记录未完全写入。假设行的一半已写入数据节点1(1 mb),剩余的一半已写入数据节点2(1 mb的数据位于另一个64 mb dfs块中)。
在map-reduce作业处理过程中,数据节点2的数据通过网络传输,完成逻辑拆分。
看看我在其他se问题中的帖子,它很好地解释了输入分割过程。
来自apache map reduce教程
有多少张Map?
Map的数量通常由输入的总大小驱动,即输入文件的总块数。
有多少减速器?
reducer将共享一个键的一组中间值缩减为一组较小的值。作业的减少次数由用户通过 Job.setNumReduceTasks(int ).
假设mappers输出就绪。如果mapper节点和reducer节点不同,那么数据将通过网络传输。hadoop框架决定了给定hadoop作业的Map器和还原器的数量。

相关问题