Hadoop权威指南——学习笔记2
今天主要学习了第二章关于MapReduce,澄清了对一些概念的认识。
- 分片:也叫输入分片(input split),是Hadoop将MapReduce的输入数据划分成的等长的小数据块。Hadoop为每一个分片构建一个map任务。一方面,分片越小,负载平衡的质量越好;另一方面,如果分片太小,那么管理分片的总时间和构建map任务的总时间将决定着作业的整个执行时间。以前一直认为分片就是block,其实不是。只是对于大多数作业来说,一个合理的分片大小趋向于HDFS的一个块大小。
- map任务将其输出写入本地硬盘,而非HDFS。
- reduce任务数量并非由输入数据的大小决定的,而是特别指定的。如果有多个reduce任务,则每个map任务会对其输出进行分区(partition),即为每个reduce建立一个分区。分区由用户定义的分区函数控制,但通常用默认的分区器(partitioner,分区函数)通过哈希函数来分区,这种方法很高效。
- combiner:合并函数,用于减少map任务和reduce任务之间的数据传输量。一般的做法是在map结束后先调用一次reduce函数,然后把结果通过网络传输给reduce任务,这样做可以减少map和reduce间的数据传输。