当前位置:首页 > 话题广场 > 教育专区 > 小学

【#NAME?】专题Hadoop框架:NameNode工作机制详解

一、储存机制

1、基本说明。

NameNode运行时元数据必须存储在内存中,并且必须在磁盘上备份元数据的fsImage。更新或添加元数据时,如果修改内存中的元数据,则操作记录将添加到不包含查询操作的edits日志文件中。

如果NameNode节点发生故障,可以通过FsImage和Edits的合并,重新把元数据加载到内存中,此时SecondaryNameNode专门用于fsImage和edits的合并。

2、工作流程

NameNode机制

  • NameNode格式化启动之后,首次会创建Fsimage和Edits文件;
  • 非首次启动直接加载FsImage镜像文件和Edits日志到内存中;
  • 客户端对元数据执行增删改操作会记录到Edits文件;
  • 然后请求的相关操作会修改内存中的元数据;

SecondaryNameNode机制

  • 询问NameNode是否需要CheckPoint,NameNode返回信息;
  • 如果需要SecondaryNameNode请求执行CheckPoint;
  • NameNode切割现有日志文件,新记录滚动写入新Edits文件;
  • 滚动前的编辑日志和镜像文件拷贝到SecondaryNameNode;
  • SecondaryNameNode加载Edits日志和FsImage镜像文件到内存合并;
  • 生成新的镜像文件fsimage.chkpoint后拷贝到NameNode;
  • NameNode将fsimage.chkpoint重新命名成fsimage;

3、CheckPoint设置

通过修改HDFS-de文件的相关配置,设置一些SecondaryNameNode的机制,例如每隔一小时执行一次。

<property> <name>d;/name> <value>3600</value> </property> <property> <name>d;/name> <value>1000000</value> <description>文件满1000000记录数</description> </property> <property> <name>d;/name> <value>60</value> <description> 1分钟检查一次文件记录数</description> </property >

二、文件信息

1、FsImage文件

NameNode内存中元数据序列化备份信息;

生成路径:基于NameNode节点

cd /o

查看文件

# 基本语法 hdfs oiv -p 转换文件类型 -i 镜像文件 -o 转换后文件输出路径

基于语法格式,操作上图中的文件:

# 转换文件 hdfs oiv -p XML -i fsimage_0000000000000000019 -o /data/fsimage.xml # 查看 cat /data/fsimage.xml

这样就可以看到一些元数据的信息。

2、Edits文件

存放HDFS文件的所有增删改操作的路径,会记录在Edits文件中。

基本语法

hdfs oev -p 转换文件类型 -i 日志文件 -o 转换后文件输出路径

查看文件

# 转换文件 hdfs oev -p XML -i edits_0000000000000000020-0000000000000000020 -o /data # 查看 cat /data

三、故障恢复

1、拷贝SecondaryNameNode数据

首先结束NameNode进程;

删除NameNode存储的数据;

[root@hop01 /] rm -rf /o*

拷贝SecondaryNameNode中数据到NameNode数据存储目录下;

# 注意SecondaryNameNode服务配置在hop03上 [root@hop01 /] scp -r root@hop03:/o* /o

重新启动NameNode进程;

2、基于Checkpoint机制

修改配置,同步到集群相关服务下,重启HDFS进程;

<property> <name>d;/name> <value>120</value> </property> <property> <name>d;/name> <value>/o;/value> </property>

结束NameNode进程;

删除NameNode存储的数据;

[root@hop01 /] rm -rf /o*

由于集群中SecondaryNameNode(在hop03)不和NameNode(在hop01)在一个主机节点上,需要将SecondaryNameNode存储数据的目录拷贝到NameNode存储数据的平级目录,并删除in_u文件;

[root@hop01 /]scp -r root@hop03:/o /o [root@hop01 namesecondary/] rm -rf in_u [root@hop01 dfs]$ ls data name namesecondary

导入检查点数据

[root@hop01 ] bin/hdfs namenode -importCheckpoint

重新启动NameNode

[root@hop01 ] sbin start namenode

四、多个目录配置

NameNode可以配置多本地目录,每个目录存放内容相同,增加运行的可靠性;

1、添加配置

# vim /opt//etc/hadoop/ # 添加内容如下 <property> <name>d;/name> <value>file:///${}/dfs/name01,file:///${}/dfs/name02</value> </property>

该配置需要同步集群下所有服务;

2、删除原有数据

集群下所有服务都需要执行该操作;

[root@hop01 ]# rm -rf data/ logs/

格式化NameNode之后重启集群服务。

五、安全模式

1、基本描述

NameNode刚启动时,会基于镜像文件和编辑日志在内存中加载文件系统元数据的映像,然后开始监听DataNode请求,该过程期间处于一个只读的安全模式下,客户端无法上传文件,在该安全模式下DataNode会发送最新的数据块列表信息到NameNode,如果满足最小副本条件,NameNode在指定时间后就会退出安全模式。

2、安全模式

  • 安全模式状态
/opt//bin/hdfs dfsadmin -safemode get
  • 进入安全模式
/opt//bin/hdfs dfsadmin -safemode enter
  • 退出安全模式
/opt//bin/hdfs dfsadmin -safemode leave
  • 等待安全模式
/opt//bin/hdfs dfsadmin -safemode wait

推荐阅读:GitHub源码和分类管理,持续更新

Hadoop框架:HDFS读写机制与API详解

Hadoop框架:HDFS简介与Shell管理命令

Hadoop框架:单服务下伪分布式集群搭建

Hadoop框架:集群模式下分布式环境搭建

大数据简介,技术体系分类整理

数据分析 | 基于智能标签,精准管理数据

数据分析 | 数据可视化图表,BI工具构建逻辑

1.《【#NAME?】专题Hadoop框架:NameNode工作机制详解》援引自互联网,旨在传递更多网络信息知识,仅代表作者本人观点,与本网站无关,侵删请联系页脚下方联系方式。

2.《【#NAME?】专题Hadoop框架:NameNode工作机制详解》仅供读者参考,本网站未对该内容进行证实,对其原创性、真实性、完整性、及时性不作任何保证。

3.文章转载时请保留本站内容来源地址,https://www.lu-xu.com/jiaoyu/2217025.html

上一篇

2010年大班班务总结专题之班级小总结

下一篇

中班《肠道》教案看这里!河北省邢台市:多措并举 推进中小学健康促进行动

#NAME??我来告诉你答案Python 的 __name__ 变量,到底是个什么东西?

#NAME??我来告诉你答案Python 的 __name__ 变量,到底是个什么东西?

#NAME?相关介绍,#《闪光瞬间》主题随笔第二阶段# 大家应该已经在很多python脚本中看到了__name__变量吧?它经常以这种方式出现在我们的节目中。 If _ _ name _ _==&#39; _ _ main...

#NAME?专题之浅析python 中__name__ = '__main__' 的作用!容易忽略的问题

#NAME?专题之浅析python 中__name__ = '__main__' 的作用!容易忽略的问题

#NAME?相关介绍,很多新手刚开始学习python的时候,经常会看到python中的_ _ name _ _ _=_ &#39; _ _ _ main _ _ _ _ &#39;这样的代码,可能很多新手在python中_...

#NAME?看这里!「Python」__name__ 是什么?

#NAME?看这里!「Python」__name__ 是什么?

#NAME?相关介绍,前言 浏览python文件或直接写python代码时,经常在代码末尾添加这样的代码行。 If _ _ name _ _==&#39; _ _ main _ _ &#39; : Func_name()那...

【#NAME?】专题超详细的Oracle19c修改数据库用户名教程

【#NAME?】专题超详细的Oracle19c修改数据库用户名教程

#NAME?相关介绍,概述 由于开发了许多视图来指定用户名,因此必须将数据库用户名srmpro修改为SRM。 以下为操作过程.. 1、停止应用 防止修改用户名密码后应用一直在发起错误连接,可事先查询哪个IP在连接数据库,然...

#NAME?专题之浅析python 中__name__ = '__main__' 的作用!容易忽略的问题

#NAME?专题之浅析python 中__name__ = '__main__' 的作用!容易忽略的问题

#NAME?相关介绍,很多新手刚开始学习python的时候,经常会看到python中的_ _ name _ _ _=_ &#39; _ _ _ main _ _ _ _ &#39;这样的代码,可能很多新手在python中_...

关于#NAME?我想说浅析python 中__name__ = '__main__' 的作用!容易忽略的问题

关于#NAME?我想说浅析python 中__name__ = '__main__' 的作用!容易忽略的问题

#NAME?相关介绍,很多新手刚开始学习python的时候经常会看到python 中__name__ = \&#39;__main__\&#39; 这样的代码,可能很多新手一开始学习的时候都比较疑惑,python 中__n...

【#NAME?】专题浅析python 中__name__ = '__main__' 的作用!容易忽略的问题

【#NAME?】专题浅析python 中__name__ = '__main__' 的作用!容易忽略的问题

#NAME?相关介绍,很多新手刚开始学习python的时候,经常会看到python中的_ _ name _ _ _=_ &#39; _ _ _ main _ _ _ _ &#39;这样的代码,可能很多新手在python中_...

【#NAME?】专题浅析python 中__name__ = '__main__' 的作用!容易忽略的问题

【#NAME?】专题浅析python 中__name__ = '__main__' 的作用!容易忽略的问题

#NAME?相关介绍,很多新手刚开始学习python的时候,经常会看到python中_ _ name _ _=\ &#39; _ _ _ main _ _ \ &#39;这样的代码,可能很多新手在python中_ _; 有...