1 / 14
文档名称:

HDFS分析.docx

格式:docx   页数:14页
下载后只包含 1 个 DOCX 格式的文档,没有任何的图纸或源代码,查看文件列表

如果您已付费下载过本站文档,您可以点这里二次下载

分享

预览

HDFS分析.docx

上传人:ffy51856fy 2015/6/1 文件大小:0 KB

下载得到文件列表

HDFS分析.docx

相关文档

文档介绍

文档介绍:写流程分析---1、数据节点选择机制、管道建立机制、块持久化机制、包括块一致性和准确性校验机制等
读流程分析---1、块的选择机制、块的一致性和准确性校验机制、读取策略等
写的异常处理及恢复机制
读的异常处理和恢复机制
namenode与datanode的存储结构,及通信机制
不同数据节点之间,block的Copy机制
块的一致性校验机制
机架感知策略
backupnamenode的实现原理及作用
扩容和退服策略
数据重新平衡策略
安全模式---进入安全模式的机制
RPC通信
系统中的通讯,例如,(副本复制).任务向TT汇报执行进度,TT向JT汇报执行进度.
ClientProtocol:客户端调用协议,涉及文件操作,DFS管理,升级(DFSAdmin)
ClientDatanodenodeProtocol:更新块大小,传输中恢复操作,获取本地路径
DatanodeProtocol:DN与NN通讯协议,注册,BlockReport,心跳,升级
NamenodeProtocol: SN和NN通讯协议,通知NN使用新的fsimage和edit
RefreshAuthorizationPolicyProtocol, RefreshUserMappingsProtocol
版本控制
1,底层RPC高低版本头.
2,.
数据序列化反序列化
Client
Client代理模式,,当调用方法的时候实际调用的是Invoker, Invoker将协议,调用的方法名,参数,参数类型封装成Invocation->Call(id,返回值)对象经过client发送到server,放入map,并读取返回流,根据流中的id,判断是服务器返回的是那次调用的结果.
Connection线程负责读取Server返回值,根据读取的id,从map中获取call,设置返回值,唤醒调用线程(),
调用Client的线程发送完后会wait(Call)直到Connection获取到返回值.
读取时候如果超时()就发送一次ping,如果没有出现IOException就继续读取,Conneciton可以根据标识(地址,用户组信息,协议)共用.
Server
基于NIO,EPT事件,当有客户端连接过来,Accept后,从readers(treadpool)中选取一个Reader将客户端Channel注册到Reader中的NIO selector,并新建一个Connection对象关联客户端Channel,Reader关注OP_READ事件.
客户端建立连接后,首先发送的是ConnnectionHeader包含协议名,用户组信息,验证方法,,然后一直等待事件触发读取够长度,将读取的数据解码为调用id和param,新建一个Call对象(关联Connection)放入call队列中,handlers中的Handler会将Call中callQuene中取走,Call中的param实际为Invocation对象,包含调用方法名,参数名,参数类型,由这些信息使用Java反射API调用Server的instance对象,获取返回值,组织返回数据,写入Call的response(ObjectWritable)属性中,马上调用responder的doRespond方法,将Call加入到Connection的responseQuene最后,如果responseQuene长度等于1做一次NIO写操作,如果不能一次性能够将数据写完,将客户端channel注册到responder关注写事件OP_WRITE,下一次读取responseQuene的第一位写(保证一致),如果长度不为1证明该channel已经注册到了responder了直接加入队列,由responder线程后续处理.
NOTE:客户端关闭流后出发一次读操作,返回为-1,Server关闭连接
readers个数,handler个数,callQuene深度
为什么要NIO
CurCall与获取客户端IP
Handler获取一个Call后,会将Server的curCall(ThreadLocal类型)设置为当前的Call,调用Instance方法实际是在Handler线程中,在Instance的方法内就