Hadoop(五)—— HDFS NameNode、DataNode工作机制

一、NN与2NN工作机制

Hadoop(五)—— HDFS NameNode、DataNode工作机制_第1张图片

NameNode(NN)

1、当HDFS启动时,会加载日志(edits)和镜像文件(fsImage)到内存中。

2-4、当元数据的增删改查请求进来时,NameNode会先将操作记录到日志中,之后再执行内存数据的增删改查

SecondNameNode(2NN)

1、SecondNameNode请求NameNode,请求是否需要checkPoint,checkPoint的触发条件:

  • 定时时间到
  • 日志文件满了

2-6、请求checkPoint,会将最近写的edits和fsImage拷贝到SecondNameNode本地,加载到内存中合并,生成fsImage.checkpoint。

7-8 将fsImage.checkpoint拷贝到NameNode,并更名为fsImage

二、Fs Image与Edits解析

到/usr/local/hadoop/Hadoop_tmp/dfs/name/current查看日志和fsImage

Hadoop(五)—— HDFS NameNode、DataNode工作机制_第2张图片

查看fsImage

hdfs oiv -p XML -i fsimage_0000000000000000131 -o fsimage.xml

得到结果



1000100601073741829131
1642416385DIRECTORY1576421043641fangzhijie:supergroup:rwxr-xr-x9223372036854775807-1
16386DIRECTORYfzj1575714994678fangzhijie:supergroup:rwxr-xr-x-1-1
16387DIRECTORYjiagoushi1575714994678fangzhijie:supergroup:rwxr-xr-x-1-1
16392DIRECTORYtmp1576021083427fangzhijie:supergroup:rwx-wx-wx-1-1
16393DIRECTORYhive1576021083443fangzhijie:supergroup:rwx-wx-wx-1-1
16394DIRECTORYfangzhijie1576022280367fangzhijie:supergroup:rwx-------1-1
16411DIRECTORYuser1576021954868fangzhijie:supergroup:rwxr-xr-x-1-1
16412DIRECTORYhive1576021954868fangzhijie:supergroup:rwxr-xr-x-1-1
16413DIRECTORYwarehouse1576021954868fangzhijie:supergroup:rwxr-xr-x-1-1
16414DIRECTORYbigdata1576021954868fangzhijie:supergroup:rwxr-xr-x-1-1
16417DIRECTORYtest1576326634124fangzhijie:supergroup:rwxr-xr-x-1-1
16418DIRECTORYhdfs1576327378643fangzhijie:supergroup:rwxr-xr-x-1-1
16419DIRECTORYclient1576326634124fangzhijie:supergroup:rwxr-xr-x-1-1
16420DIRECTORYclient11576327180252fangzhijie:supergroup:rwxr-xr-x-1-1
16421DIRECTORYclient21576327378643fangzhijie:supergroup:rwxr-xr-x-1-1
16422FILEhdfs-test123456.xml315763277810651576327780439134217728fangzhijie:supergroup:rw-r--r--10737418271004878


16423FILEhdfs-test123.xml215764188946301576418893994134217728fangzhijie:supergroup:rw-r--r--10737418281005878



0
16385163861642316422164171639216411
1638616387
1639216393
1639316394
1641116412
1641216413
1641316414
1641716418
16418164191642016421


16385
001

查看日志文件

hdfs oev -p XML -i edits_0000000000000000130-0000000000000000131 -o edits.xml

得到结果



  -63
  
    OP_START_LOG_SEGMENT
    
      130
    
  
  
    OP_END_LOG_SEGMENT
    
      131
    
  

三、NameNode故障处理

方案一

kill掉NameNode进程

将SecondNameNode的数据拷贝到NameNode中

重启NameNode

方案二

使用-importCheckpoint选项启动NameNode守护进程,从而将SecondNameNode中数据拷贝到NameNode目录中。

kill -9 NameNode

删除NameNode存储的数据

将SecondNameNode的数据拷贝到NameNode中

四、安全模式

NameNode进入安全模式的话,文件系统是只读的。

如何判断是否是进入安全模式

▶ ./hdfs dfsadmin -safemode get
19/12/21 23:44:39 WARN util.NativeCodeLoader: Unable to load native-hadoop library for your platform... using builtin-java classes where applicable
Safe mode is OFF

进入安全模式

local/hadoop/bin
▶ ./hdfs dfsadmin -safemode enter
19/12/21 23:53:50 WARN util.NativeCodeLoader: Unable to load native-hadoop library for your platform... using builtin-java classes where applicable
Safe mode is ON

Hadoop(五)—— HDFS NameNode、DataNode工作机制_第3张图片

退出安全模式

./hdfs dfsadmin -safemode leave

等待安全模式

./hdfs dfsadmin -safemode wait

等待的意思是,在安全模式状态是ON的时候,阻塞,直到状态变为OFF,阻塞才取消,开始执行后续的操作。

五、NameNode 高可用

dir

六、NameNode的ZKFC机制

dir

七、数据完整性

循环冗余校验(CRC)码

使用CRC校验码来保证数据的完整性。

CRC 算法的基本思想:将传输的数据当做一个位数很长的数。将这个数除以另一个数。得到的余数作为校验数据附加到原数据后面。

CRC码中,校验位(R位)在信息位(K位)后面.

例如,CRC生成多项式为G(X) = X4 + X + 1,要求出二进制序列10110011的CRC校验码。

多项式对应的二进制为10011

10011 为除数,10110011为被除数,按照异或的计算方式,同为0,异为1,则计算过程如下:

最后得到余数0100,即是校验位。那么整个CRC码为:10110011 0100

参考文档

循环冗余校验(CRC)码
HDFS:NameNode的Proxy该怎样做
字节跳动 EB 级 HDFS 实践

你可能感兴趣的:(Hadoop(五)—— HDFS NameNode、DataNode工作机制)