mgjj 发表于 2016-12-8 10:04:16

Hadoop源代码分析(一零)

  在继续分析DataNode之前,我们有必要看一下系统的工作状态。启动HDFS的时候,我们可以选择以下启动参数:

[*]FORMAT("-format"):格式化系统
[*]REGULAR("-regular"):正常启动
[*]UPGRADE("-upgrade"):升级
[*]ROLLBACK("-rollback"):回滚
[*]FINALIZE("-finalize"):提交
[*]IMPORT("-importCheckpoint"):从Checkpoint恢复。
  作为一个大型的分布式系统,Hadoop内部实现了一套升级机制(http://wiki.apache.org/hadoop/Hadoop_Upgrade)。upgrade参数就是为了这个目的而存在的,当然,升级可能成功,也可能失败。如果失败了,那就用rollback进行回滚;如果过了一段时间,系统运行正常,那就可以通过finalize,正式提交这次升级(跟数据库有点像啊)。
  importCheckpoint选项用于NameNode发生故障后,从某个检查点恢复。
  
  有了上面的描述,我们得到下面左边的状态图:

http://caibinbupt.iyunv.com/upload/attachment/54507/665faa54-4334-3735-8e65-daa6fd14b5a4.jpg
  大家应该注意到,上面的升级/回滚/提交都不可能一下就搞定,就是说,系统故障时,它可能处于上面右边状态中的某一个。特别是分布式的各个节点上,甚至可能出现某些节点已经升级成功,但有些节点可能处于中间状态的情况,所以Hadoop采用类似于数据库事务的升级机制也就不是很奇怪。
  大家先理解一下上面的状态图,它是下面我们要介绍DataNode存储的基础。
页: [1]
查看完整版本: Hadoop源代码分析(一零)