知识点
通过:hdfs oev -i edits_inprogress_0000000000000000003 -o bbb.xml 查看edits_inprogress_0000000000000000003文件的内容,把内容输出到bbb.xml中,vim bbb.xml即可查看内容
1.当执行格式化指令时,会在指定的tmp目录下,生成/dfs/name目录(此目录在不设定dfs.namenode.name.dir时,在hadoop.tmp.dir配置的路径中。
2.当格式化后,启动hdfs前,会生成一个最初的fsimage_0000000000000000000文件
<!--- <<property>-->
<!--指定了nameNode元数据的存储位置-->
<!--
<name>dfs.namenode.name.dir</name>
<value>file:/usr/local/hadoop-2.6.4/hdfs/name</value>
</property>
<property>
<!--hadoop.tmp.dir 配置hadoop的namenode服务器元数据存放的位置-->
<name>hadoop.tmp.dir</name>
<value>/usr/local/hadoop-2.6.4/tmp</value>
</property>
)
3.在dfs/data目录,这是datanode节点存储数据块的目录
4.元数据的存储目录和数据节点的目录的路径可以分开
5.重启后,会在dfs/name/in_use.lock ,这个文件的作用是防止在同一台服务器上启动多个namenode,避免管理的混乱。
6.当启动hdfs时,会生成edits文件
7.hdfs有事务id的概念,当hdfs每接受一个事务操作(比如mkdir put mv),都会分配相应的事务id,然后写在edits文件中。
8。每当生成一个新的edits文件,edits文件中都会以begin log开头,当一个edits文件写完 后,会已end edit结束,即在beginlog====end log之间存储的事这个edits文件所有的事务操作。
9.edits-inprogress文件的作用是当前正在执行的事务操作。后边的编号是上一次事务id txid+1来命名。
10.初次使用hdfs时,有一个默认的edits和fsimage的合并周期是1分钟,以后再使用hdfs的过程中,edits-inprogress到达默认的合并周期(3600s)会执行。或者手动合并指令(hadoop dfsadmin -rollEdits),或者停止hdfs再启动
11.上传文件拆分很多事务过程
OP_ADD将文件假如到指定的HDFS目录下,并以_coping结尾,表示此文件还没写完
ALLOCATE_BLOCK_ID 为文件分配块ID
SET_GENSTAMP_V2为块生成时间戳版本号,是全局唯一的。
ADD_BLOCK写块数据
OP_CLOSE表示块数据写完了
OP_RENAME_OLD将文件重命名,表示写完了。
12,当停止hdfs再启动hdfs,执行一个事务后,会触发一次rolledits指令触发endlog事务,然后会产生一个新的edits
13seen_txid记录是最新的edits_inprogress文件末尾的数字
14.fsimage_N文件存储的N号事务前的所有的元数据信息
15.fsimage_00000000000000002.md5 存储的是fsimage文件的md5校验码