zoukankan      html  css  js  c++  java
  • HDFS快速入门

    一.简介

      HDFS【Hadoop Distributed File System】是Hadoop组件中的分布式存储系统,提供高可靠性、高扩展性和高吞吐率的数据存储服务。

    二.存储模型

      1.文件线性切割成块【Block】,块分散存储在集群的各个节点中。

      2.单一文件Block大小一致,不同的文件可以设置的不一样。

      3.Block可以设置副本数,副本分散在不同的节点【副本数不要超过节点数,这样副本设置才有意义】。

      4.文件上传可以设置Block大小和副本数,已上传的文件Block副本数可以调整,大小不变。

      5.只支持一次写入多次读取,同一时刻只有一个写入,可以追加数据。

    三.架构模型

      1.NameNode【主】节点保存文件元数据,DataNode节点保存文件Block数据。

      2.DataNode和NameNode之间通过心跳确认各个节点的健康情况,以及是否需要重启节点。

      3.HDFSClient与NameNode交互元数据信息,与DataNode交互文件Block数据【需先访问NameNode】。

      

    四.NameNode【NN】

      特点:

      1.基于内存存储,不会和磁盘发生交换。

      2.接受客户端的读写请求,收集DataNode汇报的Block列表信息。

      3.保存metadata信息,包括:文件ownership和permissions、文件大小、时间、Block列表、Block偏移量、位置信息和Block副本位置【由DataNode上报】等。

      持久化:

      1.NameNode的metadata信息在启动后会加载到内存。

      2.metadata存储到磁盘文件名称为"fsimage"。

      3.Block的位置信息不会保存到fsimage。

      4.edits记录对metadata的操作日志。

    五.DataNode【DN】

      特点:

      1.本地磁盘目录存储数据【Block】,文件形式

      2.同时存储Block的元数据信息文件

      3.启动DN时会向NN汇报block信息

      4.通过向NN发送心跳保持与其联系【3s一次】,如果NN10Minutes没有收到DN的心跳,则认为其已经lost,并copy其上的block到其它DN节点

    六.SecondaryNameNode【SNN】

      它不是NN的备份【但可以做备份】,它主要的工作是帮助NN合并edits log,减少NN启动时间。

      SNN执行合并时机

        》根据配置文件设置的时间间隔fs.checkpoint.period默认3600s

        》根据配置文件设置edits log大小fs.checkpoint.size规定edits文件的最大值默认是64M

      SNN合并流程图解:

      

    七.优点

      1.高容错性

        》数据自动保存副本

        》副本丢失后自动恢复

      2.适合批处理

        》数据不动代码动

        》数据位置暴露给计算框架【Block偏移量】

      3.适合大数据处理

        》GB、TB、甚至PB级别数据

        》百万规模以上的文件数量

        》10k+节点

      4.可构建在廉价机器上

        》通过多副本提高可靠性

        》提供了容错和恢复机制

    八.缺点

      1.小文件存取

        》占用NameNode大量内存

        》寻道时间超过读取时间

      2.并发写入、文件随机修改

        》一个文件只能有一个写者

        》仅支持append

      3.低延迟数据访问

        》数据延迟较大,比如毫秒级

        》低延迟与高吞吐率成反比

        

      

  • 相关阅读:
    python os
    [BZOJ2887] 旅行
    UVA1104 Chips Challenge
    CF364E Empty Rectangles
    CF1408H Rainbow Triples
    CF1214G Feeling Good
    CF506E Mr. Kitayuta's Gift
    采用Canal监听mysql数据库变化
    Java8 ParallelStream
    Java8 方法引用
  • 原文地址:https://www.cnblogs.com/yszd/p/10594090.html
Copyright © 2011-2022 走看看