Hadoop如何决定在存储桶/节点之间进行分配?

时间:2013-09-22 17:45:51

标签: hadoop mapreduce distributed-computing hadoop-partitioning

我是Map / Reduce和Hadoop框架的新手。 我正在单机上运行Hadoop程序(试用它)。 我有n个输入文件,我想从这些文件中得到一些单词摘要。 我知道map函数返回键值对,但是如何调用map? 一旦在每个文件上或每个文件的每一行上一次?我可以配置吗?

假设是否正确,每个键都会调用“reduce”?

2 个答案:

答案 0 :(得分:2)

为一个 InputSplit(或简称拆分)调用一张地图,您在MR工作中使用的输入格式的职责是设置这些分裂。它可以是一行,多行,一个整个文件等,基于InputFormat中的逻辑。例如,默认的InputFormat,即 TextInputFormat 包含单行的拆分包。

是的,您可以通过更改正在使用的InputFormat来配置它。

与特定键对应的所有值都聚合在一起,多个键被分区为分区,整个分区转到reducer进行进一步处理。因此,对应于特定键的所有值都由单个reducer处理,但是单个reducer可以获得多个键。

答案 1 :(得分:1)

在Hadoop MR框架中,作业跟踪器为每个 InputSplit 创建一个地图任务,由作业指定的 InputFormat 确定。分配给地图任务的每个 Inputsplit RecordReader 进一步处理,以生成地图功能的输入键/值对。为 RecordReader 生成的每个键/值对调用map函数。

对于默认输入格式,即 TextInputFormat ,输入拆分将是单个HDFS块,将由单个地图任务处理, RecordReader 将处理一个在块内的一次行生成键/值对,其中键是文件中行的起始字节偏移量,值是将传递给映射函数的行的内容。

减速器的数量取决于用户的作业配置,所有具有相同键的键/值对被分组并将被发送到按键排序的单个减速器,但同时单个减速器也可以处理多个键。

有关输入格式的详细信息并对其进行自定义,请参阅此YDN文档:

http://developer.yahoo.com/hadoop/tutorial/module5.html#inputformat

相关问题