HDFS简介

分布式文件系统

特点

  • 容忍硬件故障,3个副本,RS(x,y)纠删码 RS(10,4)膨胀率1.4 RAID5
  • 流式数据存储 只支持追加,删除,而不能修改
  • 大数据集 (100w个文件300m内存)
  • 简单的一致性模型 (是强一致性),不支持随机读取
  • 移动计算比移动数据划算 “数据本地性“
  • 异构软硬件可移植性

概念

  • 硬盘 块大小一般为512B 每个文件系统都有默认块大小 xfs:4KB NTFS:4KB
  • HDFS 块 默认128MB (分块=》chunk) 一个小文件不会占一整个块(硬盘会)

分布式文件系统引入块的好处

  • 便于管理大文件
  • 简化了文件系统的设计
  • 对容错性的提升
  • 对并行性的提升

NAMENODE

  • 主/从 架构,每个集群一般只要1个(正在工作的)NAMENODE

  • NameNode管理文件系统的命名空间(namespace) 即管理文件系统元数据,两个文件永久保存在本地磁盘:命名空间镜像文件(fsimage)和编辑日志文件(editlog)

  • Name记录每个块所在DataNode的信息, 而DataNode维护块所在磁盘位置

  • NAMENODE目录结构

    /dfs/nn/current/VERSION
    1. namespaceID
    2. clusterID
    3. blockpoolID
    4. cTime
    5. sotrageType
    6. layoutVersion
    /dfs/nn/in_use.lock

    /dfs/nn/current/edit.log

    记录着当前时间内存中的事物,一定阈值后会写到fsiamge

    hdfs oev -i edits_... -o ~/edit.xml -> 将edit文件(二进制)转换成xml可视文件

    /dfs/nn/current/fsimage

    包换所目录和文件inode的序列化信息(元信息),只记录块和DD的对应关系

    Hfs oiv -i ... -o ... -> fsimage -> webhdfs、xml

    永久性还原点

DATENODE

  • DataNode是文件系统的工作节点

  • DataNode根据客户端的请求来读或者写数据

  • DATANODE文件目录

    /dfs/dn/current/BP-...

    HDFS块存储在blk前缀的文件中,存一部分原始数据以及meta文件存储头部信息和校验和信息

    当目录已经存储了64个数据块,就会新建一个子目录

JournalNode

共享存储

nn(active) editlog -> journalNode -> nn(standby)

复制块的放置

副本因子为3时,第一个数据块放置到本地机架(RACK)的一个节点(如果客户端在集群外,就随机选择一个节点),另一份数据块放置到异机架的一个节点,最后一份数据块放置到与第二块同一个机架的另一个节点。

重启

  1. 加载fsimage到内存,进入安全模式(只读)
  2. 执行时间戳后的edit.log生成新的fsimage
  3. DA向NN报告文件,当文件收集99.9%时,退出安全模式

Balancer

两个参数

  1. 阈值 5 -> 最大% - 最小% < 5% 停止重平衡

HA

你可能感兴趣的:(HDFS简介)