Namenode保存文件系统元数据镜像,namenode在内存及磁盘(fsimage和editslog)上分别存在一份元数据镜像文件,内存中元数据镜像保证了hdfs文件系统文件访问效率,磁盘上的元数据镜像保证了hdfs文件系统的安全性。

namenode在磁盘上的两类文件组成:

fsimage文件:保存文件系统至上次checkpoint为止目录和文件元数据。

edits文件:保存文件系统从上次checkpoint起对hdfs的所有操作记录日志信息。

fsimage和editlog文件可以在本地文件系统看到,如下图:

首次安装格式化(format)主要作用是在本地文件系统生成fsimage文件。

1、首此启动hdfs过程:

启动namenode:

读取fsimage生成内存中元数据镜像。

启动datanode:

向namenode注册;

向namenode发送blockreport。

启动成功后,client可以对HDFS进行目录创建、文件上传、下载、查看、重命名等操作,更改namespace的操作将被记录在edits文件中。

2、之后启动HDFS文件系统过程:

启动namenode:

读取fsimage元数据镜像文件,加载到内存中。

读取editlog日志文件,加载到内存中,使当前内存中元数据信息与上次关闭系统时保持一致。然后在磁盘上生成一份同内存中元数据镜像相同的fsimage文件,同时生成一个新的null的editlog文件用于记录以后的hdfs文件系统的更改。

启动datanode:

向namenode注册;

向namenode发送blockreport。

启动成功后,client可以对HDFS进行目录创建、文件上传、下载、查看、重命名等操作,更改namespace的操作将被记录在editlog文件中。

3、SecondaryNameNode

辅助namenode,不能代替namenode。

SecondaryNameNode的主要作用是用于合并fsimage和editlog文件。在没有SecondaryNameNode守护进程的情况下,从namenode启动开始至namenode关闭期间所有的HDFS更改操作都将记录到editlog文件,这样会造成巨大的editlog文件,所带来的直接危害就是下次启动namenode过程会非常漫长。

在启动SecondaryNameNode守护进程后,每当满足一定的触发条件(每3600s、文件数量增加100w等),SecondaryNameNode都会拷贝namenode的fsimage和editlog文件到自己的目录下,首先将fsimage加载到内存中,然后加载editlog文件到内存中合并fsimage和editlog文件为一个新的fsimage文件,然后将新的fsimage文件拷贝回namenode目录下。并且声称新的editlog文件用于记录DFS的更改。

4、安全模式

在启动namenode至所有datanode启动完成前的阶段成为安全模式。在安全模式下,client只能读取部分HDFS文件信息,不允许client对HDFS的任何更改操作,比如创建目录、上传文件、删除文件、重命名文件等。

namenode推出安全模式条件需要满足以下条件:

datanodes blocks/total blocks >= 99.999% + 30s(缓冲时间) 此时安全模式才会推出

Secondary namenode工作流程:

1)secondary通知namenode切换edits文件

2)secondary通过http请求从namenode获得fsimage和edits文件

3)secondary将fsimage载入内存,然后开始合并edits

4)secondary将新的fsimage发回给namenode

5)namenode用新的fsimage替换旧的fsimage

Secondary namenode工作流程通过一张图可以表示为:

手工维护安全模式指令:

bin/hdfs dfsadmin -safemode <enter | leave | get | wait>

例如:

[hadoop@db01 ~]$ hdfs dfsadmin -safemode get

Safe mode is OFF

HDFS Namenode启动过程相关推荐

  1. 解决HDFS NameNode启动时Loading edits时间超长的问题(NameNode数据同步机制介绍)

    背景 有个好久好久没怎么维护的Hadoop集群,一直在提供服务,也做了HA,由于某些原因要对HDFS做重启,重启前检查了遍服务,发现另一个NameNode已经挂了有一段时间了. 重启过程倒是没啥问题, ...

  2. Hadoop namenode启动瓶颈分析

    转载:http://blog.csdn.net/AE86_FC/archive/2010/08/26/5842020.aspx NameNode启动过程详细剖析 NameNode中几个关键的数据结构 ...

  3. Hadoop生态圈(六)- HDFS NAMENODE 安全模式

    目录 前言 1. HDFS NAMENODE 安全模式 1.1 场景:安全模式探究 1.2 安全模式概述 1.3 安全模式自动进入离开 1.3.1 自动进入时间 1.3.2 自动离开条件 1.4 安全 ...

  4. 第七章:小朱笔记hadoop之源码分析-hdfs分析 第四节:namenode分析-namenode启动过程分析...

    第七章:小朱笔记hadoop之源码分析-hdfs分析 第四节:namenode分析 4.1 namenode启动过程分析 org.apache.hadoop.hdfs.server.namenode. ...

  5. hadoop namenode启动不了_Hadoop框架:HDFS高可用环境配置

    一.HDFS高可用 1.基础描述 在单点或者少数节点故障的情况下,集群还可以正常的提供服务,HDFS高可用机制可以通过配置Active/Standby两个NameNodes节点实现在集群中对NameN ...

  6. 记一次hadoop namenode 启动失败问题及解决过程(启动几秒钟后又挂了)

    这是个小问题,但如果新手接触的话可能会花费一番时间才能解决,甚至会不知所措.在此重点记录的还是解决问题的方式. 问题描述 在自己虚拟机上新安装了hadoop.在做单节点启动测试时发现namenode启 ...

  7. 启动HDFS时候出现Attempting to operate on hdfs namenode as root

    在启动HDFS执行sbin/start-dfs.sh的时候出现如下问题 [root@node01 hadoop]# sbin/start-dfs.sh Starting namenodes on [n ...

  8. hadoop启动报错:Attempting to operate on hdfs namenode as root

    解决方案1: 在环境变量中添加如下几个配置: vim /etc/profile 添加 export HDFS_NAMENODE_USER=root export HDFS_DATANODE_USER= ...

  9. hadoop-3.1.3 启动HDFS时报错ERROR: Attempting to operate on hdfs namenode as root的解决方法

    在以root用户启动hadoop集群时遇到了下面这个问题,看报错信息是用户问题, [root@hadoop10 hadoop-3.1.3]# sbin/start-dfs.sh Starting na ...

最新文章

  1. Xcode中导入.a静态库后报错添加-force_load或-all_load
  2. JSONP简单入门介绍
  3. python3精要(28)-filter
  4. Java黑皮书课后题第7章:*7.20(修改选择排序法)在7.11节中,使用了选择排序法对数组排序。改写7.11节程序,重复地在当前数组中找到最大值,然后将这个最大值与该数组中的最后一个数进行交换
  5. Maven项目代码中定位resources文件夹下的文件目录,解决文件不存在的问题
  6. php基本语法实验总结,PHP总结(一)基本语法内容
  7. openstack neutron(tap、qvb、qvo详解)(转)
  8. Echarts数据可视化series-scatter散点图,开发全解+完美注释
  9. 计算机系统基础知识——进制转换(二进制、八进制、十进制、十六进制)
  10. php 判断来访国内外IP
  11. python避障小车_基于深度学习的自动避障小车_7_代码说明
  12. Ubuntu20.04 截图工具推荐
  13. 计算机远程用户关机指令,有哪些远程关机命令?如何用向日葵进行远程关机电脑?...
  14. 回文数c语言 字符串,力扣 009 回文数 C语言
  15. 基于RNA的新型癌症疗法介绍
  16. SAP:传输请求SE09->STMS
  17. replaceAll(xxxx, File.separator); 报错character to be escaped is missing-1
  18. 【转载】世界十大名咖啡
  19. lisp画靶子 visual_9月编程语言排行榜:PHP首超C++ 挺进前三甲
  20. maven 创建 java_使用maven创建java项目

热门文章

  1. 读取excel日期 c++_实例9:用Python自动生成Excel档每日出货清单
  2. Python selenium根据class定位页面元素,xpath定位
  3. mysql router docker_Docker镜像瘦身 - SegmentFault 思否
  4. HDU 4614 Vases and Flowers 【线段树】+【二分】
  5. 自定义FireFox浏览器滚动条
  6. jquery 鼠标经过显示 信息小卡片
  7. NYOJ 单调递增子序列(二)
  8. 多模块后带来的问题解决方法 - OSGI原形(.NET)
  9. VS2012 无法打开文件“kernel32.lib”问题的解决办法
  10. 利用ComponentWillReceiveProps解决异步问题