MapReduce常用三大组件
来源:互联网 发布:csol重狙弹道优化 编辑:程序博客网 时间:2024/05/22 12:30
1、MapReduce中的Combiner
1.1、什么是Combiner
Combiner是MapReduce程序中Mapper和Reducer之外的一种组件,他的作用在MapTask之后给MapTask的结果进行局部汇总,以减轻reducetask的计算负载,减少网络传输。1.2、如何使用Combiner
编写一个类,然后继承Reducer,reduce方法中写具体的Combiner逻辑,然后再job中设置Combiner组件:job.setCombinerClass(FlowSumCombine.class)
1.3、使用Combiner注意事项
Combiner和Reducer的区别在于运行的位置:Combiner是在每一个MapTask所在的节点运行,Reducer是接收全局所有的Mapper的输出结果。
Combiner的输出kv应该跟Reducer的输出kv类型要对应起来
Combiner的使用要非常谨慎,因为Combiner在MapReduce过程中可能调用也可能不调用,可能调一次,也可能调多次,所以:
Combiner使用原则:有或没有都不能影响业务逻辑,都不能影响最终结果。
2、MapReduce中的序列化
1.1、概述
Java的序列化是一个重量级序列化框架(Serializable),一个对象被序列化后,会附带很多额外的信息(各种校验信息,header,继承体系等),不便在于网络中高效传输,所以,hadoop自己开发了一套序列化机制(Writable),精简,高效。Hadoop中的序列化框架已经对基本类型和null提供了序列化的实现:
byte ByteWritable
Short ShortWritable
int IntWritable
long LonGWritable
float DloatWritable
double DoubleWritable
String Text
null NullWritable
1.2、Java序列化
实现implements Serializable接口1.3、自定义对象实现MapReduce框架的序列化
如果需要将自定义的bean放在key中传输,则还需要实现Comparable接口,因为MapReduce框架中的shuffle过程一定会对key进行排序,此时,自定义的bean实现的接口应该是:public class FlowBean implements WritableComparable<FlowBean>
无参构造、序列化方法、反序列化方法
3、MapReduce中的Sort
基本思路:实现自定义的bean来封装流量信息,并将bean作为map输出的key来传输MR程序在处理数据的过程汇总会对数据排序(map输出的kv对传输到reduce之前,会排序),排序是依据map输出的key,所以我们如果要实现自己需要的排序规则,则可以考虑排序因素放到key中,让key实现接口:WritableComparable,然后重写key的compareTo方法。
4、MapReduce中的Partitioner
基本思路:MapReduce中会将map输出的kv对,按照相同key分组,然后分发给不同的reducetask默认的分发规则为:根据key的hashcode%reducetask数来分发,所以:如果要是按照我们自己的需求分组,则需要改写数据分发(分组)组件Partitioner。自定义一个类,然后继承Partitioner,然后再job对象中,设置自定义Partitioner:
job.setPartitionerClass(类.class);
阅读全文
0 0
- MapReduce常用三大组件
- hadoop初识之二:三大组件(HDFS,MapReduce,Yarn)以及mapreduce运行在yarn上的过程
- 4.Flume三大组件Source、channel、Sink常用
- OpenStack三大组件
- Spring三大组件
- JavaWeb三大组件
- JavaWeb三大组件
- javaweb三大组件
- java三大组件
- MapReduce/GFS/BigTable三大技术资料
- MapReduce/GFS/BigTable三大技术资料
- MapReduce/GFS/BigTable三大技术资料
- Spring MVC 三大组件
- Log4j三大组件运行机制
- STL 三大组件介绍
- spring 三大基本组件
- javaweb三大组件--过滤器
- javaweb三大组件---监听器
- Just Do it
- 工作之余,放松心情
- Maven常用命令
- Android Studio快捷方式大全
- jenkins-fastlane 持续集成和自动化打包
- MapReduce常用三大组件
- 反转字符串02
- R中如何求众数
- ACM生涯总结
- 转载--Retrofit 2.0 使用教程
- JAVA 多态
- 家族_SSL 1896
- HTML5基础知识4
- java中权限修饰符的作用范围