MapReduce 的特性
7.1 计数器
计数器是一种收集作业统计信息的有效手段,用于质量控制或应用级统计。计数器还可辅助诊断系统故障。Hadoop 为每个作业维护若干内置计数器 ,以描述该作业的各项指标。
任务计数器
在任务执行过程中,每个作业的所有任务的结果都会被任务计数器聚集起来。计数器由其关联任务维护,井定期传到 tasktracker .再由 tasktracker 传给 jobtracker 。一个任务在作业执行期间失败,则相关计数器的值会减少。
作业计数器
作业计数器由jobtracker维护,因此无需网络间传输数据。
7.2 排序
全排序:
方法1.使用一个分区,但是该方法效率低,
方法2,先将数据分桶,再在桶内局部排序。创建一系列排好序的文件, 串联这些文件 后,生成 一个全局排序的文件。获得气温分布信息意味着可以建立一系列分布更均匀的分区。但由于这个操作需要遍历整个数据集,因此井不实用。通过对键空间进行采样,就可较为均匀地划分数据集。采样的核心思想是只查看一小部分键,获得键的近似分布,并由此构建分区。
辅助排序
7.3 连接
连接操作的具体实现技术取决于数据集的规模及分区方式。连接操作如果由 mapper 执行,则称为 "map 端连接 ",如果由 reducer 执行,则称 "reduce" 端连接。如果一个数据集很大 (例如天气记录)而另外一个集合很小,以至于可以分发到集群中的每一个节点之中 (例如气象站元数据),则可以执行一个 MapReduce 作业,将各个气象站的天气记录放到一块。如果两个数据集的规模均很大,以至于没有哪个数据集可以被完全复制到集群的每个节点,我们仍然可以使用 MapReduce 来进行连接,至于到底采用 map 端连接还reduce 端连接,则取决于数据的组织方式。
map连接:
在两个大规模输入数据集之间的 map 端连接会在数据到达 map 函数之前就执行连接操作。各 map 的输入数据必须先分区并且以特定方式排序。各个输入数据集被划分成相同数量的分区,井且均按相同的键排序(连接键)。同一键的所有记录均会放在同一分区之中。
7.4 边数据
分布式缓存