HDFS浅谈

最近在做关于HBase的开发,由于HBase是基于HDFS的,所以对这方面进行了学习。

下面是总结的思维导图:


一、结构

hdfs的结构主要分三块:Client,NameNode (NN),DataNode  (DN)

 Client:客户端,系统使用者,调用HDFS API操作文件;与NN交互获取文件元数据;与DN交互进行数据读写。

 

  Namenode:元数据节点,是系统唯一的管理者。负责元数据的管理;与client交互进行提供元数据查询;分配数据存储节点等。

 

  Datanode:数据存储节点,负责数据块的存储与冗余备份;执行数据块的读写操作等。

其中namenode内存中存储的是=fsimage+edits。

fsimage:元数据镜像文件(文件系统的目录树。)

edits:元数据的操作日志(针对文件系统做的修改操作记录)

SecondaryNameNode负责定时默认1小时,从namenode上,获取fsimage和edits来进行合并,然后再发送给namenode,缓解namenode工作量。是namenode的冷备份。

二、写数据

1.用户定义数据块大小(默认为128M),定义副本数(默认为3份)

2.Client对文件进行切分

3.Client对NN进行请求,NN为每个数据块分配DN

4.Client对第一个DN发送数据块,第一个DN再把数据块传给第二个数据块,以此类推。每个DN收到数据包后都给Client一个应答,这是为了写数据容错,没有应答时Client会调整路线。

(这地方有些不确定,有的博客说发给NN确认,有的博客说第一个节点发给client确认,全部给NN确认,各有各的说法)

三、读数据

1.Client先联系NN,给NN文件名,NN查找出该文件的数据块表(记录了没给数据块对应的DN)传给Client

2.Client通过该表下载。可以通过数据块表进行读操作容错,也就是在某DN无法下载时换个节点下载。

四、故障发现

1.节点失效:心跳

2.通信故障:确认码

3.数据错误:总校验和

五、故障处理

在NN中存储着数据块表和DN列表(每个DN储存的数据块),当发生某个DN上的一个数据块错误时,更新数据块表,也就是从数据块表中删除这个数据块,如果发现DN失效时同时更新两个表。

NN周期扫描数据块表,发现没有按要求复制的数据块,分配DN对其复制。

六、备份规则

如果写入方在集群的节点上那么副本1就和其同机架,如果不是则随机。保证其他副本与副本1不同机架。


可以参考http://blog.csdn.net/mtchy/article/details/51352292  这篇转载文章用漫画解读了HDFS机制。

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值