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

12 篇文章 0 订阅
1 篇文章 0 订阅

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内存。

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值