Hadoop学习笔记之一:Hadoop IPC
因为某些原因需要把前一段时间对Hadoop(版本基于0.20.2)的学习积累搬到这里,成为一个系列。写得会很简单,只为必要时给自己提醒。
IPC框架
所有Hadoop协议接口的实现都依赖Hadoop IPC;
Hadoop IPC的目标是通过RPC完成调用者(RPC::Invoker)对被调用者(RPC::Server)的方法调用,核心是对调用(即RPC::Invocation)的传递;
一个RPC客户端可以通过getProxy方法获取到RPC::Invoker,Invoker本质上是一个(is-a)客户端Client;Client将对RPC Server的方法调用封装为一个请求Call;在另一端,Hadoop的RPC服务器通过getServer方法获取到可提供协议接口(VersionedProtocol)方法实现的Server,方法的实现依赖将请求(Call)解析为调用(Invocation)后进行反射;
Client为每个连接构造一个Connection对象,以维护与连接有关的信息;Client将Call通过Connection传递给相应的Server;在Connection上,头部ConnectionHeader包含一些协议无关的信息,比如用户信息ugi、认证信息等。
服务器模型
Hadoop IPC框架中的Server采用了线程池的服务器模型,请求处理流程如上图。
Listener线程负责监听服务端口,为为进入的请求创建连接,并交给Reader线程处理;
Reader线程从连接中读出请求,放入callQueue队列;
Handler线程从callQueue队列中取出请求,解析请求的内容,调用相应的接口实现,将response内容交给Responder线程;
Responder线程负责将response送出。
Reader的个数由ipc.server.read.threadpool.size决定,默认为1;(为什么默认只使用1个reader?猜测因jvm 1.6开始epoll已经成为默认的nio selector,1个就够了)
Handler的个数在服务器创建时由具体的应用服务器传参,Namenode的handler个数由dfs.namenode.handler.count决定,默认为10;Datanode的handler个数由dfs.datanode.handler.count决定,默认为3;JobTracker的handler个数由mapred.job.tracker.handler.count决定,默认为10;TaskTracker的handler个数由map/reduce slot个数决定,是2倍的最大slot数;
callQueue的长度由handler个数及ipc.server.handler.queue.size决定,默认是handler*100,即平均为每个handler队列100个call。
Hadoop学习笔记之一:Hadoop IPC的更多相关文章
- [转帖]hadoop学习笔记:hadoop文件系统浅析
hadoop学习笔记:hadoop文件系统浅析 https://www.cnblogs.com/sharpxiajun/archive/2013/06/15/3137765.html 1.什么是分布式 ...
- Hadoop学习笔记—3.Hadoop RPC机制的使用
一.RPC基础概念 1.1 RPC的基础概念 RPC,即Remote Procdure Call,中文名:远程过程调用: (1)它允许一台计算机程序远程调用另外一台计算机的子程序,而不用去关心底层的网 ...
- Hadoop学习笔记【Hadoop家族成员概述】
Hadoop家族成员概述 一.Hadoop简介 1.1 什么是Hadoop? Hadoop是一个分布式系统基础架构,由Apache基金会所开发,目前Yahoo!是其最重要的贡献者. Hadoop实现了 ...
- 吴裕雄--天生自然HADOOP学习笔记:hadoop集群实现PageRank算法实验报告
实验课程名称:大数据处理技术 实验项目名称:hadoop集群实现PageRank算法 实验类型:综合性 实验日期:2018年 6 月4日-6月14日 学生姓名 吴裕雄 学号 15210120331 班 ...
- Hadoop学习笔记—6.Hadoop Eclipse插件的使用
开篇:Hadoop是一个强大的并行软件开发框架,它可以让任务在分布式集群上并行处理,从而提高执行效率.但是,它也有一些缺点,如编码.调试Hadoop程序的难度较大,这样的缺点直接导致开发人员入门门槛高 ...
- [Hadoop] Hadoop学习笔记之Hadoop基础
1 Hadoop是什么? Google公司发表了两篇论文:一篇论文是“The Google File System”,介绍如何实现分布式地存储海量数据:另一篇论文是“Mapreduce:Simplif ...
- Hadoop学习笔记(3) Hadoop I/O
1. HDFS的数据完整性 HDFS会对写入的所有数据计算校验和,并在读取数据时验证校验和.datanode负责在验证收到的数据后存储数据及其校验和.正在写数据的客户端将数据及其校验和发送到由一系列d ...
- Hadoop学习笔记(3) Hadoop文件系统二
1 查询文件系统 (1) 文件元数据:FileStatus,该类封装了文件系统中文件和目录的元数据,包括文件长度.块大小.备份.修改时间.所有者以及版权信息.FileSystem的getFileSta ...
- Hadoop学习笔记(3) Hadoop文件系统一
1. 分布式文件系统,即为管理网络中跨多台计算机存储的文件系统.HDFS以流式数据访问模式来存储超大文件,运行于商用硬件集群上.HDFS的构建思路为:一次写入.多次读取是最高效的访问模式.数据集通常由 ...
- 吴裕雄--天生自然Hadoop学习笔记:Hadoop简介
Hadoop是一个由Apache基金会所开发的分布式系统基础架构.用户可以在不了解分布式底层细节的情况下,开发分布式程序.充分利用集群的威力进行高速运算和存储.Hadoop实现了一个分布式文件系统(H ...
随机推荐
- 解决ios10以上点击缩放的问题
禁止ios10以上点击缩放,代码如下: <script> window.onload=function () { document.addEventListener('touchstart ...
- vue中filter的用法
test() { var arr1 = ["A", "B", "C","C","A"]; var r ...
- spark on yarn任务提交缓慢解决
1.为什么要让运行时Jar可以从yarn端访问spark2以后,原有lib目录下的大JAR包被分散成多个小JAR包,原来的spark-assembly-*.jar已经不存在 每一次我们运行的时候,如果 ...
- 一、程序设计与C语言
@程序:用特殊的编程语言编写的代码,用于表达如何解决问题. @编程语言的作用:编程语言不是用来和计算机交谈的,而是用它来描述要求计算机如何解决问的过程或方法.计算机只能执行(懂得)机器语言. @辗转相 ...
- (转)spring计划任务,springMvc计划任务,Spring@Scheduled,spring定时任务
一.计划任务实现类 1.用@Component注解标识计划任务类,这样spring可以自动扫描 2.在方法中使用注解标识要执行的方法:@Scheduled(cron="*/30 * * * ...
- git checkout .还可以恢复吗
说实话,希望很渺茫, 如果你在git checkout . 之前操作了git stash ,还是可以恢复的,操作如下: 最后修改文件恢复了! 但是如果你在git checkout .之前没有git ...
- git-代码同步至github
代码同步到github上 Last login: Wed Mar 27 13:53:06 on ttys001localhost:~ ligaijiang$ gitusage: git [--vers ...
- [Guitar self-practising] 【吉他练习王-节奏练习】曲目1 基本扫弦节奏练习
这本书来自吉他练习王-节奏练习, 大家可以自行到网上搜搜电子版看看. 扫弦练习: 将左手轻轻靠着琴弦, mute琴弦.右手拿上拨片, 节拍器60,左脚踏着节拍练习. note: 注意 “轻”(幅度轻, ...
- Hybrid设计--Hybrid中Native能力的设计
稍微成熟的团队,header一定是不利于业务的UI组件,这个组件会封装在view层,方便前端使用.对业务前端开发来说,不用关注header是如何实现的,只用框架层释放的API.(一个前端有一个自己的U ...
- 独立出properties的mybatis连接池
jdbc.driver=com.mysql.jdbc.Driver jdbc.url=jdbc:mysql://localhost:3306/java505?useSSL=true&chara ...