HDFS简介:

HDFS在设计时就充分考虑了实际应用环境的特点,即硬件出错在普通服务集群中是一种常态,而不是异常。

因此HDFS主要实现了以下目标:

兼容廉价的硬件设备 HDFS设计了快速检测硬件故障和进行自动恢复的机制,可以实现持续监视,错误检查,容错处理和自动回复,从而使得在硬件出错的情况下也能实现数据的完 整性
流数据读写  
大数据集 HDFS中的文件通常可以达到GB甚至TB级别
简答的文件模型 HDFS采用了“一次写入,多次读取”的简单文件模型,文件一旦完成写入,关闭后就无法再次写入,只能被读取
强大的跨平台兼容性 由于HDFS使用java语言实现的,具有很好的跨平台兼容性

HDFS的局限:

不适合低延迟数据的访问 HDFS不适合用在需要较低延迟(如数十毫秒)的应用场合,对于低延迟要求的应用程序而言,HBase是一个更好的选择
无法高效存储大量小文件 小文件是指文件大小小于一个块的文件
不支持多用户写入及任意修改文件 HDFS只允许一个文件有一个写入者,且只允许对文件执行追加操作,不能执行随机写操作(即:不能改变文件中的数据,只能在文件后增加)

HDFS的相关概念:

块:在传统的文件系统中,为了提高磁盘读写效率,一般以数据块为单位,而不是以次节为单位。查找数据的存储位置时,通过查询一块块的数据块,找到数据在磁盘中的存储位置,然后进行读写。HDFS也同样采用了块的概念,默认一个块的大小是64MB,这样做得目的是为了最小化寻址开销。通常,MapReduce中的Map任务一次只处理一个块中的数据。HDFS采用抽象的块概念的好处:

支持大规模文件存储 文件在存储时别拆分为一定量的块,分发到不同的节点上,因此一个文件的大小不会受到单个节点的存储容量限制
简化系统设计 大大简化了存储管理,因为一个文件块的大小是固定的,这样就可以计算出一个节点可以存储多少文件块,且方便了元数据的管理
适合数据备份  每个文件块都可以冗余存储到多个节点上,大大提高了系统的容错性和可用性

名称节点和数据节点:在HDFS中,名称节点(NameNode)负责管理分布式文件系统的命名空间,保存了两个核心的数据结构,即FsImage和EditLog。FsImage用于维护文件系统树以及文件数中所有的文件和文件夹的元数据。操作日志文件EditLog中记录了所有针对文件的创建,删除,重命名等操作。名称节点记录了每个文件中各个块所在的数据节点的位置信息,但是并不持久化存储这些信息,而是在每次系统启动时扫描所有的数据节点重构得到这些信息。

  名称节点在启动时,会将FsImage的内容加载到内存中,然后执行EditLog文件中的各项操作,舍得内从中的元数据保持最新。操作完成后,就会创建一个新的FsImage文件和一个空的EditLog文件。名称节点启动成功并进入正常运行状态后,HDFS中的更新操作都会被写入EditLog中,而不是直接写入FsImage中。名称节点在启动的过程中处于“安全模式”,只能对外提供读操作而无法提供写操作。启动过程结束后,系统就会退出安全模式,进入正常运行状态,对外提供读写操作。

  数据节点(DataNode)负责数据的存储和读取。每个数据节点的数据会被保存在各自节点的本地Linux文件系统中。

第二名称节点:在名称节点运行期间,HDFS会不断发生更新操作,这些更新操作都是直接被写入EditLog文件,因此EditLog文件也会逐渐变大,虽然EditLog不会对系统性能产生显著影响,但是当名称节点重启是,需要将FsImage加载到内存中,然后逐条执行EditLog中的记录,使得FsImage保持更新,可想而知,如果EditLog很大,就会导致整个过程变得非常缓慢,使得名称节点在启动过程中长期处于“安全模式”,无法正常对外提供写操作,影响了用户的使用。

为了解决这个问题,HDFS采用了第二名称节点。它具有两个方面的功能:

一是进行EditLog和FsImage的合并操作,每隔一段时间(假设为t1),第二名称节点会和名称节点通信,请求其停止使用EditLog文件,暂时将新到达的写操作添加到一个新的文件EditLog.new中。然后,第二名称节点把名称节点中的FsImage和EditLog文件拉回本地,再加载到内存中,对两者执行合并操作,即在内存中逐条执行EditLog中的操作,使得FsImage保持最新。合并结束后,第二名称节点会把合并得到的最新FsImage文件发送到名称节点。名称节点收到后,会用最新的FsImage文件去替换旧的FsImage文件,同时用EditLog.new文件去替换EditLog文件(假设这段时间为t2),从而减小了EditLog文件的大小。

二是作为名称节点的“检查节点”。从上面的合并过程中可以看出,第二名称节点会定期和名称节点通信,从名称节点获取FsImage和EditLog文件。这相当于第二名称节点是名称节点的“检查节点”,周期性地备份名称节点中的元数据信息,当名称节点发生故障时,就可以用第二名称节点对其进行恢复。但是,第二名称节点上合并操作得到的新的FsImage文件是合并操作发生时(即t1时刻)HDFS记录的元数据信息,并没有包含t1时刻和t2时刻期间发生的更新操作,如果名称节点在这段时间内发生故障,系统就会丢失部分元数据。在HDFS的设计中,也并支持把系统直接切换到第二名称节点。因此第二名称节点想到与系统的“冷备份”。

HDFS简介及相关概念的更多相关文章

  1. 01 HDFS 简介

    01.HDFS简介 大纲: hadoop2 介绍 HDFS概述 HDFS读写流程 hadoop2介绍 框架的核心设计是HDFS(存储),mapReduce(分布式计算),YARN(资源管理),为海量的 ...

  2. HDFS简介【全面讲解】

    http://www.cnblogs.com/chinacloud/archive/2010/12/03/1895369.html [一]HDFS简介HDFS的基本概念1.1.数据块(block)HD ...

  3. 【Hadoop】一、HDFS简介及基本概念

      当需要存储的数据集的大小超过了一台独立的物理计算机的存储能力时,就需要对数据进行分区并存储到若干台计算机上去.管理网络中跨多台计算机存储的文件系统统称为分布式文件系统(distributed fi ...

  4. java大数据最全课程学习笔记(3)--HDFS 简介及操作

    目前CSDN,博客园,简书同步发表中,更多精彩欢迎访问我的gitee pages 目录 HDFS 简介及操作 HDFS概述 HDFS产出背景及定义 HDFS优缺点 HDFS组成架构 HDFS文件块大小 ...

  5. HDFS简介及基本概念

    (一)HDFS简介及其基本概念   HDFS(Hadoop Distributed File System)是hadoop生态系统的一个重要组成部分,是hadoop中的的存储组件,在整个Hadoop中 ...

  6. Storm(一)Storm的简介与相关概念

    一.Storm的简介 官网地址:http://storm.apache.org/ Storm是一个免费开源.分布式.高容错的实时计算系统.Storm令持续不断的流计算变得容易,弥补了Hadoop批处理 ...

  7. css简介及相关概念

    一.简介: css全称为级联样式表(Cascading Style Sheet),通常又称为风格样式表(Style Sheet),是用来进行网页风格设计的.  css优点: 内容与表现分离 表现的统一 ...

  8. HDFS简介

    Hadoop是当今最为流行的大数据分析和处理工具. 其最先的思想来源于Google的三篇论文:                            GFS(Google File System):是 ...

  9. Hadoop 学习总结之一:HDFS简介

    一.HDFS的基本概念 1.1.数据块(block) HDFS(Hadoop Distributed File System)默认的最基本的存储单位是64M的数据块. 和普通文件系统相同的是,HDFS ...

随机推荐

  1. 源码实现 --> strdel

    删除字符串中某个字符strdel 函数 char *strDel(char* str,const char chToDel) 不是库里面的函数,自己实现的原型,删除str中所有的chToDel字符. ...

  2. 大数据 --> 淘宝异构数据源数据交换工具 DataX

    淘宝异构数据源数据交换工具 DataX DataX是什么? DataX是一个在异构的数据库/文件系统之间高速交换数据的工具,实现了在任意的数据处理系统(RDBMS/Hdfs/Local filesys ...

  3. C语言第十一次博客作业---函数嵌套调用

    一.实验作业 1.1 PTA题目 题目:递归实现顺序输出整数 1. 本题PTA提交列表 2. 设计思路 printdigits函数 定义整型变量result存放结果 if n是10的倍数 result ...

  4. C语言作业--函数

    一.PTA实验作业 题目1: 400-499 中4出现的次数 1. 本题PTA提交列表 2. 设计思路 一.main函数 1.函数声明int fun(int x) 2.定义变量i,k,i表示输入的值, ...

  5. 201621123057 《Java程序设计》第7周学习总结

    1. 本周学习总结 1.1 思维导图:Java图形界面总结 1.2 可选:使用常规方法总结其他上课内容. 2.书面作业 1. GUI中的事件处理 1.1 写出事件处理模型中最重要的几个关键词. 答: ...

  6. Flask 学习 十二 用户评论

    评论在数据库中的表示 由于评论和2个模型有关系,分别是谁发了评论,以及评论了哪个文章,所以这次要更新数据库模型 models.py 创建用户评论数据库模型 class Comment(db.Model ...

  7. python 面向对象设计思想发展史

    这篇主要说的是程序设计思想发展历史,分为概述和详细发展历史 一,概述 1940年以前:面向机器 最早的程序设计都是采用机器语言来编写的,直接使用二进制码来表示机器能够识别和执行的 指令和数 据.简单来 ...

  8. nyoj 概率计算

    概率计算 时间限制:1000 ms  |  内存限制:65535 KB 难度:1   描述 A和B两个人参加一场答题比赛.比赛的过程大概是A和B两个人轮流答题,A先答.一旦某人没有正确回答问题,则对手 ...

  9. nyoj 矩形个数

    矩形的个数 时间限制:1000 ms  |  内存限制:65535 KB 难度:1   描述 在一个3*2的矩形中,可以找到6个1*1的矩形,4个2*1的矩形3个1*2的矩形,2个2*2的矩形,2个3 ...

  10. [Redis源码阅读]redis持久化

    作为web开发的一员,相信大家的面试经历里少不了会遇到这个问题:redis是怎么做持久化的? 不急着给出答案,先停下来思考一下,然后再看看下面的介绍.希望看了这边文章后,你能够回答这个问题. 为什么需 ...