《Hadoop权威指南》---MapReduce的特性

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/hy_coming/article/details/82930542

一、计数器

在分析数据的时候需要考虑数据的有效性,否则将大大影响数据分析的效率。计数器就是收集作业信息的有效手段之一,用于质量控制或者应用级统计,当然也可以辅助诊断系统故障。

内置计数器:hadoop为每个作业维护若干内置计数器,以描述多项指标,如:任务计数器、文件系统计数器。

  • 任务计数器:采集任务的相关信息,每个作业的所有任务的结果会被聚集起来。由其关联任务维护,并定期发送给tasktracker,在由tasktracker发送给jobtracker。每次任务计数器值的传输都是完整的,避免了信息丢失带来的错误。
  • 作业计数器:由jobtracker(或者YARN中的应用宿主)维护,因此无需在网络间传输数据,这一点与“用户定义的计数器”在内的其他计数器不同。

用户自定义java计数器:用户编写程序来定义计数器,计数器的值可以在mapper或者reducer中增加,计数器由一个java枚举类型来定义,以便对有关的计数器分组。

  • 动态计数器:不由java枚举类型定义的计数器,因为java枚举类型的字段在编译阶段就必须指定。
  • 易读的计数器名称:计数器的默认名称是枚举类型的java完全限定类名,由于这种名称在web界面和终端上的可读性差,因此hadoop提供“资源捆绑”这种方式来修改计数器的显示名称。
  • 获取计数器:执行hadoop job -counter指令或者使用java API获取计数器的值。

二、排序

排序是MapReduce的核心技术,主要有部分排序、全排序、辅助排序。 

三、连接

MapReduce能够执行大型数据集间的“连接”操作,但是自己编写会比较麻烦,可以采用成熟的框架,如:Pig、Hive或者Cascading等。连接操作的具体实现技术取决于数据集的规模以及分区方式,如果一个数据集很大而另外一个数据集很小,以至于能分发到集群中的每一个节点上,这样则可以执行一个MapReduce作业。这种处理方式可以有两种:map端连接和reduce端连接,具体使用哪一个取决于数据的组织方式。

四、边数据分布

“边数据”是作业所需的额外的只读数据,以辅助处理主数据集。

五、MapReduce库类

hadoop为mapper和reducer提供了一个包含常用函数的库。

猜你喜欢

转载自blog.csdn.net/hy_coming/article/details/82930542
今日推荐