HDFS中NameNode、Secondary NameNode介绍及工作机制详细教程

12 篇文章 1 订阅
订阅专栏

HDFS集群包括,NameNode和DataNode以及Secondary Namenode。NameNode负责管理整个文件系统的元数据,以及每一个路径(文件)所对应的数据块信息;DataNode 负责管理用户的文件数据块,每一个数据块都可以在多个datanode上存储多个副本,Secondary NameNode用来监控HDFS状态的辅助后台程序,每隔一段时间获取HDFS元数据的快照。

一、NameNode和Secondary Namenode工作机制图

NameNode&Secondary NameNode工作机制
下面,针对机制图进行详解。

第一阶段:namenode启动

1、第一次启动namenode格式化后,创建fsimage和edits文件。如果不是第一次启动,直接加载编辑日志和镜像文件到内存;
2、客户端对元数据进行增删改的请求;
3、namenode记录操作日志,更新滚动日志;
4、namenode在内存中对数据进行增删改查(注意:查是不记录到edits中的)。

第二阶段:Secondary NameNode工作

1、Secondary NameNode询问namenode是否需要checkpoint,直接带回namenode是否检查结果;
★ checkpoint的意思是检查点,即向NameNode请求是否需要将edits和fsimage合并;
备注:checkpoint触发的条件:
a、定时时间到(系统默认为1小时)
b、edits中的数据满了(默认为100万的操作次数)

2、Secondary NameNode请求执行checkpoint;
3、namenode滚动正在写的edits日志,即将edits锁定,为了拷贝到Secondary NameNode进行后期的合并;
4、将滚动前的编辑日志和镜像文件拷贝到Secondary NameNode;
5、Secondary NameNode加载编辑日志和镜像文件到内存,并合并;
6、生成新的镜像文件fsimage.chkpoint;
7、拷贝fsimage.chkpoint到namenode;
8、namenode将fsimage.chkpoint重新命名成fsimage。

web端访问SecondaryNameNode

1、启动集群,可以参考 搭建hadoop集群的详细教程 ;
2、浏览器中输入:http://hadoop102:50070/status.html,这里需要注意,需前置在windows中维护好主机名,进而才能通过主机名访问,windows配置见 windows设置通过主机名访问网站;
3、查看SecondaryNameNode信息。

chkpoint检查时间参数设置

1、通常情况下,SecondaryNameNode每隔一小时执行一次。
[hdfs-default.xml]

<property>
  <name>dfs.namenode.checkpoint.period</name>
  <value>3600</value>
</property>

2、一分钟检查一次操作次数,当操作次数达到1百万,SecondaryNameNode执行一次。

<property>
  <name>dfs.namenode.checkpoint.txns</name>
  <value>1000000</value>
<description>操作动作次数</description>
</property>

<property>
  <name>dfs.namenode.checkpoint.check.period</name>
  <value>60</value>
<description> 1分钟检查一次操作次数</description>
</property>

二、镜像文件和编辑日志文件

1、概念
namenode被格式化之后,将在/opt/module/hadoop-2.7.2/data/tmp/dfs/name/current目录中产生如下文件

edits_0000000000000000000
fsimage_0000000000000000000.md5
seen_txid
VERSION

(1)Fsimage文件:HDFS文件系统元数据的一个永久性的检查点,其中包含HDFS文件系统的所有目录和文件idnode的序列化信息。
(2)Edits文件:存放HDFS文件系统的所有更新操作的路径,文件系统客户端执行的所有写操作首先会被记录到edits文件中。
(3)seen_txid文件保存的是一个数字,就是最后一个edits_的数字
(4)每次Namenode启动的时候都会将fsimage文件读入内存,并从00001开始到seen_txid中记录的数字依次执行每个edits里面的更新操作,保证内存中的元数据信息是最新的、同步的,可以看成Namenode启动的时候就将fsimage和edits文件进行了合并。

2、oiv查看fsimage文件
(1)查看oiv和oev命令

[root@hadoop102 current]$ hdfs

oiv:apply the offline fsimage viewer to an fsimage
oev:apply the offline edits viewer to an edits file
(2)基本语法
hdfs oiv -p 文件类型 -i镜像文件 -o 转换后文件输出路径
(3)案例实操

[root@hadoop102 current]$ pwd
/opt/module/hadoop-2.7.2/data/tmp/dfs/name/current

[root@hadoop102 current]$ hdfs oiv -p XML -i fsimage_0000000000000000025 -o /opt/module/hadoop-2.7.2/fsimage.xml

[root@hadoop102 current]$ cat /opt/module/hadoop-2.7.2/fsimage.xml

3、oev查看edits文件
(1)基本语法
hdfs oev -p 文件类型 -i编辑日志 -o 转换后文件输出路径
(2)案例实操

[root@hadoop102 current]$ hdfs oev -p XML -i edits_0000000000000000012-0000000000000000013 -o /opt/module/hadoop-2.7.2/edits.xml
[root@hadoop102 current]$ cat /opt/module/hadoop-2.7.2/edits.xml

三、滚动编辑日志

正常情况HDFS文件系统有更新操作时,就会滚动编辑日志。也可以用命令强制滚动编辑日志。滚动编辑日志(前提必须启动集群)

[root@hadoop102 current]$ hdfs dfsadmin -rollEdits

查看编辑日志:
http://hadoop102:50070/dfshealth.html#tab-startup-progress

四、SecondaryNameNode目录结构及好处

1、目录结构路径

[root@hadoop102 /]# /opt/module/hadoop-2.7.2/data/tmp/dfs/namesecondary/current

SecondaryNameNode的namesecondary/current目录和主namenode的current目录的布局相同。
2、好处
在主namenode发生故障时(假设没有及时备份数据),可以从SecondaryNameNode恢复数据。
方法一
将SecondaryNameNode中数据拷贝到namenode存储数据的目录,案例(模拟namenode故障,恢复namenode数据)如下:

(1)杀进程

[root@hadoop102 /]# kill -9 namenode进程

(2)删除namenode存储的数据(/opt/module/hadoop-2.7.2/data/tmp/dfs/name)

[root@hadoop102 /]# rm -rf /opt/module/hadoop-2.7.2/data/tmp/dfs/name/*

(3)拷贝SecondaryNameNode中数据到原namenode存储数据目录

[root@hadoop102 /]# cp -R /opt/module/hadoop-2.7.2/data/tmp/dfs/namesecondary/* /opt/module/hadoop-2.7.2/data/tmp/dfs/name/

(4)重新启动namenode

[root@hadoop102 /]# sbin/hadoop-daemon.sh start namenode

方法二
使用-importCheckpoint选项启动namenode守护进程,从而将SecondaryNameNode用作新的主namenode,案例如下:
(1)修改hdfs-site.xml中的

<property>
  <name>dfs.namenode.checkpoint.period</name>
  <value>120</value>
</property>

<property>
  <name>dfs.namenode.name.dir</name>
  <value>/opt/module/hadoop-2.7.2/data/tmp/dfs/name</value>
</property>

(1)kill -9 namenode进程

[root@hadoop102 /]# kill -9 namenode进程

(2)删除namenode存储的数据(/opt/module/hadoop-2.7.2/data/tmp/dfs/name)

[root@hadoop102 /]# rm -rf /opt/module/hadoop-2.7.2/data/tmp/dfs/name/*

(3)如果SecondaryNameNode不和Namenode在一个主机节点上,需要将SecondaryNameNode存储数据的目录拷贝到Namenode存储数据的平级目录。
★ 需要注意,SecondaryNameNode默认装在哪台主机是在hdfs-site.xml中配置的,如下:

<configuration>
	<property>
		<name>dfs.replication</name>
		<value>3</value>
	</property>

	<property>
        <name>dfs.namenode.secondary.http-address</name>
        <value>hadoop104:50090</value>
    </property>
</configuration>

如上的配置,SecondaryNameNode就装在了hadoop104这台机器,所以需要从hadoop104这台机器将SecondaryNameNode存储数据的目录拷贝到hadoop102这台机器的Namenode存储数据的平级目录。
(4)导入检查点数据

[root@hadoop102 dfs]# bin/hdfs namenode -importCheckpoint

(5)启动namenode

[root@hadoop102 hadoop-2.7.2]# sbin/hadoop-daemon.sh start namenode

如果提示文件锁了,可以删除in_use.lock

[root@hadoop102 /]# rm -rf /opt/module/hadoop-2.7.2/data/tmp/dfs/namesecondary/in_use.lock

五、安全模式

1、概述
Namenode启动时,首先将映像文件(fsimage)载入内存,并执行编辑日志(edits)中的各项操作。一旦在内存中成功建立文件系统元数据的映像,则创建一个新的fsimage文件和一个空的编辑日志。此时,namenode开始监听datanode请求。但是此刻,namenode运行在安全模式,即namenode的文件系统对于客户端来说是只读的。
系统中的数据块的位置并不是由namenode维护的,而是以块列表的形式存储在datanode中。在系统的正常操作期间,namenode会在内存中保留所有块位置的映射信息。在安全模式下,各个datanode会向namenode发送最新的块列表信息,namenode了解到足够多的块位置信息之后,即可高效运行文件系统。
如果满足“最小副本条件”,namenode会在30秒钟之后就退出安全模式。所谓的最小副本条件指的是在整个文件系统中99.9%的块满足最小副本级别(默认值:dfs.replication.min=1)。在启动一个刚刚格式化的HDFS集群时,因为系统中还没有任何块,所以namenode不会进入安全模式。
2、基本语法
集群处于安全模式,不能执行重要操作(写操作)。集群启动完成后,自动退出安全模式。
(1)bin/hdfs dfsadmin -safemode get (功能描述:查看安全模式状态)
(2)bin/hdfs dfsadmin -safemode enter (功能描述:进入安全模式状态)
(3)bin/hdfs dfsadmin -safemode leave (功能描述:离开安全模式状态)
(4)bin/hdfs dfsadmin -safemode wait (功能描述:等待安全模式状态)
3、案例:模拟等待安全模式
(1)先进入安全模式

[root@hadoop102 hadoop-2.7.2]# bin/hdfs dfsadmin -safemode enter

(2)执行下面的脚本
编辑一个脚本

#!/bin/bash
bin/hdfs dfsadmin -safemode wait
bin/hdfs dfs -put ~/hello.txt /root/hello.txt

(3)再打开一个窗口,执行

[root@hadoop102 hadoop-2.7.2]# bin/hdfs dfsadmin -safemode leave
hadoop NameNodeSecondaryNameNode工作原理
JimGray的博客
04-14 2028
什么是NameNode?     NameNode是整个文件系统的管理节点。它维护着整个文件系统的文件目录树,文件/目录的元信息和每个文件对应的数据块列表。接收用户的操作请求。文件包括: fsimage:元数据镜像文件。存储某一时段NameNode内存元数据信息。 edits:操作日志文件。 fstime:保存最近一次checkpoint的时间SecondaryNameNode的主要作用?
Hadoopnamenodesecondarynamenode工作机制讲解
09-30
Hadoop工作机制,FSImage和Edits日志是维护HDFS元数据的关键文件。FSImage是HDFS文件系统元数据的一个永久性检查点,它包含了整个文件系统的目录结构信息。而Edits日志记录了自上一次FSImage生成以来所有的...
hdfs-secondarynamenode.png
01-28
hdfs-secondarynamenode,nn2节点的作用,以及它的运行原理
Hadoop 教程 - HDFS之NameNodeSecondaryNameNode
最新发布
qq_33240556的博客
06-24 416
Hadoop Distributed File System (HDFS),NameNodeSecondary NameNode是两个关键组件,它们共同协作以维护文件系统的元数据和确保数据的可靠性。
NameNodeSecondary NameNode 的区别和作用
热门推荐
一个烂人的随手笔记
02-16 1万+
原文来自 : http://www.jianshu.com/p/5d292a9a8c86前言最近刚接触Hadoop, 一直没有弄明白NameNodeSecondary NameNode的区别和关系。很多人都认为,Secondary NameNode是NameNode的备份,是为了防止NameNode的单点失败的,直到读了这篇文章Secondary Namenode - What it really
图解: SecondaryNameNode工作原理
王傲旗的大数据之路
11-05 4931
1.前提: 不使用SNN,日志文件会很大,日志大会导致集群恢复到上次关机前的状态花费很长时间,这个时候集群处于安全模式,集群不可用,长时间处于安全安全模式 2.目标:加快集群的二次启动时速度.(减少集群二次启动的时间) SecondaryNameNode周期性复制NameNode的FSimage和Edits到本机(SecondaryNameNode本机),文件进行合并,最终生成全新的Fsimag...
HDFS SecondaryNameNode的原理和作用
data2tech的博客
05-24 1638
NameNode与fsimage、edits文件 NameNode(简称NN)负责管理和保存HDFS所有的元数据,包括但不限于文件/目录结构、文件权限、块ID/大小/数量、副本策略等等。当NameNode在运行时,元数据都是保存在内存,以保证响应时间。元数据同时也会持久化到磁盘,dfs.namenode.name.dir参数指定了元数据的磁盘保存路径。NameNode内部有两类文件用于持久化元数据: fsimag
王家林的“云计算分布式大数据Hadoop第九讲Hadoop图文训练课程:剖析NameNodeSecondary NameNode工作机制流程.
06-19
理解NameNodeSecondary NameNode工作机制对于优化Hadoop集群的性能和可靠性至关重要。在实际的Hadoop部署,根据集群规模和业务需求,合理配置这两个组件的参数,以及监控它们的运行状态,都是运维人员必须掌握...
HDFS篇08】NameNode故障处理1
08-04
在分布式文件系统HadoopHDFSHadoop Distributed File System),NameNode是核心组件,负责元数据的管理,包括文件系统命名空间和文件块的映射信息。当NameNode发生故障时,数据的可用性和系统的稳定性都会受到...
Hadoop Namenode恢复
09-02
本文将详细介绍 namenode 的恢复过程。 一、修改 conf/core-site.xml 文件 在 namenode 恢复过程,需要修改 conf/core-site.xml 文件,增加三条属性: 1. `<property><name>fs.checkpoint.period</name><value>...
图文详解HDFS工作机制.docx
11-14
HDFS 工作机制详解 HDFSHadoop Distributed File System)是分布式文件系统,它是谷歌的 GFS 提出后消灭的一种用户级文件系统,供应了一个高度容错和高吞吐量的海量数据存储处理方案。HDFSHadoop 生态的核心...
Hadoop(9)-HDFS的NameNodeSecondaryNameNode详解
weixin_30369087的博客
12-09 210
1.NN和2NN工作机制 首先,我们做个假设,如果存储在NameNode节点的磁盘,因为经常需要进行随机访问,还有响应客户请求,必然是效率过低。因此,元数据需要存放在内存。但如果只存在内存,一旦断电,元数据丢失,整个集群就无法工作了。因此产生在磁盘备份元数据的FsImage。 这样又会带来新的问题,当在内存的元数据更新时,如果同时更新FsImage,就会导致效率过低,但如果不更新,就...
Hadoop-HDFS的NameNodeSecondaryNameNode介绍及原理
clearlxj的博客
07-01 909
NameNodeSecondaryNameNode NN和2NN的工作机制 NameNode 的元数据是存储: 首先,我们做个假设,如果存储在 NameNode 节点的磁盘,因为经常需要进行随机访问,还有响应客户请求,必然是效率过低。因此,元数据需要存放在内存。但如果只存在内存,一旦断电,元数据丢失,整个集群就无法工作了。因此产生在磁盘备份元数据的FsImage。 这样又会带来新的问题,当在内存的元数据更新时,如果同时更新 FsImage,就会导致效率过低,但如果不更新,就会发生一致性问题,一
SecondaryNameNode讲解
依旧的博客
11-06 6216
简介 HA的一个解决方案。但不支持热备。配置即可。 执行过程:从NameNode上下载元数据信息(fsimage,edits),然后把二者合并,生成新的fsimage,在本地保存,并将其推送到NameNode,替换旧的fsimage. 默认在安装在NameNode节点上,但这样...不安全! 一、secondarynameNode工作原理 使用原因: 未使用secondar...
Hadoop】——HDFS读写过程、NameNodeSecondaryNameNode、DataNode工作机制
qq_42000631的博客
01-18 2072
Hadoop HDFS读写过程、NameNodeSecondaryNameNode、DataNode工作机制
HDFS读写数据流程&NameNodeSecondaryNameNode工作流程
weixin_42442967的博客
08-01 755
1)客户端通过DistributedFileSystem模块向NameNode请求上传文件,NameNode检查目标文件是否已存在,父目录是否存在。(2)NameNode返回是否可以上传。(3)客户端请求第一个Block上传到哪几个DataNode服务器上。(4)NameNode返回3个DataNode节点,分别为dn1、dn2、dn3。...
secondary namenode 检查点
dingqiu6346的博客
09-14 739
secondary namenode NameNode职责是管理元数据信息,DataNode的职责是负责数据具体存储,那么SecondaryNameNode的作用是什么?对很多初学者来说是非常迷惑的。它为什么会出现在HDFS。从它的名字上看,它给人的感觉就像是NameNode的备份。但它实际上却不是。 大家猜想一下,当HDFS集群运行一段事件后,就会出现下面一些问题:...
大数据 NameNode SecondaryNameNode 工作原理
暗夜zzzz
03-27 241
文章目录NameNode SecondaryNameNode 工作机制NameNode元数据储存问题引入Fsimage Edits 概念NameNode SecondaryNameNode 工作流程详述 NameNode SecondaryNameNode 工作机制 NameNode元数据储存问题引入 思考:NameNode的元数据是存储在哪里的? 首先,我们做个假设,如果存储在NameNod...
Secondary NameNode工作原理
大黄_sama
07-05 1072
一、NameNodeSecondary NameNode工作机制 工作流程图 1)第一阶段:NameNode 启动 (1)第一次启动 NameNode 格式化后,创建 Fsimage 和 Edits 文件。如果不是第一次启动,直接加载编辑日志和镜像文件到内存。 (2)客户端对元数据进行增删改的请求。 (3)NameNode 记录操作日志,更新滚动日志。 (4)NameNode 在内存对元数据进行增删改。 2)第二阶段:Secondary NameNode 工作 ...
hdfssecondary namenode
04-11
Secondary NameNodeHDFS的一个组件,它主要负责辅助NameNode进行一些管理工作,例如日志合并、内存管理等。同时,在NameNode失败时,它还可以快速恢复NameNode的某些状态。
写文章

热门文章

  • 制作本地yum源的详细教程 3797
  • HDFS中NameNode、Secondary NameNode介绍及工作机制详细教程 3127
  • Flink Evictors(驱逐器)最全解释 2627
  • windows设置通过主机名访问网站 2204
  • HDFS中DataNode工作机制详解 2155

分类专栏

  • java 2篇
  • flume 1篇
  • hadoop 12篇
  • Sqoop 1篇
  • hive 3篇
  • Linux 3篇
  • windows 1篇

最新评论

  • jsp的内置对象

    不正经的kimol君: 放弃不难,但坚持一定很酷!

最新文章

  • Flink Evictors(驱逐器)最全解释
  • jsp的内置对象
  • 关于路径的问题
2022年1篇
2020年21篇

目录

目录

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

lmh450201598

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或 充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值

PHP网站源码罗湖关键词按天计费南澳网页制作爱联网站设计石岩企业网站改版观澜网站定制布吉网站推广方案丹竹头网站优化按天收费爱联百度爱采购广州建网站坪地网站推广系统龙岗百姓网标王木棉湾建设网站广州网站改版广州网站推广吉祥如何制作网站吉祥网站搜索优化龙岗外贸网站制作平湖如何制作网站吉祥网络推广荷坳百度seo同乐网站搭建木棉湾百度标王民治关键词按天扣费吉祥seo网站推广坑梓SEO按效果付费光明网站推广方案龙华网站seo优化南澳seo优化大鹏百度竞价南联SEO按天收费歼20紧急升空逼退外机英媒称团队夜以继日筹划王妃复出草木蔓发 春山在望成都发生巨响 当地回应60岁老人炒菠菜未焯水致肾病恶化男子涉嫌走私被判11年却一天牢没坐劳斯莱斯右转逼停直行车网传落水者说“没让你救”系谣言广东通报13岁男孩性侵女童不予立案贵州小伙回应在美国卖三蹦子火了淀粉肠小王子日销售额涨超10倍有个姐真把千机伞做出来了近3万元金手镯仅含足金十克呼北高速交通事故已致14人死亡杨洋拄拐现身医院国产伟哥去年销售近13亿男子给前妻转账 现任妻子起诉要回新基金只募集到26元还是员工自购男孩疑遭霸凌 家长讨说法被踢出群充个话费竟沦为间接洗钱工具新的一天从800个哈欠开始单亲妈妈陷入热恋 14岁儿子报警#春分立蛋大挑战#中国投资客涌入日本东京买房两大学生合买彩票中奖一人不认账新加坡主帅:唯一目标击败中国队月嫂回应掌掴婴儿是在赶虫子19岁小伙救下5人后溺亡 多方发声清明节放假3天调休1天张家界的山上“长”满了韩国人?开封王婆为何火了主播靠辱骂母亲走红被批捕封号代拍被何赛飞拿着魔杖追着打阿根廷将发行1万与2万面值的纸币库克现身上海为江西彩礼“减负”的“试婚人”因自嘲式简历走红的教授更新简介殡仪馆花卉高于市场价3倍还重复用网友称在豆瓣酱里吃出老鼠头315晚会后胖东来又人满为患了网友建议重庆地铁不准乘客携带菜筐特朗普谈“凯特王妃P图照”罗斯否认插足凯特王妃婚姻青海通报栏杆断裂小学生跌落住进ICU恒大被罚41.75亿到底怎么缴湖南一县政协主席疑涉刑案被控制茶百道就改标签日期致歉王树国3次鞠躬告别西交大师生张立群任西安交通大学校长杨倩无缘巴黎奥运

PHP网站源码 XML地图 TXT地图 虚拟主机 SEO 网站制作 网站优化