第一章 HDFS概述

第一章 HDFS概述

1.1 HDFS 产出背景及定义

  1. HDFS 产生背景
    • 随着数据量越来越大,在一个操作系统存不下所有的数据,那么就分配到更多的操作系统管理的磁盘中,但是不方便管理和维护,迫切需要一种系统来管理多台机器上的文件,这就是分布式文件管理系统。
    • HDFS 只是分布式文件管理系统中的一种。
  2. HDFS 定义
    • HDFS(Hadoop Distributed File System),它是一个文件系统,用于存储文件,通过目录树来定位文件
    • 其次,它是分布式的,由很多服务器联合起来实现其功能,集群中的服务器有各自的角色。
  3. HDFS 的使用场景:
    • 适合一次写入,多次读出的场景。一个文件经过创建、写入和关闭之后就不需要改变。

1.2 HDFS 优缺点

  1. 优点

    1. 高容错性
      • 数据自动保存多个副本,它通过增加副本的形式,提高容错性
      • 某一个副本丢失有以后,他可以自动恢复
    2. 适合处理大数据
      • 数据规模:能够处理数据规模达到TB,GB,甚至PB级别
      • 文件规模:能够处理百万规模以上的文件数量
    3. 可构建在廉价的机器上,通过多副本机制,可以提高可靠性
  2. 缺点

    1. 不适合低延迟数据访问
      • 比如毫秒级别的数据访问
    2. 无法高效的对大量小文件进行存储
      • 存储大量小文件的话, 它会占用NameNode大量的内存来存储文件目录和块信息,这样是不可取的,因为NameNode的内存是有限的.
      • 小文件的寻址时间会超过读取时间,这违反了HDFS的设计初衷
    3. 不支持并发写入,文件随机修改
      • 一个文件只能有一个写入,不能支持并发写入
      • 仅支持数据的追加写append,不支持文件的随机修改

1.3 HDFS 组成架构

  1. HDFS的组织架构以及功能作用

    1. NameNode 就是Master,它是一个管理者
      • 管理HDFS的名称空间
      • 配置副本策略
      • 管理数据块(Block)映射信息
      • 处理客户端的读写请求
    2. DataNode 就是slave,NameNode下达命令,DataNode执行实际的操作
      • 存储实际的数据块
      • 执行数据块的读写操作
    3. client
      • 文件切分.文件上传HDFS的时候,Client将we年切分成一个个的Block,然后进行上传
      • 与NameNode交互,获取文件的位置信息
      • 与DataNode交互,读取或者写入数据
      • Client提供一些命令来听给管理HDFS,比如NameNode格式化
      • Client可以通过命令来访问HDFS,比如对HDFS的增删改查操作
    4. SecondaryNameNode 并非NameNode的热备,当NameNode挂掉的时候,它并不能马上替换NameNode并提供服务
      • 辅助NameNode,分担其工作量,比如定期合并Fsimage和Edits,并推送给NameNode
      • 在紧急情况下,可辅助恢复NameNode

1.4 HDFS 文件块大小(面试重点)

HDFS文件块大小

  • HDSf中的文件在物理上是分块(Block)存储的,块的大小可以通过配置参数(dfs.blocksize)来规定,默认在Hadoop2.x/3.x是128M, 在1.x是64M.
  • 如果寻址时间约为10MS,也就是查找到目标block的时间为10ms
  • 寻址时间为传输时间的1%时,则为最佳状态,这是中国的专家说的,因此,传输时间=10ms/0.01=1000ms=1s
  • 而目前磁盘的传输速度普遍为100M/s
  • block大小=1s*100MB/s = 100MB 距离128更近,所以设置默认为128M

思考:为什么块的大小不能设置的太小,也不能设置的太大

  • HDFS的块如果设置的太小,会增加寻址时间,程序一直在找块的开始位置

  • 如果块设置的太大,从磁盘传输数据的时间,会明显大于定位这块块开始位置需要的时间,导致程序在处理这块数据的时候,会非常慢

总结:HDFS块的大小设置主要取决于磁盘传输速率

猜你喜欢

转载自blog.csdn.net/hs_shengxiaguangnian/article/details/115839955