设为首页 收藏本站
查看: 477|回复: 0

[经验分享] 比较全的hadoop分析,备用

[复制链接]

尚未签到

发表于 2016-12-6 11:13:34 | 显示全部楼层 |阅读模式
Hadoop 源代码分析(1)overview
http://caibinbupt.javaeye.com/blog/262412
Hadoop 源代码分析(2)package
http://caibinbupt.javaeye.com/blog/270378

Hadoop 源代码分析(3)org.apache.hadoop.io
http://caibinbupt.javaeye.com/blog/277640

Hadoop 源代码分析(4)

Hadoop 源代码分析(5)org.apache.hadoop.rpc
http://caibinbupt.javaeye.com/blog/278778
RPC(Remote Procedure Call Protocol)——远程过程调用协议,它是一种通过网络从远程计算机程序上请求服务,而不需要了解底层网络技术的协议。RPC协议假定某些传输协议的存在,如TCP或UDP,为通信程序之间携带信息数据。在OSI网络通信模型中,RPC跨越了传输层和应用层。RPC使得开发包括网络分布式多程序在内的应用程序更加容易。
RPC采用客户机/服务器模式。请求程序就是一个客户机,而服务提供程序就是一个服务器。当我们讨论HDFS的,通信可能发生在:
Client-NameNode之间,其中NameNode是服务器
Client-DataNode之间,其中DataNode是服务器
DataNode-NameNode之间,其中NameNode是服务器
DataNode-DateNode之间,其中某一个DateNode是服务器,另一个是客户端
Hadoop 源代码分析(6)org.apache.hadoop.rpc.Client
http://caibinbupt.javaeye.com/blog/280790

Hadoop 源代码分析(7)org.apache.hadoop.rpc.Server
http://caibinbupt.javaeye.com/blog/281281

Hadoop 源代码分析(8)org.apache.hadoop.rpc
http://caibinbupt.javaeye.com/blog/281476

Hadoop 源代码分析(9)HDFS Overview and DataNode
http://caibinbupt.javaeye.com/blog/282580

Hadoop 源代码分析(10)HDFS 工作状态
http://caibinbupt.javaeye.com/blog/282735

Hadoop 源代码分析(11)HDFS 升级,回滚,提交
StorageInfo, Storage, Storage.StorageDirectory, DataStorage
http://caibinbupt.javaeye.com/blog/283480
http://caibinbupt.javaeye.com/blog/283811

Hadoop 源代码分析(12)HDFS DataNode
FSDataSet, FSDataSet.FSVolumeset, FSDataSet.FSVolume, FSDataSet.FSDir, Block, BlockInfo
http://caibinbupt.javaeye.com/blog/284365

Hadoop 源代码分析(13)分析DataNode上的动态行为, 读Block的过程
DataXceiverServer, DataXceiver, BlockSender, BlockReceiver
http://caibinbupt.javaeye.com/blog/284979

Hadoop 源代码分析(14)HDFS 写Block的过程
http://caibinbupt.javaeye.com/blog/286259

Hadoop 源代码分析(15)HDFS 的其他操作
OP_READ_METADATA (82):读数据块元文件
OP_REPLACE_BLOCK (83):替换一个数据块
OP_COPY_BLOCK (84):拷贝一个数据块
OP_BLOCK_CHECKSUM (85):读数据块检验码
http://caibinbupt.javaeye.com/blog/286533

Hadoop 源代码分析(16)DataBlockScanner用于定时对数据块文件进行校验
http://caibinbupt.javaeye.com/blog/286650

Hadoop 源代码分析(17)DataNode
1) 在启动DataNode工作线程前,DataNode需要向NameNode注册
2) 注册成功后就可以启动DataNode线程。
3) DataNode的run方法,循环里有两种选择,升级(暂时不讨论)/正常工作。
4) 正常工作offerService也是个循环,在循环里,offerService会定时向NameNode发送心跳,报告系统中Block状态的变化,报告DataNode现在管理的Block状态。
5) 发送心跳和Block状态报告时,NameNode会返回一些命令,DataNode将执行这些命令。
6) ProcessCommand 处理一下命令:
  DNA_TRANSFER:拷贝数据块到其他DataNode
  DNA_INVALIDATE:删除数据块(简单方法)
  DNA_SHUTDOWN:关闭DataNode(简单方法)
  DNA_REGISTER:DataNode重新注册(简单方法)
  DNA_FINALIZE:提交升级(简单方法)
  DNA_RECOVERBLOCK:恢复数据块
http://caibinbupt.javaeye.com/blog/287870

Hadoop 源代码分析(18)NameNode
NameNode作为HDFS中文件目录和文件分配的管理者,它保存的最重要信息
http://caibinbupt.javaeye.com/blog/288546

Hadoop 源代码分析(19)INode
http://caibinbupt.javaeye.com/blog/288547

Hadoop 源代码分析(20)HDFS使用操作日志,保存更新
http://caibinbupt.javaeye.com/blog/289759

Hadoop 源代码分析(21)分析FSEditLog.java,该类提供了NameNode操作日志和日志文件的相关方法
http://caibinbupt.javaeye.com/blog/292073

Hadoop 源代码分析(22)对租约Lease进行分析及访问控制
http://caibinbupt.javaeye.com/blog/293367

Hadoop 源代码分析(23)分析FSDirectory
http://caibinbupt.javaeye.com/blog/296936

Hadoop 源代码分析(24)FSNamesystem (1) 分析FSNamesystem的成员变量
FSNamesystem是NameNode实际记录信息的地方,保存在FSNamesystem中的数据有:
1. 文件名<->数据块列表(存放在FSImage和日志中)
2. 合法的数据块列表(上面关系的逆关系)
3. 数据块<->DataNode(只保存在内存中,根据DataNode发过来的信息动态建立)
4. DataNode上保存的数据块(上面关系的逆关系)
5. 最近发送过心跳信息的DataNode(LRU)
http://caibinbupt.javaeye.com/blog/297800

Hadoop 源代码分析(25)FSNamesystem (2) NameNode 上线程的定义及SafeMode相关信息
1. NameNode上的线程,分别对应DataNode心跳检查,租约检查,安全模式检查和数据块复制,我们会在后面介绍这些线程对应的功能。
Daemon hbthread = null;   // HeartbeatMonitor thread
Daemon lmthread = null;   // LeaseMonitor thread
Daemon smmthread = null;  // SafeModeMonitor thread
Daemon replthread = null;  // Replication thread
2. 安全模式是这样一种状态,系统处于这个状态时,不接受任何对名字空间的修改,同时也不会对数据块进行复制或删除数据块。
3. 系统启动以后,DataNode会报告目前它拥有的数据块的信息,当系统接收到的Block信息到达一定门槛,同时每个Block都有dfs.replication.min个副本后,系统等待一段时间后就离开安全模式。
http://caibinbupt.javaeye.com/blog/297800

Hadoop 源代码分析(26)HDFS网络拓扑,Replication Target Chooser, Decommission
1. HDFS的网络拓扑(NetworkTopology,DNSToSwitchMapping)
2. HDFS Replication 选择 Target(ReplicationTargetChooser )
3. chooseTarget是ReplicationTargetChooser中最重要的方法,它通过内部的一个NetworkTopology对象,计算出一个DatanodeDescriptor数组,该数组就是选定的DataNode,同时,顺序就是最佳的数据流顺序
4. Decommission进程,例如,某节点被列入到不允许连接到NameNode的机器列表中(HostsFileReader),那么,该节点会进入Decommission状态,它上面的数据块会被复制到其它节点,复制结束后机器进入DatanodeInfo.AdminStates.DECOMMISSIONED,这台机器就可以从HDFS中撤掉。 http://caibinbupt.javaeye.com/blog/298079

Hadoop 源代码分析(27)分析NameNode.java的成员变量,然后两个类综合起来,分析它提供的接口,并配合说明接口上请求对应的处理流程。
http://caibinbupt.javaeye.com/blog/298592

Hadoop 源代码分析(28) NameNode上实现的ClientProtocol (1)
http://caibinbupt.javaeye.com/blog/299415

Hadoop 源代码分析(29) NameNode上实现的ClientProtocol (2)
http://caibinbupt.javaeye.com/blog/300045

Hadoop 源代码分析(30) NameNode上实现的ClientProtocol (3)
http://caibinbupt.javaeye.com/blog/301030
Hadoop 源代码分析(31) NameNode上实现的ClientProtocol (4)
http://caibinbupt.javaeye.com/blog/301030

Hadoop 源代码分析(32)DatanodeProtocol (1)
http://caibinbupt.javaeye.com/blog/301579

Hadoop 源代码分析(33)DatanodeProtocol (2)
http://caibinbupt.javaeye.com/blog/304604

Hadoop 源代码分析(34)DatanodeProtocol (3)
http://caibinbupt.javaeye.com/blog/305362

Hadoop 源代码分析(35)NameNode上还有一系列的线程,不断检查系统的状态
http://caibinbupt.javaeye.com/blog/306857

Hadoop 源代码分析(36)Secondary NameNode & NamenodeProtocol
http://caibinbupt.javaeye.com/blog/309224

Hadoop 源代码分析(37)Secondary NameNode Process
http://caibinbupt.javaeye.com/blog/314760
Hadoop 源代码分析(38)DFSClient (1)
http://caibinbupt.javaeye.com/blog/318046

Hadoop 源代码分析(39)DFSClient (2)
http://caibinbupt.javaeye.com/blog/318607

Hadoop 源代码分析(40)DFSClient (3)
http://caibinbupt.javaeye.com/blog/318813

Hadoop 源代码分析(41)DFSClient (4)
http://caibinbupt.javaeye.com/blog/318916

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.iyunv.com/thread-310490-1-1.html 上篇帖子: compile hadoop-2.5.x on OS X(macbook) 下篇帖子: hadoop + ffmpeg 分布式转码系统实践
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表