hadoop2.0 知识汇总

来源:互联网 发布:daxulu域名更换 编辑:程序博客网 时间:2024/05/01 22:53

1.hadoop1.x 使用的是自己的RPC库,序列化/反序列化需要对象实现Writable接口,而hadoop2.x 仍然沿用了hadoop1.x的RPC库,但默认序列化/反序列化使用的是Protocol Buffers(默认,可以更改)

2.Apache Avro 是为hadoop量身打造的RPC框架,不过它只作为日志序列化库使用

3.Hadoop2.x  ipc.server利用了线程池,事件驱动,Reactor设计模式

Hadoop2.x RPC内部实现源代码位于hadoop-common-project/hadoop-common/src/main/java下的org.apache.hadoop.ipc包中

而YARN对RPC的Protocol Buffers封装位于hadoop-yarn-project/hadoop-yarn/hadoop-yarn-common/src/main/java目录下的org.apache.hadoop.yarn.ipc包中

服务库位于源代码目录hadoop-common-project/hadoop-common/src/main/java下的org.apache.hadoop.yarn.service包中

事件库和状态机位于源代码目录中 hadoop-yarn-project/hadoop-yarn/hadoop-yarn-common/src/main/java下的org.apache.hadoop.yarn.envent 和org.apache.hadoop.yarn.state两个包中


4.hadoop2.x mapreduce RPC接口:

ApplicationClientProtocol: 用于client和RM之间

ApplicationMasterProtocol:用于ApplicationMaster与RM之间

ContainerManagementProtocol:用于ApplicationMaster与NM之间

当用户提交一个MapReduce应用程序时,需通过RPC协议ApplicationClientProtocol与ResourceManager通信,而一旦MapReduce的ApplicationMaster------MRAppMaster成功启动后,客户端通过另外一个RPC协议-------MRClientProtocol直接与MRAppMaster通信,已查询应用程序运行状况和控制应用程序的执行。


至今看到的最好的hadoop mapreduce流程的图片


当MapReduce模型中,reduce执行的任务为统计分类类型的值总量或去重后的数量,或最大值最小值时,可以考虑在Map输出后进行combine操作;这样可以减少网络传输带来的开销,同时减轻了reduce任务的负担。

但是:特别值得注意的一点,一个combiner只是处理一个结点中的的输出,而不能享受像reduce一样的输入(经过了shuffle阶段的数据),这点非常关键。具体原因查看下面的数据流解释:

融合combiner的数据流

 

0 0
原创粉丝点击