1. namenode介绍

namenode管理文件系统的命名空间。它维护着文件系统树及整棵树内所有的文件和目录。这些信息以两个文件形式永久保存在本地磁盘上:命名空间镜像文件fsimage和编辑日志文件edits。NameNode也记录着每个文件中各个块所在的数据节点信息,但它并不永久保存块的位置信息,因为这些信息在系统启动时由数据节点重建。
namenode主要负责三个功能,分别是

管理元数据
维护目录树
响应客户请求

2. namenode关键文件夹

位于/opt/software/hadoop277/tmp/dfs/name/current目录中
(初次启动之前需要对namenode目录格式化:hadoop namenode -format)

seen_txid文件保存的是一个数字,就是最后一个edits_的数字
fsimage文件:HDFS文件系统元数据的一个永久性的检查点,其中包含HDFS文件系统的所有目录和文件idnode的序列化信息
edits文件:存放HDFS文件系统的所有更新操作的路径,文件系统客户端执行的所有写操作首先会被记录到edits文件中
version: 该文件为namenode中一些版本号的信息

3. 元数据

3.1元数据格式

/jdk/jdk18.zip, 3, {blk_1,blk_2}, [{blk_1:[dd1,dd2,dd4]}, {blk_2:[dd0,dd1,dd3]}]
/jdk/jdk18.zip:这个文件在hdfs文件系统中的路径
3:这个文件的副本数(hdfs-site.xml可修改)
{blk_1,blk_2}:这个文件分成的块(默认满128M分成一个块)
dd0,dd1...:datanode节点,比如blk_1的3个副本分别存储在dd1,dd2,dd4中

3.2元数据的合并

3.2.1原因

1、随着集群的运行,edit logs文件逐步增大,管理该文件需要消耗资源
2、Namenode合并fsimage文件需要消耗资源
3、Namenode宕机后,再次恢复时会丢失一部分操作

2.2.2解决办法

使用secondarynamenode对元数据进行合并

2.2.3触发条件(其中之一即可)

到达检查点周期,默认1个小时。可通过 dfs.namenode.checkpoint.period属性手动配置。
一分钟检查一次操作次数,到达设置事务数量,默认一百万条。可通过dfs.namenode.checkpoint.txns属性配置

2.2.3合并过程

1、secondarynamenode检查当前集群状态是否触发checkpoint的合并条件
2、若未触发则继续运行,否则开始元数据合并
3、namenode停止向日志文件edits写入数据,并生成一个新的edits文件用于存储在合并期间产生的操作
4、secondarynamenode通过Http GET方式从namenode处下载edits文件和fsimage文件,并将fsimage文件载入内存
5、secondarynamenode逐条执行edits文件的更新操作,使内存中的fsimage文件保存最新的操作日志,结束后生成一个新fsimaget文件
6、secondarynamenode复制发送新fsimaget文件给namenode,然后删除edits.new
7、两个新文件替换前两个旧文件,等待下一次合并

HDFS NameNode详解的更多相关文章

  1. hadoop hdfs uri详解

    body{ font-family: "Microsoft YaHei UI","Microsoft YaHei",SimSun,"Segoe UI& ...

  2. hadoop之hdfs命令详解

    本篇主要对hadoop命令和hdfs命令进行阐述,yarn命令会在之后的文章中体现 hadoop fs命令可以用于其他文件系统,不止是hdfs文件系统内,也就是说该命令的使用范围更广可以用于HDFS. ...

  3. hadoop之hdfs架构详解

    本文主要从两个方面对hdfs进行阐述,第一就是hdfs的整个架构以及组成,第二就是hdfs文件的读写流程. 一.HDFS概述 标题中提到hdfs(Hadoop Distribute File Syst ...

  4. HDFS架构详解-非官档

    Namenode 1.namenode是一个中心服务器,单一节点(简化系统的设计和实现),负责管理文件系统的命名空间(namespace)以及客户端对文件的访问. 2.文件操作:namenode负责对 ...

  5. flume hdfs配置详解

    flume采集中HDFS参数解析 就是个备忘录,方便以后直接查阅,不用再网上找了!!!! 配置解析 Flume中的HDFS Sink应该是非常常用的,其中的配置参数也比较多,在这里记录备忘一下. ch ...

  6. kettle连接hadoop&hdfs图文详解

    1 引言: 项目最近要引入大数据技术,使用其处理加工日上网话单数据,需要kettle把源系统的文本数据load到hadoop环境中 2 准备工作: 1 首先 要了解支持hadoop的Kettle版本情 ...

  7. HDFS入门详解

    一. 前提和设计目标 1. 硬件错误是常态,因此需要冗余,这是深入到HDFS骨头里面去了 HDFS可能由成百上千的服务器所构成,每个服务器上存储着文件系统的部分数据.我们面对的现实是构成系统的组件数目 ...

  8. Hadoop分布式文件系统(HDFS)详解

    HDFS简介: 当数据集的大小超过一台独立物理计算机的存储能力时,就有必要对它进行分区 (partition)并存储到若干台单独的计算机上.管理网络中跨多台计算机存储的文件系统成为分布式文件系统 (D ...

  9. hadoop1中hdfs原理详解

    HDFS是Hadoop Distribute File System的简称,也是Hadoop的一个分布四文件系统 一.HDFS的主要设计理念 1.存储超大文件 这里的 “超大文件” 是指几百MB .G ...

随机推荐

  1. django的orm介绍以及静态文件介绍

    1 django中app的概念 大学:----------------- 项目 信息学院 ----------app01 物理学院-----------app02*强调:创建了app,要在配置文件中注 ...

  2. miracle|

    N-COUNT 奇迹;出人意料的事If you say that a good event is a miracle, you mean that it is very surprising and ...

  3. Nginx笔记总结十八:nginx统计响应的http状态码信息(ngx-http-status-code-counter)

    编译:./configure --prefix=/usr/local/nginx --add-module=../ngx_http_status_code_counter-master make &a ...

  4. js 实现排序算法 -- 冒泡排序(Bubble Sort)

    原文: 十大经典排序算法(动图演示) 冒泡排序(Bubble Sort) 冒泡排序是一种简单的排序算法.它重复地走访过要排序的数列,一次比较两个元素,如果它们的顺序错误就把它们交换过来.走访数列的工作 ...

  5. eclipse、myeclipse使用常用的小技巧

    1.修改类名称上的@author  *** Preference----Java----Code Style----Code Templates----->Comments----->Ty ...

  6. spring提供的事务配置--纯注解

    spring提供的事务--纯注解 模拟转账业务  ,出错需要事务回滚,没错正常执行 事务和数据库技术都是spring的内置提供的 --------dao包--------------- IAccoun ...

  7. vue子组件使用自定义事件向父组件传递数据

    使用v-on绑定自定义事件可以让子组件向父组件传递数据,用到了this.$emit(‘自定义的事件名称’,传递给父组件的数据) <!DOCTYPE html> <html lang= ...

  8. springboot ——oracle.jdbc.driver.OracleDriver

    网上很多案例讲是oracle的驱动包没有导入进去,我之前尝试下图示方式导入解决该问题: 但是在后期调试的时候,发现会影响后续oracle数据源连接驱动的问题,导致不能查询,因此想,另辟途径,解决这个问 ...

  9. Oracle Compute云快速搭建MySQL Keepalived高可用架构

    最近有个客户在测试Oracle Compute云,他们的应用需要使用MySQL数据库,由于是企业级应用一定要考虑高可用架构,因此有需求要在Oracle Compute云上搭建MySQL高可用集群.客户 ...

  10. AndroidManifest.xml文件详解

    本文为安全专家李洋的最新一篇专栏文章<AndroidManifest.xml文件详解>.AndroidManifest.xml是一个跟安全相关的配置文件,该配置文件是Android安全保障 ...