gpt4 book ai didi

java - Hadoop如何在多个数据节点之间分配数据和Mapreduce任务

转载 作者:行者123 更新时间:2023-12-02 20:52:10 26 4
gpt4 key购买 nike

我是hadoop的新手,并且阅读了很多页面的hadoop mapreduce和hdfs,但仍然无法清除一个概念。

如果是这样的话,那么这个问题可能是愚蠢的或毫无用处的。
我的问题是,假设我已经在hadoop中为文件大小为1 GB的文件创建了一个单词计数程序,其中map函数将每一行作为输入并输出为键值对,而reduce函数将接受输入
作为键值对,并简单地迭代列表并计算单词进入该文件的总次数。

现在我的问题是,由于此文件存储在多个数据节点中的块中,并且map-reduce在每个数据节点上并行执行。说我的文件存储在两个数据节点上,第一个数据节点上的文件包含单词“hadoop” 5次,第二个数据节点上的文件包含单词“hadoop” 7次。
整个 map 缩小过程的输出为:

Hadoop:7

Hadoop:5

因为在2个不同的数据节点上并行执行2个map-reduce函数,
但是输出应该是两个文件上“hadoop”字数的总和,即:
Hadoop:13

因此,我将如何实现这一目标,或者我是否在这里缺少一些概念。请帮助我,我对这个概念一无所知,如果无法让您理解我要问的问题,我深感抱歉。

最佳答案

您可能已经阅读了Hadoop Mapreduce和HDFS的许多页面,但是您似乎错过了包含Map之后和Reduce之前的阶段(即Shuffle和Sort)的页面。

基本上,它是从所有映射器中清除数据,然后将具有相同键的行按排序顺序发送到相同的reducer。因此,在您的情况下,hadoop 7hadoop 5都将使用相同的reducer,这会将其缩减为hadoop 12(不是13!)

您可以在网络上轻松获得有关随机播放和排序的更多信息。您可以阅读questions like this too

关于java - Hadoop如何在多个数据节点之间分配数据和Mapreduce任务,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45664548/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com