美文网首页
HDFS-分布式文件系统

HDFS-分布式文件系统

作者: 一个喜欢烧砖的人 | 来源:发表于2018-09-15 09:49 被阅读16次

前言

  • 在大数据场景中,大量数据是以文件形式储存的,典型的是行为日志数据(用户搜索日志,购买日志,点击日志,以及机器操作数据等)
  • 这些数据都很重要,则就必须满足可扩展,容错,易用等特点

背景

HDFS的出现主要解决一下问题:

  • 容错性
    数据越来越大,所以储存的服务器就会原来越多,这就要求当中一台服务器异常不影响数据
  • 统一格式储存
    数据的大小各不相同,这就要求数据的保存要从新定义,(block 块是一个很好的解决问题)
  • 一次写入多次读取
    有些数据(日志)只会写一次,多次读取

分布式系统的存储种类

  • 文件级别的分布式系统
    存储单位是文件
  • 块级别的分布式系统
    存储单位是将文件分为的等大小的块

HDFS的基本架构

hdfs 采用主从架构(master-slave)

NameNode(主节点)
  • hdfs的集群管理者,负责管理集群的元信息(维护整个文件的目录结构树和数据块信息)和管理datanode(通过心跳周期性的检测DataNode的存活状态

  • NameNode的相关问题
    1、单点故障:
    一个集群只有一个NameNode为之服务,称为“active NameNode”,为了避免单点故障,可备用一台备用机“standby NameNode”;
    2、主备切换:
    手动模式:通过命令
    自动模式:借助zookeeper
    3、状态同步:
    借助第三方日志储存系统,activeNameNode将操作日志写入共享系统,standby NameNode从共享系统中读取出来

  • 拓展
    当数据越来越大时,单个nameNode会成为数据传输的瓶颈,这是就需要对NameNode进行分片,也就是可以允许多个NameNode 对集群进行服务(当然,也得考虑单点故障)

SecondNameNode(检查点节点)
  • 首先,它定时到NameNode去获取edit logs,并更新到fsimage上。
  • 一旦它有了新的fsimage文件,它将其拷贝回NameNode中。
  • NameNode在下次重启时会使用这个新的fsimage文件,从而减少重启的时间。
DataNode(从节点)
  • 储存实际的数据块,通过心跳即时汇报自己的状态信息
Client(客户端)
  • 用户借助client来与nameNode 和 dataNode 进行交互,完成各种操作
  • client 完成数据的分块
  • client 向dataNode传输数据是流水线操作

Hdfs的容错

  • NameNode 异常
    前面已经提到了nameNode 可设置主从配置
  • DataNode 服务器异常
    Hdfs的数据默认是3副本,当发现有数据异常,nameNode 可从新分配
  • 数据块损坏
    NataNode在存储数据的时候,会相应的生成一段随机数,当读取的时候发现随机数不一致,就认为数据失效了

HDFS的副本放置策略

  • 客户端与Datanode 同节点(第一个副本写在同节点的datanode上,另外两个副本写在另一个相同机架的不同dataNode上)
  • 客户端与NameNode 与dataNode 不同节点,(第一个副本会随机写在一个nataNode上,另外两个写在另一个相同机架的不同节点上)

HDFS的异构存储介质

  • hdfs 可支持多种储存介质(固态硬盘,内存等)

集中式缓存管理

HDFS可通过命令或者api来管理集中式缓存系统中的文件和目录,来提高效率

访问方式

  • shell
  • api

相关文章

网友评论

      本文标题:HDFS-分布式文件系统

      本文链接:https://www.haomeiwen.com/subject/cmuagftx.html