-
Recent Posts
Archives
Categories
Blogroll
Meta
Tag Archives: hadoop mapreduce
Map 和 Reduce 操作是如何完成的
简介 这篇文章是描述Hadoop中的 Map和Reduce操作是如何完成的。如果你不了解map/reduce,可以先阅读Google的MapReduce编程模型文档。 Map 出于Map操作是并行性,输入的文件集将被分割成多块,这里叫 Filesplit 。如果某个文件过大而影响查找速度,那么它也会被分割成多块。分割操作是不会关心文件的内部逻辑结构的,例如面向文本的的分割是以任意字节数作为分割边界。对应每一个文件分割块,生成一个map任务。 当一个独立的map任务启动,它将对每个已配置的reduce任务打开一个相应的 output writer 。然后,从指定的 InputFormat 中获得 RecordReader 来读取它所有的 FileSplit 。InputFormat 分析输入,生成键值对(key-value pairs)。有些记录在FileSplit的边界处分割,InputFormat 必须能处理这些特殊的记录。例如,使用 TextInputFormat 读取到 FileSplit 的最后一行时会越过 FileSplit边界,同时,如果不是第一个FileSplit ,TextInputFormat 会忽略到新的第一行的内容。 没有必要一定让 InputFormat 同时生成有意义的 keys 和 valus 。例如 TextInputFormat 缺省的输出是由 文本行 为值 ,行开始的文件偏移量为键-大多数的应用仅使用文本行,而忽略掉偏移值。 键值对从 … Continue reading