关于Map-HDFS的存储过程笔记

HDFS是什么?

是一个分布式的文件系统,属于hadoop的一个存储的组件,用于存储海量的数据

特点是:容错性高,适合大数据的处理,流式的数据访问。但并不擅长低延迟的数据访问。

大体流程图:

客户端

1、客户端需要对上传的文件进行切分处理,如果超过阙值就对文件进行切分

2、客户端和NameNode进行交互,询问文件上传或下载的地址

3、客户端和DataNode进行交互,完成文件的上传和下载(通过散列效验文件的完整性)

4、客户端上传和下载是传输细粒度的64看数据包

5、客户端上传只传输给第一个DataNode,第一个Danode会传给第二个Dano,然后形成高可用性

zookeeper

1、zookeepker会在nameNode里面分别创建两个故障控制进程,帮助nameNode选主

2、如果ANN因为网络波动宕机,zookeeper会将ANN降级为SNN。然后SNN进行选主变成ANN

ActiveNode

1. 客户端询问文件上传至哪,NameNode 根据机架感知策略反馈可用节点;

2. NameNode 需要保存每个文件的元数据信息至内存(快速)和磁盘(安全);

3. 利用 QJM 小型文件系统保证元数据的高可用;

4. 接收 DataNode 的心跳,通过心跳判断节点是否存活已经接收文件块与 DN 的映射信息;

5. 给 DataNode 发送指令,副本如果不满足最小集群设置,会让 DN 进行复制。

SendByNOde

1. 负责定时的将 edits 文件进行合并,合并为 fsimage 文件

    Hadoop 2.x 以及以后 fsimage 文件的合并机制:

         时间纬度:1 小时合并一次;纬度检查周期:默认 1 分钟检查一次。

         操作纬度:edits 操作次数超过 100W 次;

2. NameNode 需要保存每个文件的元数据信息至内存;

3. 利用 QJM 小型文件系统保证元数据的高可用;

4. 接收 DataNode 的心跳,通过心跳判断节点是否存活已经接收文件块与 DN 的映射信息;

DataNode

1. 节点启动以后给两个 NameNode 发送心跳,给知存活,已经文件块与节点映射信息;

2. 与客户端进行交互,完成文件的上传与下载工作。

3. 接收 NameNode 的指令,在有需要时去对文件块进行复制。

心跳 3s,3s 无心跳表示节点超时,5分钟*2+3s*10 = 10分30秒 认为是故障

QJM

1. 小型文件系统,内部使用 Paxos 算法实现了自主选主,CP 模型;

2. Active NameNode 2 分钟生成一个 edits 文件并写入 QJM 实现元数据的高可用;

3. 每个 NameNode 上的 edits 元数据是不完整的(主备切换导致),但是 QJM 中一定是完整的;

4. QJM 只保存 edits 文件,不保存 fsimage 文件,fsimage 文件只保存在 NameNode 中。SNN 将合并后的 fsimage 发送给ANN,ANN 验证无误后,存放到自己的目录中;

5. ANN 使用 fsimage 加 edits_inprogress_ 文件还有大于 fsimage 的 edits 文件即可完全恢复元数据。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值