hadoop_DataNode实现原理分析(0.20版本)

本文详细解析了Hadoop DataNode的启动过程,包括从数据目录获取、服务器名称确定、NameNode连接、数据目录状态分析、DataXceiverServer、InfoServer和RPCServer的启动,以及DataBlockScanner的工作原理。同时,介绍了DataNode如何存储和管理Block,包括文件和内存结构、Block文件格式以及DataXceiverServer的数据接收流程。文章还涵盖了DataNode的定期扫描、安全流程和核心逻辑。
摘要由CSDN通过智能技术生成

DataNode启动过程:

1.        从dfs.data.dir得到DataNode存储数据的目录

2.        得到dataNode服务器名称:从配置slave.host.name读取,如果没有,则尝试根据DNS读取,hadoop环境中机器识别以及网络拓扑结构组建请参见前面介绍NameNode的文章

3.        从config中得到NameNode地址,建立RPC连接,从NameNode处拿到版本号,和自己的版本号对比,如果不同,则说明NameNode和DataNode的hadoop jar包版本不同,不能使用,启动失败

4.        分析dataNode上每个dataDir的状态

a)        如判定文件夹是否存在,是否可读可写

b)        根据启动状态判定是否合法,如Formate时文件夹是否存在,Import时是否需要做数据升级等,其判断逻辑和NameNode一样,因为NameNode和DataNode存储数据到文件夹的操作都是storage类

5.        在端口dfs.datanode.address启动DataXceiverServer,用来和Client或DataNode之间传输block数据,配置dfs.datanode.max.xcievers控制DataNode同时建立的连接数,默认256,配置dfs.block.size默认的block大小,默认64M

6.        在端口dfs.datanode.http.address启动InfoServer

7.        在端口dfs.datanode.ipc.address启动RPCServer

8.        根据dfs.datanode.scan.period.hours配置的扫描间隔时间启动DataBlockScanner

9.        主线程中:

a)        检测升级过程

b)        定时和NameNod发送心跳包通信,从NameNode处拿回操作,如DNA_TRANSFER,DNA_INVALIDATE,DNA_SHUTDOWN等

                        i.             DNA_TRANSFER:传输block数据到其他DataNode,首先验证要传输的block是否有效,如果无效则会告知NameNode做相应处理,然后启动DataTransfer线程传输数据到指定DataNode,按照block传输逻辑做相应处理。

                      ii.             DNA_INVALIDATE:block无效(如block备份数过大,需要删除一些备份),将要删除的Block加到DataBlockScanner中,按照扫描逻辑做相应处理。

                     iii.             DNA_SHUTDOWN:表示要停止该DataNode,该命令是通过向NameNode发送

                     iv.             DNA_REGISTER:向NameNode发送注册消息,当NameNode重新启动时,NameNode处理DataNode发送来心跳包时,发现自己没有记录该DataNode的信息,就会让发送该命令,让DataNode重新注册。

                      v.             DNA_FINALIZE:

                     vi.             UC_ACTION_START_UPG

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值