您的位置:首页 > 运维架构

Hadoop之HDFS认识篇

2017-08-21 14:33 281 查看

前言:

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

HDFS介绍

HDFS为了做到可靠性创建了多份数据块的复制,并将它们放置在服务器群的计算机节点中,MapReduce就可以在它们所在的节点上处理这些数据了。

通俗说就是,HDFS给一份数据备份了多份放在多个磁盘中,如果其中一个磁盘的数据丢失,那么也不会影响数据,详细见下图:



HDFS结构

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

NameNode

① 存储元数据

② 元数据保存在内存中;

③ 保存文件,block,datanode之间的映射关系。

DataNodes

① 存储文件内容;

② 文件内容保存在磁盘;

③ 维护了block id到datanode本地文件的映射关系。

HDFS架构

架构图如下所示:



主要功能介绍:

1、 NameNode(NN)

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

NameNode保存metadate信息包括:

文件owership和permissons;

文件包含哪些块;

Block保存在哪个DataNode(又DataNode启动时上报);

metadata存储到磁盘文件名为“fsimage”;

Block的位置信息不会保存到fsimage;

edits记录对metadata的操作日志

2、SecondaryNameNode(SNN)

它不是NN的备份(但可以做备份),它的主要工作是帮组NN合并edits log,减少NN启动时间;

SNN执行合并时机:

根据配置文件设置的时间间隔fs.checkpoint.priod 默认3600秒;

根据配置文件设置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
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  hadoop hdfs