一、分布式文件系统采用主Master/从Slaves结构
1)namenode守护进程作为Master节点:维护hdfs的元数据信息[镜像文件+编辑日志]
2)datanode守护进程作为Slaves节点:以Block(块)的形式存储数据。
二、HDFS启动流程
-
Loading fsimage【加载镜像文件】
解释:镜像文件里存的就是元数据
,默认情况下只保留最新的两个镜像文件
首次加载集群时,加载镜像文件:{hadoop.tmp.dir}/dfs/name/fsimage_0000000000000000000
再次开启集群时,Loading fsimage {hadoop.tmp.dir}/dfs/name/current/fsimage_0000000000000000002
如何查看镜像镜像文件:hdfs oiv -p XML -i /home/dragon/tmp/dfs/name/current/fsimage_0000000000000000065 -o ~/fs02.xml
解释:-p 是以什么方式去查看 -i 后加输入的镜像文件路径 -o 后加输出的路径和输出命名问:一个集群用的越来越久,fsimage镜像文件是否会越来越大?
答:不一定fsimage存储的是目录信息,元数据,有可能在最后把目录都删除了,反而edits日志文件会越来越大 -
Loading edits【加载编辑日志】解释:编辑日志记录的是对集群的每次操作
首次开启集群时,无编辑日志
再次开启集群时,/home/hadoop/tmp/dfs/name/current/edits_0000000000000000003-0000000000000000003
如何查看编辑日志:hdfs oev -p XML -i edits_0000000000000000006-0000000000000000061 -o ~/edit_061.xml
-
Saving checkpoint【保存检查点】
首次开启集群时,无保存检查点
保存检查点机制防止因集群长时间运行导致edits_log文件过大,导致集群重启恢复过程过慢或损毁所做的保护机制。
检查点机制由secondarynamenode完成,做合并的工作,解决了集群的可靠性 -
Safe mode【退出安全模式】
解释:在这之前所有的集群操作不允许做编辑
三、checkpoint检查点
触发检查点的阈值:
-
每小时触发一次
<property> <name>dfs.namenode.checkpoint.period</name> <value>3600</value> <description> The number of seconds between two periodic checkpoints. </description> </property>
-
每100万次触发一次
<property> <name>dfs.namenode.checkpoint.txns</name> <value>1000000</value> <description> The Secondary NameNode or CheckpointNode will create a checkpoint of the namespace every 'dfs.namenode.checkpoint.txns' transactions, regardless of whether 'dfs.namenode.checkpoint.period' has expired. </description> </property>
-
每一分钟检查事务id是否为100万次
<property> <name>dfs.namenode.checkpoint.check.period</name> <value>60</value> <description> The SecondaryNameNode and CheckpointNode will poll the NameNode every 'dfs.namenode.checkpoint.check.period' seconds to query the number of uncheckpointed transactions. </description> </property>
四、安全模式
- 安全模式开启
$>hdfs dfsadmin -safemode get
#获取当前安全模式状态
$>hdfs dfsadmin -safemode enter
#进入安全模式状态
$>hdfs dfsadmin -safemode leave
#离开安全模式状态
$>hdfs dfsadmin -safemode wait
#等待当前安全模式状态 - 手动执行checkpoint,前提需进入到安全模式下
$>hdfs dfsadmin -safemode enter
$>hdfs dfsadmin -saveNamespace
$>hdfs dfsadmin -safemode leave - 滚动日志
$>hdfs dfsadmin -rollEdits