hadoop2.0 知识汇总

本文详细介绍了Hadoop2.x版本中RPC机制的变化,包括序列化方式的更新、IPC服务器的设计改进,以及YARN中对RPC接口的具体实现。此外还列举了MapReduce中常用的RPC接口,并对combiner的作用及其实现机制进行了说明。

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的数据流

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值