HDFS 基础

HDFS

HDFS hadoop分布式文件系统

解决目标

  1. 超大文件
  2. 流式数据访问
  3. 商用软件(兼容廉价的硬件设备/强大的跨平台兼容性)

HDFS局限性

  1. 不适合低延迟数据访问(实时性不高)
  2. 无法高效存储大量小文件(索引结构庞大后搜索效率降低)
  3. 不支持多用户写入,任意修改文件(只支持单个写入)

HDFS体系结构

块(Block)

操作系统中的文件块。文件是以块的形式存储在磁盘中,此处块的大小代表系统读、写可操作的最小文件大小,文件系统每次只能操作磁盘块大小的整数倍数据,磁盘块大小为512字节。(减少寻址开销)
HDFS中的块是一个抽象的概念,比操作系统中的块要大很多,默认128MB。

优点:

  1. 支持大规模文件存粗:可以存储任意大的文件,不会受到系统中单个磁盘大小限制
  2. 简化系统设计:使用抽象块作为操作单元可以简化存储子系统
  3. 适合数据备份:方便备份,冗余存储

缺点:

  1. 过大则影响Mapreduce效率

namenode和datanode

namenode管理节点(Master,整个HDFS集群的管家,相当于数据目录)datanode工作节点(Worker).维护着文件系统树及整棵树内的所有文件和目录。这些信息以两个文件形式永久保存在本地磁盘上:命名空间镜像文件和编辑日志文件。namenode也记录着每个文件中各个块所在的数据节点信息,但不会永久保存块的位置信息(实时维护),会在系统重启时根据数据节点信息重建。

元数据

  • 文件是什么
  • 文件被分成多少块
  • 每个块和文件是怎么映射的
  • 每个块被存储在那个服务器上面

namenode

  • FsImage 保存系统文件树
    • 文件的复制等级
    • 块大小以及组成文件的块
    • 修改和访问时间
    • 访问权限
  • EditLog 记录对数据进行的操作
         => 底层FsImage
shell命令                 =>最新元数据 =>新版的FsImage/创建空的EditLog
         => EditLog各项操作

HDFS命名空间

  • 目录/文件/块
  • 通信协议 namenode <=>TCP/IP. datanode <=> rpc

局限性

  • 命名空间限制:namenode保存在内存中,所能存储规模有上限
  • 性能瓶颈:整个分布式文件吞吐量受限于单个namenode吞吐量
  • 隔离问题:由于集群中只有一个namenode,只有一个命名空间,因此无法对应用程序进行隔离
  • 集群的可用性:一旦这个唯一的名称节点发生故障,会导致整个集群变得不可用

HDFS存储原理

冗余数据保存

  • 加快数据传输速度
  • 很容易检查数据及错误
  • 保证数据可靠性

数据读取

最近节点读取

数据的错误与恢复

namenode: 通过second namenode回复
datanode: 心跳机制namenode标记宕机 namenode调整位置冗余备份数据再复制
data: 校验码校验 文件创建时为数据块生成校验码,读取时进行校验码验证 冗余数据恢复再复制

你可能感兴趣的:(HDFS 基础)