zoukankan      html  css  js  c++  java
  • HDFS 分布式文件系统架构原理

    HDFS 系统架构原理

    @数据分析-jacky

    1. 定义

    HDFS(Hadoop Distributed File System)是 Hadoop 项目的核心子项目,是分布式计算中数据存储管理的基础,是基于流数据模式访问和处理超大文件的需求而开发的,可以运行于廉价的商用服务器上。

    HDFS 源于 Google 在 2003年 10月份发表的 GFS(Google File System)论文。它其实就是 GFS 的一个克隆版本。

    2. 特点

    高容错性

    1.上传的数据自动保存多个副本。它是通过增加副本的数量,来增加它的容错性。

    2.如果某一个副本丢失,HDFS 机制会复制其他机器上的副本,而我们不必关注它的实现。

    支持超大文件

    超大文件在这里指的是几百 MB、几百 GB 甚至几 TB 大小的文件,一般来说,一个 Hadoop 文件系统会存储 T(1TB=1024GB),P(1P=1024T)级别的数据。

    流式数据访问

    HDFS 处理的数据规模都比较大,应用一次需要访问大量的数据。同时,这些应用一般是批量处理,而不是用户交互处理。HDFS 使应用程序能够以流的形式访问数据集,注重的是数据的吞吐量,而不是数据访问的速度。

    简化的一致性模型

    大部分的 HDFS 程序操作文件时需要一次写入,多次读取。在 HDFS 中,一个文件一旦经过创建、写入、关闭后,一般就不需要修改了。这样简单一致性模型,有利于提供高吞吐量的数据访问模型。

    3. 体系结构

    1.Client(客户端)

    • 1)实现文件切分

      • 将文件切分成一个一个的数据块,然后在进行存储。
    • 2)与 NameNode 交互,获取文件的位置信息

    • 3)跟 DataNode 交互,读取对应的数据块。

      • 我们实际上市在 DataNode 上读取数据
    • 4)管理和访问 HDFS

      • 我们可以通过客户端,对HDFS 进行增删改查

    2.NameNode

    Namenode 是 Master、管理者,是主从结构中主节点上运行的进程。

    • 1)管理 HDFS 的名称空间
    • 2)管理数据块的映射关系
    • 3)配置副本策略
    • 4)客户端的读写请求

    3.DataNode

    DataNode 就是 Slave,在从节点都会驻留一个数据节点的守护进程,它将 HDFS 数据块写到 Linux 本地文件系统的实际文件中,并不断将当前存储的数据块(block)报告给 namenode,并接受 namenode 的指令来创建、删除、移动本地磁盘的数据块。

    • 1)实际存储的数据块
    • 2)执行数据块的读/写操作

    4.Block(数据块)

    一个文件是被切分成多个 Block,并且每个 block 有多个副本,这些副本被分布在多个 datanode 上,它数据 HDFS 的最小存储单元。

    5.元数据

    是文件系统中文件和目录的信息以及文件和 block 的对应关系。

    6.命名空间镜像(FSlmage)

    HDFS 的目录树及文件/目录元信息是保存在内存中的,如果节点掉电或进程崩溃,数据将不再存在,必须将上述信息保存到磁盘,Fslmage 就是保存某一个时刻元数据的信息的磁盘文件。

    7.镜像编辑日志(EditLog)

    对内存目录树的修改,也必须同步到磁盘元数据上,但每次修改都将内存元数据导出到磁盘,显然是不现实的,为此,namenode 引入了镜像编辑日志,将每次的改动都保存在日志中,如果 namenode 机器宕机或者 namenode 进程挂掉后可以使用 FSImage 和 EditLog 联合恢复内存元数据。

    4. 读写数据流程

    @数据分析-jacky

  • 相关阅读:
    PAT B1045 快速排序 (25 分)
    PAT B1042 字符统计 (20 分)
    PAT B1040 有几个PAT (25 分)
    PAT B1035 插入与归并 (25 分)
    PAT B1034 有理数四则运算 (20 分)
    PAT B1033 旧键盘打字 (20 分)
    HDU 1231 最大连续子序列
    HDU 1166 敌兵布阵
    HDU 1715 大菲波数
    HDU 1016 Prime Ring Problem
  • 原文地址:https://www.cnblogs.com/shujufenxi/p/14413646.html
Copyright © 2011-2022 走看看