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



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

假设每个键都调用"reduce"是否正确?

一个

映射是为一个 InputSplit(或简称 split(调用的,并且您在 MR 作业中使用的 InputFormat 的职责是将这些拆分打包。它可以是一行、多行、一个完整的文件等等,具体取决于 InputFormat 中的逻辑。例如,默认的 InputFormat,即由一行组成的拆分的 TextInputFormat 箱。

是的,

您可以通过更改正在使用的输入格式来配置它。

与特定键对应的所有值都组合在一起,多个键被分区到分区中,整个分区进入化简器进行进一步处理。因此,对应于特定键的所有值都由单个化简器处理,但单个化简器可以获取多个键。

在Hadoop MR框架中,作业跟踪器为每个InputSplit创建一个映射任务,该任务由作业指定的InputFormat确定。分配给映射任务的每个输入拆分都由 RecordReader 进一步处理,以生成映射函数的输入键/值对。映射函数是为记录读取器生成的每个键/值对调用的。

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

化简器

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

有关输入格式和自定义它的更多详细信息,请参阅此 YDN 文档:

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

相关内容

  • 没有找到相关文章

最新更新