-
Namenode
2017-07-13 17:00:35Namenode管理着文件系统的Namespace。它维护着文件系统树(filesystem tree)以及文件树中所有的文件和文件夹的元数据(metadata)。Namenode记录着每个文件中各个块所在的数据节点的位置信息,这些信息会在系统...Namenode管理着文件系统的Namespace。它维护着文件系统树(filesystem tree)以及文件树中所有的文件和文件夹的元数据(metadata)。Namenode记录着每个文件中各个块所在的数据节点的位置信息,这些信息会在系统启动时从数据节点重建。
Namenode 结构图:
客户端代表用户与namenode和datanode交互访问整个文件系统。
Datanode是文件系统的工作节点,他们根据客户端或者是namenode的调度存储和检索数据,并且定期向namenode发送他们所存储的块(block)的列表。
Namenode容错机制:
没有Namenode,HDFS就不能工作。事实上,如果运行namenode的机器坏掉的话,系统中的文件将会完全丢失,因为没有其他方法能够将位于不同datanode上的文件块(blocks)重建文件。因此,namenode的容错机制非常重要,Hadoop提供了两种机制。
第一种方式是将持久化存储在本地硬盘的文件系统元数据备份。Hadoop可以通过配置来让Namenode将他的持久化状态文件写到不同的文件系统中。这种写操作是同步并且是原子化的。比较常见的配置是在将持久化状态写到本地硬盘的同时,也写入到一个远程挂载的网络文件系统。
第二种方式是运行一个辅助的Namenode(Secondary Namenode)。 事实上Secondary Namenode并不能被用作Namenode它的主要作用是定期的将Namespace镜像与操作日志文件(edit log)合并,以防止操作日志文件(edit log)变得过大。通常,Secondary Namenode 运行在一个单独的物理机上,因为合并操作需要占用大量的CPU时间以及和Namenode相当的内存。辅助Namenode保存着合并后的Namespace镜像的一个备份,万一哪天Namenode宕机了,这个备份就可以用上了。
但是辅助Namenode总是落后于主Namenode,所以在Namenode宕机时,数据丢失是不可避免的。在这种情况下,一般的,要结合第一种方式中提到的远程挂载的网络文件系统(NFS)中的Namenode的元数据文件来使用,把NFS中的Namenode元数据文件,拷贝到辅助Namenode,并把辅助Namenode作为主Namenode来运行。
SecondNamenode是对主Namenode的一个补充,它会周期的执行对HDFS元数据的检查点。 当前的设计仅仅允许每个HDFS只有单个SecondNamenode结点。
SecondNamenode是有一个后台的进程,会定期的被唤醒(唤醒的周期依赖相关配置)执行检查点任务,然后继续休眠。 它使用ClientProtocol协议与主Namenode通信。
SecondNamenode最好与Namenode部署到不同的服务器( 应该在merge的过程中,SecondNamenode对内存的需求与Namenode是相同的,所以对于那些 大型的生产系统中,如果将两者部署 到同台服务器 上,在 内存上会出现 瓶颈。) SecondaryNameNode是NameNode的冷备份 ,如果NameNode意外终止,需要人工切换。
-
每次开机都需要 重新格式化 才有 NameNode进程 的解决方法
2020-10-24 10:04:19每次开机都需要重新格式化,才能启动NameNode进程?这个问题是有办法解决的。每次开机启动Hadoop的时候,发现都没有NameNode进程,得重新格式化NameNode才能启动。下面说下怎样解决这个问题。
一、 问题描述
搭建完完全分布式模式,在启动Hadoop时发现没有NameNode进程,接着格式化NameNode后再重启,可以启动这个进程了,可下一次开机又是无法启动,每次都要重新格式化。
二、 问题分析
因为 默认的 tmp文件 每次重新开机都会被清空,造成NameNode的格式化信息丢失,所以每次开机都需要格式化才能启动NameNode进程。
三、 解决方法
我们可以通过 重新配置一个tmp文件目录 来解决这个问题。
下面分别演示通过Xftp去查找修改,和通过命令去查找修改的解决方法。如果是习惯使用图形界面操作的话,可以通过Xftp来找到文件修改进而解决问题。
3.1 演示一:通过图形界面形式解决
先在 /home目录 的用户目录下创建一个名为
hadoop_tmp
的目录(Xftp直接右键选择新建文件夹)接着找到 hadoop配置目录 中的
core-site.xml
文件(下图是先切换到 /root用户目录 ,再点击安装hadoop时创建的软连接进去找的。这个要根据自己的路径去找。)
以记事本的形式打开这个文件,加上以下内容<property> <name>hadoop.tmp.dir</name> <value>/home/XXX/hadoop_tmp</value> <description>A base for other temporary directories.</description> </property>
注意: XXX 这个位置,填写你自己的用户名,记得根据自己的情况修改。
在重新格式化hadoop namenode -format
最后启动集群,再执行
jps
命令就可以看到有NameNode进程启动了。关掉虚拟机重新打开,也不用再格式化就可以看到启动NameNode进程了。
3.2 演示二:以命令的形式解决
同样的,先切换到 /home目录 的用户目录下
接着,创建一个
hadoop_tmp
目录(如果不是以管理员权限操作的话,要在命令前加 sudo )mkdir ~/hadoop_tmp
输入
ls
命令查看再找到安装的 hadoop目录 中的
core-site.xml
文件(根据自己的情况查找,如果真的不知道安装到哪里了,推荐通过Xftp的图形界面查找,那样的话查看起来会方便一点。)
再执行下面的命令( gedit 这个位置,可以用 vi 或者 vim 替代)gedit core-site.xml
添加下面的内容(XXX这个位置,改为你的用户名)
<property> <name>hadoop.tmp.dir</name> <value>/home/XXX/hadoop_tmp</value> <description>A base for other temporary directories.</description> </property>
重新格式化
hadoop namenode -format
最后重启集群,再执行
jps
命令验证,就可以启动NameNode进程了,并且下次开机也不用重新格式化,就有NameNode进程了。
如果文章对你有帮助,请点个赞,顺带留给评论支持一下😉,若有疑问可以私信留言😉。如果能给个三连(点赞、收藏、关注 )就最好啦😁。
-
NameNode和SeondaryNameNode解析+NameNode故障处理
2020-07-20 08:43:29目录NN和2NN工作机制工作流程详细解释:CheckPoint时间设置NameNode故障处理 NN和2NN工作机制 工作流程 第一阶段:NameNode启动 (1)第一次启动NameNode格式化后,创建Fsimage和Edits文件。如果不是第一次启动,...NN和2NN工作机制
工作流程
-
第一阶段:NameNode启动
(1)第一次启动NameNode格式化后,创建Fsimage和Edits文件。如果不是第一次启动,直接加载编辑日志和镜像文件到内存
(2)客户端对元数据进行增删改的请求
(3)NameNode记录操作日志,更新滚动日志
(4)NameNode在内存中对元数据进行增删改 -
第二阶段:Secondary NameNode工作
(1)Secondary NameNode询问NameNode是否需要CheckPoint直接带回NameNode是否检查结果
(2)Secondary NameNode请求执行CheckPoint
(3)NameNode滚动正在写的Edits日志
(4)将滚动前的编辑日志和镜像文件拷贝到Secondary NameNode
(5)Secondary NameNode加载编辑日志和镜像文件到内存,并合并
(6)生成新的镜像文件fsimage.chkpoint
(7)拷贝fsimage.chkpoint到NameNode
(8)NameNode将fsimage.chkpoint重新命名成fsimage
详细解释:
Fsimage是NameNode内存中元数据序列化后形成的文件。
Edits是记录客户端更新元数据信息的每一步操作(可通过Edits运算出元数据)。
NameNode启动时,先滚动Edits并生成一个空的edits.inprogress,然后加载Edits和Fsimage到内存中,此时NameNode内存就持有最新的元数据信息。
Client开始对NameNode发送元数据的增删改的请求,这些请求的操作首先会被记录到edits.inprogress中(查询元数据的操作不会被记录在Edits中,因为查询操作不会更改元数据信息),如果此时NameNode挂掉,重启后会从Edits中读取元数据的信息。然后,NameNode会在内存中执行元数据的增删改的操作。
由于Edits中记录的操作会越来越多,Edits文件会越来越大,导致NameNode在启动加载Edits时会很慢,所以需要对Edits和Fsimage进行合并(所谓合并,就是将Edits和Fsimage加载到内存中,照着Edits中的操作一步步执行,最终形成新的Fsimage)。SecondaryNameNode的作用就是帮助NameNode进行Edits和Fsimage的合并工作。
SecondaryNameNode首先会询问NameNode是否需要CheckPoint(触发CheckPoint需要满足两个条件中的任意一个,定时时间到和Edits中数据写满了)。直接带回NameNode是否检查结果。
SecondaryNameNode执行CheckPoint操作,首先会让NameNode滚动Edits并生成一个空的edits.inprogress,滚动Edits的目的是给Edits打个标记,以后所有新的操作都写入edits.inprogress,其他未合并的Edits和Fsimage会拷贝到SecondaryNameNode的本地,然后将拷贝的Edits和Fsimage加载到内存中进行合并,生成fsimage.chkpoint,然后将fsimage.chkpoint拷贝给NameNode,重命名为Fsimage后替换掉原来的Fsimage。NameNode在启动时就只需要加载之前未合并的Edits和Fsimage即可,因为合并过的Edits中的元数据信息已经被记录在Fsimage中。CheckPoint时间设置
(1)通常情况下,SecondaryNameNode每隔一小时执行一次。如果配置时间可修改
hdfs-default.xml文件<property> <name>dfs.namenode.checkpoint.period</name> <value>3600</value> </property>
(2)一分钟检查一次操作次数,3当操作次数达到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 >
NameNode故障处理
NameNode故障后,可以采用如下两种方法恢复数据。
方法一:将SecondaryNameNode中数据拷贝到NameNode存储数据的目录;
- kill -9 NameNode进程
- 删除NameNode存储的数据(/HMY/module/hadoop-2.7.2/data/tmp/dfs/name)
- 拷贝SecondaryNameNode中数据到原NameNode存储数据目录
scp -r didi@hadoop104:/HMY/module/hadoop-2.7.2/data/tmp/dfs/namesecondary/* ./name/ - 重新启动NameNode
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>
- kill -9 NameNode进程
- 删除NameNode存储的数据(/HMY/module/hadoop-2.7.2/data/tmp/dfs/name)
rm -rf /HMY/module/hadoop-2.7.2/data/tmp/dfs/name/* - 如果SecondaryNameNode不和NameNode在一个主机节点上,需要将SecondaryNameNode存储数据的目录拷贝到NameNode存储数据的平级目录,并删除in_use.lock文件
/HMY/module/hadoop-2.7.2/data/tmp/dfs/namesecondary ./ - 导入检查点数据(等待一会ctrl+c结束掉)
bin/hdfs namenode -importCheckpoint - 启动NameNode
sbin/hadoop-daemon.sh start namenode
-
-
执行start-all.sh启动Hadoop时 没有NameNode 的解决方法
2020-12-01 11:04:22介绍怎样解决启动Hadoop后 没有NameNode 的问题。搭建完全分布式模式后,在启动hadoop的时候,发现主节点(Master)上没有运行NameNode节点。
一、 问题描述
执行命令
jps
验证Hadoop进程,没有名称节点NameNode,如下图所示。二、 解决方法
先执行这条命令关闭Hadoop进程
stop-all.sh
接着对NameNode进行格式化
hadoop namenode -format
格式化完成后,再次打开进程
start-all.sh
再次输入命令验证Hadoop进程
jps
如果每次开机都需要重新格式化,才能启动NameNode进程,可以参考这篇文章:解决每次开机都需要重新格式化才有NameNode进程的问题 。
-
Hadoop 格式化namenode错误 FATAL namenode NameNode Exception inna
2018-11-14 04:01:31Hadoop 格式化namenode错误 FATAL namenode NameNode Exception inna -
Windows格式化namenode 报错 - ERROR namenode.NameNode: Failed to start namenode.
2020-10-13 14:32:5420/10/13 13:58:04 ERROR namenode.NameNode: Failed to start namenode. java.lang.IllegalArgumentException: URI has an authority component at java.io.File.<init>(File.java:423) at org.apache.... -
NameNode 和 secondary NameNode
2016-11-21 21:27:41在Hadoop中NameNode 和 secondary NameNode是两个比较容易迷惑的知识,其实没有那么神秘NameNode 和 secondary NameNode就是两个进程 NameNode HDFS集群上有两类节点,一种是管理者一种是工作者,NameNode就是管理... -
Hadoop 格式化namenode错误:FATAL namenode.NameNode: Exception innamenode join
2014-03-28 13:05:06ERROR namenode.NameNode: java.io.IOException: Cannot create directory /export/home/dfs/name/currentERROR namenode.NameNode: java.io.IOException: Cannot remove current directory: /usr/local/hadoop/hdfs -
NameNode和Secondary NameNode的关系
2020-06-02 17:06:55NameNode: NameNode把改动写到文件系统edit logs上 在启动的时候读取fsimage(1)并跟edit logs合并 Secondary NameNode: 定时查询NameNode上的edit logs 把edit logs改动更新到fsimage(2)上并产生新的镜像... -
NameNode相关
2020-05-08 16:22:05namenode元数据被破坏 java.io.IOException: There appears to be a gap in the edit log. We expected txid 1, but got txid 16. namenode进程中出现如下报错信息 原因:namenode元数据被破坏,需要修复 解决:恢复... -
Secondary NameNode
2019-08-18 09:56:05浅析 Secondary NameNode(辅助namenode) 在初学Hadoop时,有个让人疑惑的概念:Secondary NameNode,也叫辅助namenode。从命名看,好像是第二个namenode,用于备份主namenode,在主namenode失败后启动。那么,... -
【大数据报错】ERROR namenode.NameNode: Failed to start namenode.
2019-02-07 22:22:21ERROR namenode.NameNode: Failed to start namenode. 场景: 搭建hadoop3.1.1的HA分布式环境时,格式化node01节点后,在node02执行以下命令同步数据: hdfs namenode -bootstrapStandby 报错 2019-02-07 21:18:14,... -
NameNode&Secondary NameNode工作机制
2019-10-06 23:06:34NameNode&Secondary NameNode工作机制图解: 第一阶段:namenode启动 (1)第一次启动namenode格式化后,创建fsimage和edits文件。如果不是第一次启动,直接加载编辑日志(edits)和镜像文件(fsimage)到内存... -
NameNode和Secondary NameNode工作机制
2019-11-27 11:52:01Namenode启动时,会先将镜像文件载入到内存,并执行编辑日志中的各项操作。一旦在内存中成功建立文件系统元数据的镜像,则创建一个新的fsimage文件,和一个空的编辑日志。此时namenode开始监听DataNode请求,此时... -
NameNode概述
2020-02-23 17:11:30参考: HDFS NameNode内存全景 1.概述 从NameNode涉及到的主要操作来讲,主要概念如下: 目录树:命名空间namespace 数据块管理 租约管理 FSNamesystem:NameNode逻辑门面类 NameNode HA下的启动与停止 从内存的... -
NameNode 和 Secondary NameNode 的区别和作用
2018-05-28 22:29:04本文转自:https://blog.csdn.net/remote_roamer/article/details/50675059前言最近刚接触...很多人都认为,Secondary NameNode是NameNode的备份,是为了防止NameNode的单点失败的,直到读了这篇文章Secondary Nam... -
002-NameNode 和 Secondary NameNode
2018-09-05 17:28:46NameNode 和 Secondary NameNode NameNode 和 Secondary NameNode NameNode:主要是用来保存 HDFS 的元数据信息,比如命名空间信息,块信息等。当它运行的时候,这些信息是存在内存中的。但是这些信息也... -
namenode和datanode工作机制_HDFS中NameNode和Secondary NameNode工作机制
2021-01-12 05:54:45NameNode工作机制0)启动概述Namenode启动时,首先将映像文件(fsimage)载入内存,并执行编辑日志(edits)中的各项操作。一旦在内存中成功建立文件系统元数据的映像,则创建一个新的fsimage文件和一个空的编辑日志。... -
Hadoop 格式化namenode错误:FATAL namenode.NameNode: Exception innamenode join 解决办法
2016-11-05 18:07:52Hadoop 格式化namenode错误:FATAL namenode.NameNode: Exception innamenode join RROR namenode.NameNode: java.io.IOException: Cannot create directory /export/home/dfs/name/current ERROR namenode.... -
NameNode详解
2018-11-08 09:32:171、NameNode的功能 2、 NameNode 启动过程 3、 NameNode元数据管理 4、 安全模式 1、NameNode的功能 负责客户端请求的响应 元数据的管理(查询,修改) 2、 NameNode 启动过程 NameNode启动的时候... -
NameNode启动
2018-09-20 17:56:51namenode的启动,以及源码分析 1.位置 org.apache.hadoop.hdfs.server.namenode.NameNode -
NameNode&Secondary NameNode的工作机制
2019-08-12 19:50:14文章目录NameNode和DataNode的工作机制1.NameNode&Secondary NameNode工作机制工作流程镜像文件和编辑日志文件 NameNode和DataNode的工作机制 1.NameNode&Secondary NameNode工作机制 工作流程 (1)第一... -
HDFS中NameNode和Secondary NameNode
2018-09-13 16:42:49NameNode(管理者):管理文件系统的命名空间,维护元数据镜像文件fsimage(磁盘)和操作日志文件edit logs。 问题: edits文件在集群运行过程中不断增加,占用更过内存; NameNode重启会进行edits文件的合并,... -
Secondary Namenode
2019-06-16 15:29:14Namenode的元数据 (目录中的文件) VERSION文件:包含运行hdfs的版本信息,其中重要属性blockpoolID:记录了一个Namenode管理的命名空间中的所有文件。 编辑日志:客户端执行写操作,这些事务会记录到其中。 映像文件... -
Namenode学习
2019-05-30 09:46:35HDFS是一个主从架构,其核心就是Namenode,Namenode主要作用是存储整个集群的元数据信息,包括存储文件的详细信息、每个文件的Block及副本在Datanode上的位置;Namnode还被用于协调客户端对文件的访问,记录文件的... -
hadoop-4 namenode和secondary namenode机制
2020-05-21 21:46:55namenode和secondary namenode机制namenodeedits.logfsimageNameNode工作机制Secondary namenodeSecondary namenode对namenode的备份CheckPoint触发条件 namenode namenode用来管理集群中的元数据信息,每条元数据... -
secondary namenode和namenode的区别
2018-10-15 16:06:43Secondary NameNode:它究竟有什么作用? 在Hadoop中,有一些命名不好的模块,Secondary NameNode是其中之一。从它的名字上看,它给人的感觉就像是NameNode的备份。但它实际上却不是。很多Hadoop的初学者都很疑惑,...