一个MapReuce作业的从开始到结束--第4章 DataNode节点启动分析

    从bin/hadoop中可知,DataNode节点对应的类DataNode类,它的源代码文件是hdfs/org/apache/hadoop/hdfs/server/datanode/DataNode.java

DataNode启动执行函数的次序:

[1]. 执行main函数,在main函数里,调用静态函数secureMain函数。

[2].secureMain函数里,调用startDataNode函数创建DataNode对象,DataNode节点进入运行状态,然后让DataNode执行join函数,等待线程终结。

[3].而在startDataNode函数,调用instantiateDataNode创建DataNode对象,然后,调用runDatanodeDaemon函数,让DataNode对象成为一个守护线程。

[4].函数runDatanodeDaemon是静态的,它很短,它让DataNode对象成为一个线程,代码如下:

dn.dataNodeThread = newThread(dn, dnThreadName);

dn.dataNodeThread.setDaemon(true);

dn.dataNodeThread.start();

这里,dn就是DataNode对象,它有一个线程变量dataNodeThread,根据第一行语句,让dn成为一个线程,并执行start()

[5].dataNode节点启动后,它始终运行在DataNode类的run函数,直到接收到终结命令。

[6].run函数里,运行一个无限循环,在循环里执行offerService函数。这种设计的优点在于,假设DataNode一旦因某种异常出错,仍然能够重新运行。

[7].offerService函数,运行一个无限循环,在循环中,DataNode节点向NameNode节点发送心跳,取回命令,执行诸如区块更新,检查等等任务。

[8].DataNode节点和NameNode节点之间的通信是通过RPC方式执行的。

转载于:https://my.oschina.net/u/3226063/blog/826098

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值