HDFS

  1. 前言

  HDFS是Hadoop Distributed File System的简称,是Hadoop抽象文件系统的一种实现。是一个用Java实现、分布式的、可扩展的文件系统。Hadoop抽象文件系统可以与本地系统、Amazon S3等集成,甚至可以通过Web协议(webhsfs)来操作。

  • HDFS的文件分布在集群机器上,同时提供副本进行容错及可靠性保证。例如客户端写入读取文件的直接操作都是分布在集群各个机器上的,没有单点性能压力。
  • Hadoop Distributed File System   
    1.易于扩展的分布式文件系统
  1. 运行在大量普通廉价机器上,提供容错机制
  2. 为大量用户提供性能不错的文件存取服务
  • HDFS的主要功能是做存储用的,把每一份数据创建多个副本、做复制,默认的副本数是3份。
  • HDFS设计目标
    1.自动快速检测应对硬件错误
    2.流式访问数据
    3.移动计算比移动数据本身更划算 io
    4.简单一致性模型
    5.异构平台可移植
  • 设计思想
    分而治之:将大文件、大批量文件,分布式存放在大量服务器上,以便于采取分而治之的方式对海量数据进行运算分析;对同一个文件进行联合管理。
    每个小文件做冗(rǒng)余备份,并且分散到不同的服务器中,做到高可靠不丢失。
  • 在大数据中的作用:
    为各类分布式运算框架(如:mapreduce,spark,tez,……)提供数据存储服务
  • 重点概念
    文件切块,副本存放,元数据
  在HDFS的架构中,主要有三个角色:NameNode(元数据节点,NN)、DataNode(从数据节点,DN)、SecondaryNameNode(从数据节点,snn)。

数据:数据内容
元数据:文件名称 大小 所属人 地址 128k

架构中三个角色的作用

  1. NameNode:是Master节点,集群老大
    (1)管理文件系统中文件的元数据信息;
    (2)维护文件到块、块到节点的对应关系;
    (3)维护用户对文件的操作信息(增删改查)。

  2. DataNode:Slave节点
    (1)负责存储客户端(client)发来的数据块block;
    (2)执行数据块的读写操作。

  3. SecondaryNameNode:严格来说并不是NameNode备份节点,主要给NameNode分担压力
    (1)周期性的将元数据节点的fsimage(文件系统目录树)和fsedits(文件系统元数据操作日志)合并,以防止日志文件过大。
    (2)合并后的fsimage在从元数据节点保存了一份,以防止元数据节点失败时恢复。

  • 设计假设和目标
  • 硬件错误:数量众多的廉价机器使得硬件错误成为常态。
  • 数据流访问:应用以流的方式访问数据;设计用于 数据的批量处理,而不是低延时的实时交互处理。放弃全面支持POSIX。
  • 大数据集:典型的HDFS上的一个文件大小是G或T数量级的,支持一个云中文件数量达到千万数量级。
  • 简单的相关模型:假定文件一次写入多次读取。未来可能支持Appending-write的模型。
  • 移动计算比移动数据便宜:一个应用请求的计算,离它操作的数据越近就越高效。
  • 多种软硬件平台中的可移植性
  1. 概念和特性
    HDFS 是一个 文件系统,用于存储文件,通过统一的命名空间—目录树来定位文件
    其次,它是分布式的,由很多服务器联合起来实现其功能,集群中的服务器有各自的角色;
    HDFS核心概念

    1.Blocks

    物理磁盘中有块的概念,磁盘的物理Block是磁盘操作最小的单元,读写操作均以Block为最小单元,一般为512 Byte。文件系统在物理Block之上抽象了另一层概念,文件系统Block物理磁盘Block的整数倍。通常为几KB。Hadoop提供的df、fsck这类运维工具都是在文件系统的Block级别上进行操作。

    HDFS的Block块比一般单机文件系统大得多,默认为128M。HDFS的文件被拆分成block-sized的chunk,chunk作为独立单元存储。比Block小的文件不会占用整个Block,只会占据实际大小。例如, 如果一个文件大小为1M,则在HDFS中只会占用1M的空间,而不是128M。

    2.HDFS的Block为什么这么大?

    是为了最小化查找(seek)时间,控制定位文件与传输文件所用的时间比例。假设定位到Block所需的时间为10ms,磁盘传输速度为100M/s。如果要将定位到Block所用时间占传输时间的比例控制1%,则Block大小需要约100M。
    但是如果Block设置过大,在MapReduce任务中,Map或者Reduce任务的个数 如果小于集群机器数量,会使得作业运行效率很低。

    3.Block抽象的好处

    block的拆分使得单个文件大小可以大于整个磁盘的容量,构成文件的Block可以分布在整个集群, 理论上,单个文件可以占据集群中所有机器的磁盘。
    Block的抽象也简化了存储系统,对于Block,无需关注其权限,所有者等内容(这些内容都在文件级别上进行控制)。
    Block作为容错和高可用机制中的副本单元,即以Block为单位进行复制。

  • 重要特性如下:
    (1)HDFS中文件在物理上是分块存储(block),块的大小可以通过配置参数(dfs.blocksize)来规定,默认大小在hadoop2.x 版本中128M,l老版本中是64M
    (2)HDFS 文件系统会给客户端提供一个统一的抽象目录树,客户端通过路径来访问文件,形如:hdfs://hadoop01:9000/software/hadoop-2.6.5-centOS-6.7.tar.gz
    (3)**目录结构及文件分块信息(元数据)**的管理由namenode 节点承担
    namenode 是HDFS集群主节点,负责维护整个hdfs 文件系统的目录树,以及每一个路径(文件)所对应的block块信息(block的id,及所在的datanode服务器)
    (4)文件的各个block的存储管理由datanode节点承担
    datanode是HDFS集群从节点,每一个block都可以在多个datanode上存储多个副本(副本数量也可以通过参数设置dfs.replication)默认是3份
    (5)HDFS是设计成适应一次写入,多次读出的场景,且不支持修改
  1. HDFS的优点
    (1)高可靠性:hadoop按位存储和处理数据的能力值得人们信赖
    (2)高扩展性:hadoop是在可用的计算机集簇间分配数据并完成计算任务的,这些集簇可以方便地扩展到数以千计的节点中。
    (3)高效性:hadoop 能够在节点之间动态地移动数据,并保证各个节点的动态平衡1,因此处理速度非常快。
    (4)高容错性:hadoop 能够自动保存数据的多个副本,并且能够自动将失败的任务重新分配。

    (1)可构建在廉价机器上;
    (2)高容错性;
    (3)适合批处理;
    (4)适合大数据处理;
    (5)流式文件访问。

  2. HDFS的缺点
    (1)不适合低延迟数据访问

    对延时要求在毫秒级别的应用,不适合采用HDFS。HDFS是为高吞吐数据传输设计的,因此可能牺牲延时HBase更适合低延时的数据访问。

    (2)无法高效存储大量小文件

    文件的元数据(如目录结构,文件block的节点列表,block-node mapping)保存在NameNode的内存中, 整个文件系统的文件数量会受限于NameNode的内存大小。
    经验而言,一个文件/目录/文件块一般占有150字节的元数据内存空间。如果有100万个文件,每个文件占用1个文件块,则需要大约300M的内存。因此十亿级别的文件数量在现有商用机器上难以支持。

    (3)不支持多用户写入及任意修改文件

    HDFS采用追加(append-only)的方式写入数据。不支持文件任意offset的修改。不支持多个写入器(writer)。

  3. 为什么HDFS不适合存储小文件:

    (1)所有的元数据都是存储在NameNode内存中的,而一个NameNode节点的内存是有限的;
    (2)小文件的存取占用了大量的NameNode内存,导致寻道时间超过了读取时间;
    (3)NameNode存储block数目是有限的。
    一个block元信息消耗大约150byte内存,加入存储一亿个block,则大约需要20GB内存。如果一个文件大小为10KB,则一亿个文件大小仅为1TB,但NameNode就要消耗20GB内存。

HDFS基本概念和特性的详情了解及优缺点相关推荐

  1. hadoop分布式文件系统hdfs的概念和特性

    首先,它是一个文件系统. 有一个统一的命名空间--目录树, 客户端访问hdfs文件时就是通过指定这个目录树中的路径来进行 其次,它是分布式的,由很多服务器联合起来实现功能: hdfs文件系统会给客户端 ...

  2. 深圳大数据培训:HDFS基本概念

    深圳大数据培训:HDFS基本概念 1.1 HDFS的介绍 源自于Google的GFS论文 发表于2003年10月 HDFS是GFS克隆版 ,HDFS的全称是Hadoop Distributed Fil ...

  3. 函数概念与特性——反函数、复合函数

    目录 函数概念与特性 反函数 复合函数 函数概念与特性 设r与y是两个变量,D是一个给定的数集,若对于每个值r∈D,按照一定的法则,有一个确定的值y与之对应,则称y为r的函数,记作 y=f(.x).称 ...

  4. vue系列:Vue核心概念及特性 (一)

    大家好,我是前端岚枫,一枚二线城市的程序媛,下半年对于我们来说是比较特殊的几个月,7月底,郑州出现好多年不遇的水灾,没法出行,在家休息,8月出现了疫情,在家办公一个月,9月疫情过去,终于能来公司上班了 ...

  5. 面向对象一类与对象的概念与特性

    面向对象程序设计(Object-oriented programming,OOP) 一.类与对象 类(class):  对一类具有相同 属性的对象的 抽象.类的定义包含了数据的形式以及   对数据的操 ...

  6. Hadoop:HDFS的概念理解和体系架构-成都加米谷大数据分享

    HDFS是什么? HDFS 全称 Hadoop Distributed File System ,简称HDFS,是一个分布式文件系统.它是谷歌的GFS提出之后出现的另外一种文件系统.它有一定高度的容错 ...

  7. Linux DRM(二)基本概念和特性

    在<Linux DRM (一) Display Server>我们了解了 DRM 诞生的历史缘由. 本篇我们朝着 DRM 本尊再走几步,先介绍几个 DRM 的基本概念. 一.楔子 上篇文章 ...

  8. HBase的详细介绍(概念以及特性)

    1 什么是hbase HBASE是一个高可靠性.高性能.面向列.可伸缩的分布式存储系统,利用HBASE技术可在廉价PC Server上搭建起大规模结构化存储集群. HBASE的目标是存储并处理大型的数 ...

  9. 彷徨 | HBase的详细介绍(概念以及特性)

    1.什么是hbase HBASE是一个高可靠性.高性能.面向列.可伸缩的分布式存储系统,利用HBASE技术可在廉价PC Server上搭建起大规模结构化存储集群. HBASE的目标是存储并处理大型的数 ...

最新文章

  1. 自我认为挺全面的【Web Service渗透测试总结】
  2. Python:langdetect和langid检测语言类型
  3. vim支持nginx语法高亮
  4. python随机抽签列表中的同学值日_神奇的大抽签--Python中的列表_章节测验,期末考试,慕课答案查询公众号...
  5. android module 引用libs里面的so文件_Android中的JNI开发,你了解多少?
  6. 写帮助大家学习的小框架
  7. 正点原子操作过程中芯片总是出错
  8. 服务器中用于接收电子邮件,‎如何使用我的邮件服务器在 Odoo 中发送和接收电子邮件‎...
  9. EasyExcel导出excel(写)
  10. 纯CSS在线气泡提示生成工具 - CSS ARROW PLEASE!
  11. 全国大学FTP列表!绝对经典!!!
  12. Hookswork多帐户跨平台MT4跟单软件的十二大优势:
  13. 树莓派usb免驱摄像头报错
  14. 金蝶k3wise 核算项目、辅助资料
  15. 用Python蹭别人家图片接口,做一个【免费图床】吧
  16. FX5U 结构体编程
  17. word批注怎么删除计算机名字,word 2007 如何删除批注者姓名?
  18. 尚硅谷nginx学习
  19. MySQL深入浅出之索引
  20. PMP之项目成本管理

热门文章

  1. SAP HANA Cloud 简介
  2. SAP Fiori Elements 公开课第一单元概要介绍
  3. Angular 里 unknown 和 any 的区别
  4. SAP Spartacus的site context配置
  5. 如何根据SAP Spartacus的页面快速找到实现的Angular Component
  6. 桃李春蛋糕的配料之一 - 蛋糕预拌粉
  7. SAP Data Intelligence API执行出错的排错之道
  8. SAP CRM和Cloud for Customer的扩展字段元数据
  9. SAP Odata filter的语法
  10. sap-statistics in SAP UI5 http roundtrip