大数据-HDFS原理

什么是HDFS?

  • HDFS(Hadoop Distribution File System)是基于谷歌发布的GFS论文设计的;
  • 出了具有其他文件系统具有的特性之后,HDFS还具有:
  • 高容错性:认为硬件总是不可靠的;
  • 高吞吐量:为大量数据访问的应用提供高吞吐量的支持;
  • 大文件存储:支持存储TB或PB级的数据。

大数据-HDFS原理_第1张图片
HDFS作为Hadoop的基础存储设施,实现一个高容错,分布式,可线性扩展的文件系统

HDFS基础系统架构

大数据-HDFS原理_第2张图片

hdfs架构包含三个部分:

  • NameNode:
    用于存储、生成文件系统的元数据。运行一个实例。
  • DataNode:
    用于存储实际数据,将自己管理的数据块报送给NameNode,运行多个实例。
  • Client:
    支持业务访问HDFS从NameNode,DataNode获取的数据返回给业务。多个实例和业务一起运行。

HDFS写入数据流程
1.hdfs client向distribute file system发起create请求

2.NNcreate

3.hdfs client向FSdata output stream发起write指令

4.FSdata output stream 向DN写入数据

5.DN向FSdata output stream 返回一个校验包的指令:ack packet

6.写完之后关闭数据写入进程

7.NN收到写入完成的命令:complete
大数据-HDFS原理_第3张图片

HDFS读数据流程
1.hdfs client向distribut system发起读的请求:open

2.distribute system向NN获取块的位置信息:get block location

3.向输出流系统(FSData outputsystem)发起读的指令:read

4.输出流系统(FSdata outputsystem)向数据节点DN发起读指令:read

5.输出流系统(FSdata outputsystem)向数据节点DN发起读指令:read

6.最后关闭读数据的进程
大数据-HDFS原理_第4张图片

HDFS关键特性

大数据-HDFS原理_第5张图片

  1. HA高可靠:
    Zookeeper:分布式协调。主要用于存储HA状态文件,主备信息。zookeeper集群至少3个节点及以上且为基数。
    NameNode:主备模式。主提供服务,备合并元数据和作为主的热备
    ZKFC(zookeeper failvor controller):用于控制NameNode节点的主备状态
    JN(journalnode):用于共享存储NameNode产生的editlog
    大数据-HDFS原理_第6张图片

  2. 数据副本机制
    副本距离计算公式:
    同一台服务器距离为0
    distance(rack1/d1,rack1/d1)=0
    同一机架,不同服务器距离为2
    distance(rack1/d1,rack1/d3)=2
    不同机架的服务器距离为4
    distance(rack1/d1,rack2/d1)=4
    副本放置策略:
    第一个副本在本地机器
    第二个副本在远端机架节点
    第三个副本选择和第一个副本相同机架不同节点
    第四个及以上,随机选择副本存放位置

  3. 元数据持久化
    大数据-HDFS原理_第7张图片
    元数据持久化过程:
    1.主NN每2分钟生成edit.new,并上传JN
    2.备NN从主NN下载fsimage,并从JN下载edit.log
    3.备NN将旧的日志和元数据合并,生成新元数据fsimage.kcpt
    4.备NN将元数据上传到主NN
    5.主NN对上传的元数据进行回滚
    6.NN每隔一小时或edit.log到64M,重复2-5步骤

  4. 元数据持久化健壮性机制

  5. HDFS联邦
    HDFS Federation使用多个独立的NN提供命名空间管理和块管理功能。它们之间是联邦关系,它们之间相互独立且不需相互协调;
    每个namespace使用一个block pool管理模块,每个block pool内部自治,不会与其他block pool交流。
    每个DN为每个block pool提供存储块,并向所在集群NN注册,周期性的发送心跳和块信息报告,同时处理来自NN的指令。
    一个NN失效不会影响其下的DN为其他NN的服务。
    用户价值
    扩展性:支持NN和Nspace水平扩展,后向兼容,结构简单
    性能:文件性能不再制约于单个NN的吞吐量,支持多个NN
    隔离性:按照应用程序和种类分离Nspace,进而增强隔离性。
    命名空间管理:
    命名空间支持对HDFS中的目录,文件和做块类似文件系统的创建、修改、删除、列表文件和目录等基本操作。Federation中存在多个命名空间,可以使用client side mount table对命名空间进行划分和管理。
    块管理:
    处理DN对NN的注册请求以及周期性的心跳信息
    处理来自块的报告信息,维护块的位置信息
    处理与块的相关操作:块的创建、删除和修改以及获取块的信息
    管理副本位置(replica placement)和块的复制以及块的删除

  6. 配置HDFS的数据存储策略
    大数据-HDFS原理_第8张图片

Colocation 同分布

定义:将存在关联关系的数据或可能存在关联关系的数据存储在同一个存储节点上
Hadoop实现文件级同分布,即存在相关联的多个文件所有块都分布在同一个存储节点。文件级同分布实现文件的快速访问,避免因数据搬移造成大量的网络开销。
大数据-HDFS原理_第9张图片

Hadoop数据完整性保障

大数据-HDFS原理_第10张图片

HDFS其他关键设计要点说明

大数据-HDFS原理_第11张图片

思考:

  1. hdfs包含哪些角色?
  2. 简述hdfs的读写流程?
  3. hdfs是什么?适合做什么?

你可能感兴趣的:(大数据,运维)