Hadoop之HDFS认识篇

来源:互联网 发布:松下a4伺服软件 编辑:程序博客网 时间:2024/06/06 02:54

前言:

Hadoop分布式文件系统(HDFS)被设计成适合运行在通用硬件(commodityhardware)上的分布式文件系统。它和现有的分布式文件系统有很多共同点。但同时,它和其他的分布式文件系统的区别也是很明显的。HDFS是一个高度容错性的系统,适合部署在廉价的机器上。HDFS能提供高吞吐量的数据访问,非常适合大规模数据集上的应用。

HDFS介绍

HDFS为了做到可靠性创建了多份数据块的复制,并将它们放置在服务器群的计算机节点中,MapReduce就可以在它们所在的节点上处理这些数据了。
通俗说就是,HDFS给一份数据备份了多份放在多个磁盘中,如果其中一个磁盘的数据丢失,那么也不会影响数据,详细见下图:

这里写图片描述

HDFS结构

主要由三大部分组成:NameNode(NN)、SecondaryNameNode(SNN)和DataNodes(DN)。

  1. NameNode
    ① 存储元数据
    ② 元数据保存在内存中;
    ③ 保存文件,block,datanode之间的映射关系。
  2. DataNodes
    ① 存储文件内容;
    ② 文件内容保存在磁盘;
    ③ 维护了block id到datanode本地文件的映射关系。

HDFS架构

架构图如下所示:

这里写图片描述

主要功能介绍:

1、 NameNode(NN)

  • NameNode主要功能:接受客户端的读写服务;

  • NameNode保存metadate信息包括:

    1. 文件owership和permissons;
    2. 文件包含哪些块;
    3. Block保存在哪个DataNode(又DataNode启动时上报);
    4. metadata存储到磁盘文件名为“fsimage”;
    5. Block的位置信息不会保存到fsimage;
    6. edits记录对metadata的操作日志

2、SecondaryNameNode(SNN)

  • 它不是NN的备份(但可以做备份),它的主要工作是帮组NN合并edits log,减少NN启动时间;
  • SNN执行合并时机:
    1. 根据配置文件设置的时间间隔fs.checkpoint.priod 默认3600秒;
    2. 根据配置文件设置edits log大小fs,checkpoint.size规定edits文件的最大值默认是64MB。

3、 DataNode(DN)

  • 存储数据(Block);
  • 启动DN线程的时候会向NN汇报block信息;
  • 通过想NN发送心跳保持与其联系(3秒一次),如果NN 10分钟没有收到DN的心跳,则认为其已经lost,并copy骑上的block到其他DN上去。

4、Block的副本放置策略

  • 第一个副本:放置在上传文件的DN;如果是集群外提交,则随机挑选一台磁盘不太满,CPU不太忙的节点。
  • 第二个副本:放置在于第一个副本不同的机架节点上。
  • 第三个副本:与第二副本相同机架的节点。
  • 更多副本:随机节点。

SNN合并流程

建议:把SNN和NN放在不同的服务器上。
这里写图片描述

HDFS读流程

具体操作如下图所示:

这里写图片描述

HDFS写流程

具体操作如下图所示:

这里写图片描述

ack:确认字符,表示发来的数据已确认接收无误。
详细见百度百科:https://baike.baidu.com/item/ACK/3692629?fr=aladdin