Hadoop 权威指南学习笔记(七)

                               MapReduce 的特性

7.1  计数器

         计数器是一种收集作业统计信息的有效手段,用于质量控制或应用级统计。计数器还可辅助诊断系统故障。Hadoop 为每个作业维护若干内置计数器 ,以描述该作业的各项指标。

任务计数器

        在任务执行过程中,每个作业的所有任务的结果都会被任务计数器聚集起来。计数器由其关联任务维护,井定期传到 tasktracker .再由 tasktracker 传给 jobtracker 。一个任务在作业执行期间失败,则相关计数器的值会减少。

作业计数器

         作业计数器由jobtracker维护,因此无需网络间传输数据。

 

7.2 排序

 全排序:

方法1.使用一个分区,但是该方法效率低,

方法2,先将数据分桶,再在桶内局部排序。创建一系列排好序的文件, 串联这些文件 后,生成 一个全局排序的文件。获得气温分布信息意味着可以建立一系列分布更均匀的分区。但由于这个操作需要遍历整个数据集,因此井不实用。通过对键空间进行采样,就可较为均匀地划分数据集。采样的核心思想是只查看一小部分键,获得键的近似分布,并由此构建分区。

辅助排序

MapReduce 框架在记录到达 reducer 之前按键对记录排序,但键所对应的值并没有被排序。由于值来自不同的 map 任务,所以在多次运行程序时,值的出现顺序并不固定,导致每次运行作业的时间会各有不同。一般来说,大多数 MapReduce程序无需考虑值在 reduce 函数中的出现的顺序。
 

7.3 连接

          连接操作的具体实现技术取决于数据集的规模及分区方式。连接操作如果由 mapper 执行,则称为 "map 端连接 ",如果由 reducer 执行,则称 "reduce" 端连接如果一个数据集很大 (例如天气记录)而另外一个集合很小,以至于可以分发到集群中的每一个节点之中 (例如气象站元数据),则可以执行一个 MapReduce 作业,将各个气象站的天气记录放到一块。如果两个数据集的规模均很大,以至于没有哪个数据集可以被完全复制到集群的每个节点,我们仍然可以使用 MapReduce 来进行连接,至于到底采用 map 端连接还reduce 端连接,则取决于数据的组织方式。

map连接:

         在两个大规模输入数据集之间的 map 端连接会在数据到达 map 函数之前就执行连接操作。各 map 的输入数据必须先分区并且以特定方式排序。各个输入数据集被划分成相同数量的分区,井且均按相同的键排序(连接键)。同一键的所有记录均会放在同一分区之中。

reduce 连接:
      
由于 reduce 端连接并不要求输入数据集符合特定结构,因而 reduce 端连接比 map端连接更为常用。但是,由于两个数据集均需经过 MapReduce shuffle 过程,所以 reduce 端连接的效率往往要低一些。基本思路是 mapper 为各个记录标记源,并且使用连接键作为 map 输出键,使键相同的记录放在同一 reducer 中。
需要:1. 多输入  2.辅助排序  ,为了更好地执行连接操作,先将某一个源的数据传输到reducer 会非常重要。

7.4 边数据

"边数据" (side data) 是作业所需的额外的只读数据,以辅助处理主数据集。所面临的挑战在于如何使所有 map reduce 任务(这些任务散布在集群内部)都能够方便而高效地使用边数据。用户可以通过Context类的getConfiguaration()方法获得配置信息。
 

分布式缓存

与在作业配置中序列化边数据的技术相比, Hadoop 的分布式缓拷贝存机制更受青睐,它能够在任务运行过程中及时地将文件和存档复制到任务节点以供使用。
当用户启动 个作业, Hadoop 将由 -files -archieves 选项所指定的文件复制 jobtracker 的文件系统(一般是 HDFS) 之中。接着,在任务运行之前, tasktracker 将文件从
jobtra cker 的文件系统中复制到本地磁盘一一缓存一一位任务能够访问文件。
 
tasktracker 为缓存中的文件各维护1个计数器来统计这些文件的被使用情况。当任务即将运行时,针对该文件所使用的所有文件的计数器值增1,当任务执行完毕之后,这些计数器值均减 1。当相关计数器值为0时,表明该文件没有被任何任务使用,可以从缓存中移除 缓存大小可以通过配置属性 local.cache.size 进行配置,以字节为单位。

 

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值