一些hadoop分析的文章链接

来源:互联网 发布:html源码怎么安装 编辑:程序博客网 时间:2024/06/05 23:46


(
  
转自:http://hbase.iteye.com/blog/1024737
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 CallProtocol)——远程过程调用协议,它是一种通过网络从远程计算机程序上请求服务,而不需要了解底层网络技术的协议。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 andDataNode 
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;  // SafeModeMonitorthread 
Daemon replthread = null;  // Replicationthread 
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 NameNodeProcess 
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
原创粉丝点击