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 ...
随机推荐
- windows版mysql5.7.18安装
windows版mysql5.7.18安装 初始化命令:C:\Program Files\MySQL\MySQL Server 5.7\bin\mysqld.exe --defaults-file=& ...
- 使用DigitalOcean控制台访问Droplet(远程服务器)
介绍 大多数用户将使用SSH,PUTTY或安装的控制面板管理他们的DigitalOcean Droplet. 但是,可能会出现阻止您使用这些方法访问Droplet的情况. 例如,更改网络或服务配置文件 ...
- double类型相减有小数误差
如 :19.9-9.9=9.9999999999999,而不是10double相减会转换成二进制,因double有效位数为 16位这就会出现存储小数位数不够的情况,这种情况下就会出现误差 //两个Do ...
- 装系统w7、ubuntu、centos等系统(一)
装w7系统准备 1.从老毛桃u盘启动盘制作工具_老毛桃u盘装系统_老毛桃pe_老毛桃官网下载装机版 2.一个正常使用的U盘,但容量大于4G,并且插入电脑保持连接 3.老毛桃装机版选择U盘启动-> ...
- HTTP协议和WEB框架
一.HTTP协议 <<HTTP权威指南>>读书笔记:https://www.cnblogs.com/qcssmd/p/5508150.html 一.HTTP简介 HTTP协议是 ...
- windows 邮槽mailslot 在服务程序内建立后客户端无权限访问(GetLastError() == 5)的问题
邮槽创建在服务程序内,可以创建成功, 但外部客户端连接时 m_hMailslot = CreateFile("\\\\.\\mailslot\\zdpMailslot",GENER ...
- 新手解读JSP
一.解读简单JSP代码(承接上篇文章中的代码) 1. <%@ page language="java" contentType="text/html; charse ...
- jmeter4.0 执行jmeter_server.bat报错
Jmeter分布式执行1.-------------------------------Jmeter4.0 执行jmeter_server.bat 报错,是由于4.0要手工生成密钥 bin目录下 ...
- pyqt常用窗口组件
扩展知识: 熟悉常用的窗口组件: 1 按钮类 QPushButton 普通按钮 QToolButton 工具按钮:通常在工具栏使用 QRadioButton 单选框 QCheckBox ...
- jquery简介未完成
jQuery jQuery是一个快速.简洁的javascript框架,是继prototype之后又一个优秀的代码库(或者javascript框架).jQuery设计的宗旨是writeLess,Do M ...