HDFS主要由三个组件构成,分别是NameNode、SecondaryNameNode和DataNode,其中NameNode和SecondaryNameNode运行在master节点上,DataNode运行在slave节点上。

HDFS架构如下图:

1. NameNode

NameNode管理HDFS文件系统的命名空间,它维护文件系统树及树中的所有文件和目录。同时NameNode也负责这些文件和目录的打开、关闭、移动和重命名等操作。而实际文件数据的操作是由DataNode负责。

当Client端发起请求,该请求首先会到达NameNode,NameNode分析请求,然后告诉Client该去哪个DataNode上找什么位置的数据块。得到消息后的Client会直接和DataNode进行交互。

NameNode中元数据种类有:

(1)文件名目录及它们的层级关系;(2)文件目录的所有者及其权限;(3)每个文件块的名称及文件有哪些块组成。

需要注意的是,NameNode保存的元数据信息并不包含每个数据块的位置信息,只包含块的名称及文件由哪些块组成。块的位置信息会在NameNode每次重启时从DataNode获取,并且NameNode通过心跳机制和DataNode保持通信,实时监控文件系统是否在正常运行。

2. DataNode

DataNode运行在slave节点上,也称为工作节点。它负责存储数据块,也负责为Client端提供读写服务,同时还接收NameNode指令,进行创建、删除和复制等操作。DataNode还通过心跳机制定期向NameNode发送所存储文件块列表信息。并且DataNode还和其他DataNode节点通信,复制数据块已达到冗余的目的。

3. SecondaryNameNode

NameNode元数据信息存储在FsImage中,NameNode每次重启后会把FsImage读取到内存中,在运行过程中为了防止数据丢失,NameNode的操作会被不断的写入本地EditLog文件中。

当检查点被触发,FsImage会把EditLog文件中的操作应用一遍,然后把新版的FsImage写回磁盘中,删除EditLog文件中旧的事务信息。检查点有两种触发机制:(1)按秒为单位的时间间隔触发(dfs.namenode.checkpoint.period);(2)达到文件系统累加的事务值触发(dfs.namenode.checkpoint.txns)。

FsImage和EditLog文件的合并就用到了SecondaryNameNode组件,它的工作过程如下:

(1)合并之前通知NameNode把所有操作写入新的EditLog文件中,并将其命名为edits.new;

(2)SecondaryNameNode从NameNode处请求合并FsImage和EditLog;

(3)SecondaryNameNode把FsImage和EditLog合并为新的FsImage文件;

(4)NameNode从SecondaryNameNode获取合并好的新的FsImage并将旧的替换掉,并把EditLog用(1)中创建的edits.new替换。

(5)更新Fstime中的检查点。

总而言之:

(1)FsImage:保存的是上个检查点的HDFS的元数据信息;

(2)EditLog:保存的是从上个检查点开始发生的HDFS元数据信息状态改变信息;

(3)Fstime:保存了最后一个检查点的时间戳。

【Hadoop】HDFS三组件:NameNode、SecondaryNameNode和DataNode相关推荐

  1. Hadoop系列 (三):HDFS详细介绍

    文章目录 Hadoop系列文章 HDFS简介 HDFS基本概念 分布式文件系统特点 HDFS设计目标 HDFS架构 HDFS应用场景 HDFS三大组件 NameNode SecondaryNameNo ...

  2. ERROR org.apache.hadoop.hdfs.server.namenode.SecondaryNameNode: Exception in doCheckpoint

    grep -ri Exception得到如下信息: /home/appleyuchi/bigdata/hadoop-3.2.1/logs/hadoop-appleyuchi-secondaryname ...

  3. Hadoop基础-Hdfs各个组件的运行原理介绍

    Hadoop基础-Hdfs各个组件的运行原理介绍 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.NameNode工作原理(默认端口号:50070) 1>.什么是NameN ...

  4. Python +大数据-hadoop生态-hadoop(三)--Hadoop HDFS

    Python +大数据-hadoop生态-hadoop(三)–Hadoop HDFS 今日课程学习目标 理解分布式文件存储的概念与实现 掌握HDFS分块存储.副本机制等特性 学会shell操作HDFS ...

  5. 云服务器(阿里云,百度云,华为云,腾讯云)搭建Hadoop(Nameode,SecondaryNamenode,datanode)

    写这篇文章是为了记录我自己在云平台上学习安装的过程,希望能为其他的同学提供一点帮助: 服务器类型 这里我使用的服务器有: node1 阿里云(学生机)Ubuntu (NameNode) node2 百 ...

  6. 云计算学习笔记---异常处理---hadoop问题处理ERROR org.apache.hadoop.hdfs.server.datanode.DataNode: java.lang.NullPoin

    云计算学习笔记---异常处理---hadoop问题处理ERROR org.apache.hadoop.hdfs.server.datanode.DataNode: java.lang.NullPoin ...

  7. hadoop实战(三) 使用HDFS操作文件

    一.hadoop简介    HADOOP集群具体来说包含两个集群:HDFS集群和YARN集群,两者逻辑上分离,但物理上常在一起    HDFS集群:负责海量数据的存储,集群中的角色主要有 NameNo ...

  8. Hadoop HDFS源码学习之NameNode部分

    NameNode源码学习 文章目录 NameNode源码学习 一.文件系统目录树(第一关系) 2.1 INode相关类 2.2 快照特性的实现 2.3 FSEditLog类 2.4 FSImage类 ...

  9. org.apache.hadoop.hdfs.server.namenode.SafeModeException

    原文出自:http://hi.baidu.com/zhy65991/item/8428013fcf459e342f0f8158 safemode模式 NameNode在启动的时候首先进入安全模式,如果 ...

最新文章

  1. python股票自动交易从零开始-python程序化交易编程-python制作自动交易程序!
  2. SQL Server 2005 在建立与服务器的连接时出错,错误26收藏
  3. redis哨兵集群数据迁移_redis集群数据迁移—redis-migrate-tool神器
  4. MySQL使用覆盖索引来优化limit语句
  5. JavaScript设计模式——单例模式的理解与应用
  6. OTDR光纤测试仪:您的光纤终极故障排除工具
  7. 内容生态搜索趋势研究报告
  8. 深圳 | 鹏程实验室研究员招收访问学生
  9. 怎么删除已经安装的mysql_怎么样删除已经安装的mysql | wdlinux致力于Linux服务器架构,性能优化.免费CDN加速系统,免费智能DNS解析,负载均衡,集群分流...
  10. adb 操作命令简介(一)
  11. Linux挂载Linux网络共享文件夹
  12. 如何选择适合你的兴趣爱好(二十四),京剧
  13. oracle rac 数据同步原理,从HDS VSP G1000的ORACLE RAC双活测试报告了解其实现原理
  14. (C#)Winform修改DateTimePicker控件的背景色Winform中日期控件DateTimePicker默认是不能修改背景色和边框色的
  15. 服务器开通网站来宾帐户,IIS 增加Internet来宾用户权限
  16. 【Spark】Spark Quick Start(快速入门翻译)
  17. 【微信小程序模板】可以用微信小程序模板制作小程序吗?
  18. 消除span之间的空隙
  19. 网站SEO优化之图片优化方法
  20. 当易方达张坤遇招商白酒侯昊

热门文章

  1. java mybatis狂神说sql_Mybatis框架下SQL注入审计分析
  2. 股票软件开发中全推与点播的区别
  3. 用唯一的颜色id编号实现OpenGL选择功能(OpenGL Selection Using Unique Color IDs )
  4. 没有可用软件包 docker-compose。_R语言CRAN软件包Meta分析
  5. innodb_file_per_table 理解
  6. 巧用Linux 命令来拆分Windows下的大文件
  7. 部署Nginx+Keepalived
  8. iOS 如何在一个应用程序中调用另一个应用程序
  9. C++中的构造函数小结
  10. 配置IIS支持PHP