永久性数据结构
一、namedode的目录结构:
${dfs.name.dir}/current/VERSION
/edit
/fsiamge
/fstime
VERSION是一个java属性文件,其中包含正在运行的hadoop的版本信息
文件系统客户端执行写操作时(创建或移动文),这些操作首先被记录到edit日志中,内存维护元数据,eidt日志改变,元数据也随着更新,内存中的元数据支持客户端读数据
fsimage是文件系统中元数据的一个永久性检查点,并非每个操作都会更新fsimage,它是一个大型文件(可达几个GB),如果频繁更新会导致很慢。此功能类似windows 系统的还原点
如前所述,频繁操作edit日志会导致edit文件无限制增长,虽然这对namenode的运行没有影响,但是当namenode重启的时候会因为要恢复eidt里的内容而变得缓慢,解决此问题的方法是运行辅助的namenode,为主的namenode内存元数据创建检查点。
二、 datanode的目录结构
和namenode的目录结构不同的是,datanodede 目录结构是启动时候自动创建的而不需要进行格式化,其目录结构如下:
三、安全模式
namenode启动时首先将fsimage载入内存,并执行edit中的各项操作,一旦在内存中建立起文件系统元数据的映像,则创建一个新的fsimage文件和一个空的edit文件,此时namenode开始监听RFC和HTTP请求,但是此刻namenode运行于安全模式,对于客户端来说只是只读的。如果满足“最小复本条件”namenode会在30秒之后退出安全模式。
进入和离开安全模式
查看是否处于安全模式:%hadoop dsfadmin -safemode get
进入安全模式:%hadoop dsfadmin -safemode enter
离开安全模式:%hadoop dsfadmin -safemode leave
日志审计
hdfs的日志能够记录所有文件系统的访问请求,对日志进行审计是通过修改的log4j的文件级别进行实现的,在默认情况下log4j.property属性文件中日志阀值被设置成WARN,因为此特性未被启用,需要修改成INFO
四、工具
1.dfsadmin工具
2.fsck工具
fsck工具来检查HDFS文件系统的健康状况,它会检查文件系统中所有datanode中均缺失的块以及过多或过少的复本块。
3.datanode块扫描器
各个datanode运行一个扫描器,定期检查本节点上所有的块,从而在客户端读取之前及时检测和修复坏的块。默认情况下每隔三周就会检查块,以应对可能出现的磁盘故障。周期可由dfs.datanode.scan.period.hours属性设置。损坏的块报给namenode并及时修复。用户可以访问datanode的网页(http://datanode:50075/blockScannerReport)或取检查报告,通过listBlocks参数可以在报告中;列出所有块及其最新验证状态http://datanode:50075/blockScannerReport?Listblocks 。
4.均衡器
均衡器程序是hadoop的一个守护进程,它将块从忙碌的datanode移动到相对空闲的datanode,从而重新分配块,同时坚持块副本策略,将副本放置到不同的机架,以降低损坏率。可调用下面的指令启动均衡器:
%start-balancer.sh