[关闭]
@zqbinggong 2018-06-16T06:41:56.000000Z 字数 1068 阅读 310

MapReduce的特性

MapReduce基础
MapReduce应用开发
YARN

hadoop 《权威指南》

! All pictures are screenshots from the book 'Hadoop: The Definitive Guide, Fourth Edititon, by Tom White(O'Reilly).Copyright©2015TomWhite, 978-1-491-90163-2'


计数器


排序

尽管应用本身不需要对数据进行排序,但仍可能可以(may be able to)使用MR的排序功能来组织数据

部分排序

默认情况下,MR根据输入记录的键对数据集排序

全局排序

  1. 思路就是仿照快速排序的做法,因而关键点在于如何进行分区
  2. 通过对键进行采样,可以较为均匀地划分数据集
  3. 采样器在客户端运行,因而限制分片地下载量以加速采样器的运行就很重要
  4. 常用采样器(采样器的选择基于输入数据的特性)
    • RandomSample
    • SplitSample: 只采样一个分片中的前n条记录,(因而不适合于已排序的输入数据)
    • IIntervalSample: 以一定的间隔进行采样(适合于排好序的数据)

辅助排序

  1. MR在记录到达reducer之前按键对记录排序,但键所对应的值并没有进行排序
    • 比如说,reducer接受的记录为: 键为年份, 值为每个月最高气温的列表,如果气温你列表已经排序,那么寻找每年最高气温就等价于取出气温列表的第一个值
  2. 可与通过对键进行排序和分组等实现对值的排序
    • 首先构建一个同时包含年份和气温信息的组合键
    • 对键的排序变成对年份升序,对气温降序
    • 为确保同一年份的数据能送到同一分区,partitioner需要按键的年份部分进行分区
    • 为确保分到同一分区的同一年份的数据能被分到同一个组,需要让分组也是只按照键的年份部分进行分组

连接 (存疑,尚待进一步理解)

连接操作的具体实现取决于数据集的规模以及分区方式


边数据

side data是作业所需的额外的只读数据,以辅助处理主数据集,关键在于如何使所有的map或reduce任务都能够方便而搞笑地使用边数据

利用JobConf来配置作业

分布式缓存

添加新批注
在作者公开此批注前,只有你和作者可见。
回复批注