@tsing1226
2015-12-31T19:48:37.000000Z
字数 1755
阅读 863
hadoop
HDFS(Hadoop Distributed File System):分布式文件系统;
fsimage:镜像文件;
edits:编辑日志文件
NameNode初次启动
- HDFS格式化产生初始元数据,在格式化过程中,NameNode创建fsimage文件,并将fsimage信息存储在本地文件系统中。
当NameNode启动时读取本地fsimage文件,创建编辑日志edits且不会进入安全模式,NameNode等待DataNode注册与发送Block Report信息。
根据DataNode发送的块信息,NameNode检测块的个数是不是一致。
NameNode再次启动
NameNode启动后,文件系统出于安全模式,NameNode将fsimage(镜像文件)载入内存,并执行(replay)编辑日志(edits)的各项操作,并等待DataNode注册与发送Block Report信息,启动DataNode后文件系统将有30s的安全模式。
安全模式下,客户端访问NameNode时只能读取文件系统,不可以对文件系统进行写、删除等操作。
安全模式结束后,客户端对NameNode读写操作时,将在编辑日志中记录,并等待fsmage与edits加入到内存,生成新的fsimage文件和edits文件。
由于HDFS存储数据量比较大,编辑日志文件edits也将很大,SecondaryNameNode将fsimage、edits加载到内存中,并定时将两者合并成一个新的fsimage文件,并创建一个空的编辑日志文件edits;
HDFS有NameNode、DataNode两个组件,NameNode是HDFS的主控节点,有fsimage和edits。DataNode需要配置data本地存储目录。
- core-site.xml
<configuration>
<property>
<name>hadoop.tmp.dir</name>
<value>/opt/modules/hadoop-2.5.0/data/tmp</value>
</property>
</configuration>
- hdfs-site.xml
<configuration>
<property>
<name>dfs.namenode.name.dir</name>
<value>file://${hadoop.tmp.dir}/dfs/name</value>
</property>
<property>
<name>dfs.namenode.edits.dir</name>
<value>${dfs.namenode.name.dir}</value>
</property>
<property>
<name>dfs.datanode.data.dir</name>
<value>file://${hadoop.tmp.dir}/dfs/data</value>
</property>
</configuration>
HDFS是分布式存储、主从架构,采用副本机制,即一个NameNode节点和多个DataNode节点。
数据以块存储,采用副本机制,默认是3;
数据以块存储,采用副本机制,默认是3;
在创建块时创建块的元数据,存储块的信息;
NameNode全权管理块的复制,它周期性的从集群中的每个数据节点接收心跳信号和块状态报告,接收到心跳说明DataNode数据节点正常,如果超过10分钟不能收到某个DataNode的心跳,则该块不可用,则NameNode复制该DataNode的块数据到其他的DataNode上。
DataNode会在数据创建的三周验证其checksum,当NameNode发现对块有损坏时,将复制块到预期备份。