hadoop - map / reduce功能

时间:2015-06-19 17:30:47

标签: hadoop

我刚刚开始研究hadoop并在经历了一些挣扎之后让wordcount示例在一个集群(两个数据节点)上工作。

但我对Map / Reduce功能有疑问。我读到在map中,输入文件/数据被转换为另一种形式的数据,可以在reduce步骤中有效地处理。

让我们说我有四个输入文件(input1.txt,input2.txt,input3.txt,input4.txt),并希望读取输入文件并转换为另一种形式的数据以进行reduce。

所以这就是问题所在。如果我在集群环境(两个数据节点)上运行应用程序(wordcount),是在每个datanode上读取这四个输入文件还是在每个datanode上读取两个输入文件?如何检查在哪个datanode上读取哪个文件?

或者映射(在每个datanode上)将文件读取为某种块而不是读取单个文件?

2 个答案:

答案 0 :(得分:0)

请参阅hadoop基于块而不是文件。因此,即使所有四个文件都小于128MB(或64MB,具体取决于块大小),也只能由一个映射器读取。这个由mapper读取的块也称为InputSplit。我希望能回答你的问题。

答案 1 :(得分:0)

文件分为块。块分布在集群中的数据节点上。块也由复制因子复制(默认为3),因此每个块可以位于多个节点上。调度程序决定运行映射器的位置,这取决于可以处理哪个数据节点以及数据所在的位置(数据位置进入图像)。在你的程序(wordcount)中,每一行都被逐一送到映射器(不是整个文件或块)。