HDFS:分布式文件系统把文件分布存储到多个计算机节点上,成千上万的计算机节点构成计算机集群
这些节点分为主从节点,主节点可叫作名称节点(NameNode),从节点可叫作数据节点(DataNode)

HDFS的存储模式:

HDFS通过块的模式存储数据,默认情况下一个块是64M,把大文件拆分成多个块,可以最小化寻址开销
这样的好处是:
1.支持大规模文件存储 : 文件以块为单位进行存储,一个大规模文件可以被分拆成若干个文件块,不同的文件块可以被分发到不同的节点上,因此,一个文件的大小不会受到单个节点的存储容量的限制,可以远远大于网络中任意节点的存储容量
2.简化系统设置 : 因为文件块大小是固定的,这样就可以很容易计算出一个节点可以存储多少文件块;其次,方便了元数据的管理,元数据不需要和文件块一起存储,可以由其他系统负责管理元数据
3.适合数据备份 : 每个文件块都可以冗余存储到多个节点上,大大提高了系统的容错性和可用性

名称节点最主要功能:名称节点记录了每个文件中各个块所在的数据节点的位置信息

名称节点(NameNode)与DataNode的功能:

在HDFS中,名称节点(NameNode)负责管理分布式文件系统的命名空间(Namespace),保存了两个核心的数据结构,即FsImage和EditLog
FsImage用于维护文件系统树以及文件树中所有的文件和文件夹的元数据
操作日志文件EditLog中记录了所有针对文件的创建、删除、重命名等操作

名称节点的启动:
1.在启动时,系统会将FsImage中的内容加载到内存中去,之后再执行EditLog中的操作,使得内存中的数据和实际同步,存在内存中的支持客户端的读。
2.一旦在内存中成功建立文件系统元数据的映射,则创建一个新的FsImage文件和一个空的EditLog文件
3.名称节点起来之后,HDFS中的更新操作会重新写到EditLog文件中,因为FsImage文件一般都很大(GB级别的很常见),
如果所有的更新操作都往FsImage文件中添加,这样会导致系统运行的十分缓慢,但是,如果往EditLog文件里面写就不会这样,
因为EditLog 要小很多。每次执行写操作之后,且在向客户端发送成功代码之前,edits文件都需要同步更新

但为了防止EditLog过大的问题:引入了第二名称节点(SecondaryNameNode)
第二名称节点:是HDFS架构中的一个组成部分,它是用来保存名称节点中对HDFS 元数据信息的备份,并减少名称节点重启的时间。
SecondaryNameNode一般是单独运行在一台机器上

SecondaryNameNode让EditLog变小的工作流程:
(1)SecondaryNameNode会定期和NameNode通信,请求其停止使用EditLog文件,暂时将新的写操作写到一个新的文件edit.new上来,这个操作是瞬间完成,上层写日志的函数完全感觉不到差别;
(2)SecondaryNameNode通过HTTP GET方式从NameNode上获取到FsImage和EditLog文件,并下载到本地的相应目录下;
(3)SecondaryNameNode将下载下来的FsImage载入到内存,然后一条一条地执行EditLog文件中的各项更新操作,使得内存中的FsImage保持最新;这个过程就是EditLog和FsImage文件合并;
(4)SecondaryNameNode执行完(3)操作之后,会通过post方式将新的FsImage文件发送到NameNode节点上
(5)NameNode将从SecondaryNameNode接收到的新的FsImage替换旧的FsImage文件,同时将edit.new替换EditLog文件,通过这个过程EditLog就变小了

工作流程图:

DataNode:数据节点是分布式文件系统HDFS的工作节点,负责数据的存储和读取,会根据客户端或者是名称节点的调度来进行数据的存储和检索,并且向名称节点定期发送自己所存储的块的列表

即HDFS需要实现的方面:
1.兼容廉价的硬件设备
2.流数据读写
3.大数据集
4.简单的文件模型
5.强大的跨平台兼容性
但这样面临的局限性:
1.不适合低延迟数据访问
2.无法高效存储大量小文件
3.不支持多用户写入及任意修改文件

HDFS(名称节点与数据节点)简介相关推荐

  1. 名称节点和数据节点作用

    2019独角兽企业重金招聘Python工程师标准>>> 两张图说清楚名称节点和数据节点 转载于:https://my.oschina.net/learnbo/blog/1498809

  2. 试述HDFS中的名称节点和数据节点的具体功能

    1.HDFS 采用主/从架构,主节点即NameNode     从节点即:DataNode 2.NameNode即是模式, 并完成外模式和模式之间的映像,模式和内模式之间的映像. 3.NameNode ...

  3. Apache Hadoop HDFS数据节点Apache Mesos框架

    介绍 该项目允许在Mesos上运行HDFS. 您应该熟悉HDFS和Mesos基础知识: http://mesos.apache.org/documentation/latest/ https://ha ...

  4. hdfs数据节点分发什么协议_分布式文件系统HDFS解析

    Hadoop 主要由HDFS和MapReduce 引擎两部分组成.最底部是HDFS,它存储Hadoop 集群中所有存储节点上的文件.HDFS 的上一层是MapReduce 引擎,该引擎由JobTrac ...

  5. Hdfs NameNode中数据块管理与数据节点管理分析

    数据块管理 在上一节介绍了BlockManager中的数据块副本状态,主要是保存各个数据块副本状态的存储对象.名字节点第二关系的管理包括数据块管理和数据节点管理,其对数据块的管理是依托于BlockMa ...

  6. Hadoop2.6集群动态添加和删除数据节点

    2019独角兽企业重金招聘Python工程师标准>>> 开始之前,应该把所有新增数据节点上的Hadoop环境都配置好(如果要直接复制已经存在节点的hadoop文件夹,应该删掉里面已经 ...

  7. Hadoop源码分析笔记(十一):数据节点--数据节点整体运行

    数据节点整体运行 数据节点通过数据节点存储和文件系统数据集,管理着保存在Linux文件系统上的数据块,通过流式接口提供数据块的读.写.替换.复制和校验信息等功能.建立在上述基础上的数据节点,还需要维护 ...

  8. 数据子系统之数据节点

    数据节点是数据子系统真正执行数据存储访问的服务集群,是数据子系统中主体,其稳定性和服务性能直接决定数据子系统可用性和响应速度,该部分相对较为复杂,面对诸多不稳定因素,需要在设计阶段就开始考虑各种异常情 ...

  9. sql 统计节点和子节点下面的数量_一次900万+数据量的 SQL 查询优化分析「上百倍性能优化」...

    有一张流水表,未分库分表,目前的数据量为950w,分页查询使用到了limit,优化之前的查询耗时167s左右 (execution: 16s831ms, fetching: 107 ms) 按照下文的 ...

最新文章

  1. No view found for id 0x7f0900d8
  2. Java 多线程 之 suspend挂起 线程实例
  3. 浅谈JavaScript中按键事件的e.keyCode || e.which || e.charCode
  4. Plist文件的创建与读写
  5. flash玩转cookie
  6. 谈一谈flex布局使用中碰到的一些问题
  7. c# json使用集
  8. 异常:fatal: unable to access 'https://git.oschina.net/pcmpcs/library.git/': Could not resolve host...
  9. 桌面虚拟化之用户评估指南 (翻译)
  10. python安装opencv whl_Python 3.x 安装opencv+opencv_contrib的操作方法
  11. easyui 提示框组件_15、Message 消息窗口组件
  12. WorldList5
  13. 如何解决系统存储卡找不到,难一格式化的问题
  14. iOS app上架app store流程详解
  15. 外贸企业邮箱可以撤回邮件吗?如何撤回已发送的邮件?
  16. 编程,C语言,代码,黑客,软件,JAVA,DW,软件设计等等,怎么循序渐进学习?
  17. 利用python计算fasta文件中ATGC的含量
  18. 小Y看浮屠世界-往复式单螺杆混炼挤出机构造特征及其运用
  19. [数学]导数与微积分(第一部分)
  20. 韩顺平mysql_韩顺平老师 Mysql优化 笔记

热门文章

  1. oracle的空闲等待事件,Oracle 常见的33个等待事件详解
  2. 【OpenCV 例程200篇】37. 图像的灰度化处理和二值化处理
  3. java web开发之上机指导(2)
  4. 乒乓球十一分制比赛规则_乒乓球竞赛规则 赛制和比赛规则
  5. $ajax({}).done 和 $ajax({}) success 区别
  6. while循环在Python中的应用举例 及其break continue的使用
  7. charles请求入参中有乱码
  8. scrapy框架的日志等级和请求传参
  9. Mybatis下collections使用pageHelper进行分页
  10. zufeoj 分数线划定