HDFS概述

HDFS优缺点

HDFS优点

高容错性

  • 数据自动保存多个副本
  • 副本丢失后,自动恢复

适合大数据批处理

  • 移动计算不移动数据
  • 数据位置暴露给计算框架
  • GB、 TB甚至PB级别数据
  • 百万规模以上的文件数量
  • 10K节点规模

流式文件访问

  • 一次写入,多次读取
  • 保证数据一致性

构建成本低、安全可靠

  • 构建在廉价机器上
  • 通过多副本提高可靠性
  • 提供了容错和恢复机制

HDFS缺点

不适合低延迟数据访问

不适合大量小文件存储

  • 占用NameNode大量内存空间
  • 磁盘寻道时间超过读取时间

不适合并发写入

  • 一个文件只能有一个写入者

不提供文件随机修改

  • 只支持追加

HDFS基本架构与原理

HDFS架构图解

HDFS概述_第1张图片
HDFS架构.jpg

基本概念

NameNode(Active)

  • Master节点,只有一个
  • 管理HDFS文件系统的
  • 命名空间
  • 维护文件元数据信息
  • 管理副本策略(默认3个副本)
  • 处理客户端读写请求

NameNode(Standby)

  • NameNode(Active)的热备节点,(就是个备胎)
  • 周期性同步edits编辑日志,定期合并fsimage与edits到本地磁盘
  • 当NameNode(Active)出现故障则会快速上位,成为新的Active节点

NameNode元数据

  • edits:编辑日志,客户端对目录和文件的写操作首先被记到edits日志中,如:创建文件、删除文件等
  • fsimage:文件系统元数据检查点镜像文件,保存了文件系统中所有的目录和文件信息,如:一个目录下有哪些子目录、子文件,文件名,文件副本数,文件由哪些块组成等

DataNode

  • Slave工作节点,可以启动多个
  • 存储数据块和数据校验和
  • 执行客户端的读写请求操作
  • 通过心跳机制定期向NameNode汇报运行状态和所有块列表信息
  • 在集群启动时DataNode向NameNode提供存储的Block块列表信息

Block块

  • 文件写入到HDFS会被切分成若干个Block块
  • 数据块大小固定,默认128MB,可自定义修改
  • HDFS最小存储单元
  • 若一个文件的大小小于设置的数据块大小,则不会占用整个块的空间
  • 默认情况下每个Block有三个副本

Client

  • 文件切分
  • 与NameNode交互获取文件元数据信息
  • 与DataNode交互,读取或写入数据
  • 管理HDFS

问题:

HDFS 为什么不适合存储小文件?

  1. 元数据信息存储在NameNode内存中,内存大小有限
  2. NameNode存储Block数目有限
    • 一个block元信息消耗大约150byte内存
    • 存储1亿个block,大约需要20GB内存
    • 如果一个文件大小为10K,则1亿个文件大小仅有1TB,却消耗NameNode 20GB内存
  3. 存取大量小文件消耗大量的磁盘寻道时间

未完待续。。。

你可能感兴趣的:(HDFS概述)