HDFS原理与应用|青训营笔记

94 阅读2分钟
这是我参加参与「第四届青训营」笔记创作活动的的第4天

之前我们完成了批计算,流计算,流批一体的计算方式的学习,接下来我们会开始大数据中重要的一部分数据存储层的学习;

hdfs不同于一般数据库存储到安装数据库的机器上,采用分布式存储;

HDFS功能特性

1.分布式,受GFS启发,用java实现的开源系统,没有实现完整的POSIX文件系统语义;

2.容错,自动处理规避多种错误场景,如网络错误,机器宕机;

3.高可用,一主多备模式-->元数据,数据多副本-->用户数据;

4.高吞吐,client直接从节点读取用户数据,server支持并发读写;

5.可拓展,支持联邦集群模式,节点数量可达10w级别;

6.廉价,只需通用硬件,无需高端昂贵的硬件设备;

Client写流程

1.client向namenode请求写入新数据库;

2.返回副本目标DN列表;

3.client向Datanode写数据块,并返回ACK;

5.client对datanode进行刷新;

6.client向namenode 发送complete请求,

Client读流程

1.client向namenode发送getblocklocations请求;

2.返回副本目标列表;

3.client读取数据块;

分布式存储系统基本概念

1.容错能力:能够处理绝大部分异常,如服务器宕机,网络异常磁盘故障,网络超时etc;

2.一致性模型:数据多副本存放,保障多个副本内容一致;

3.可拓展性:具有横向扩张(scale-out)的能力;

4.节点体系:有主从模式,对等模式,必须具有高可用功能;

5.数据放置:系统由多个节点组成,数据存放时需考虑数据存放策略;

6.数据需要落盘持久化,单机存储引擎需要根据系统特点,高效取得存取硬盘数据;

关键设计

HDFS写异常处理

情景:文件写了一半,client挂掉,可能产生副本不一致,Lease无法释放;

client要修改文件时,需要通过namenode上锁(Lease);
解决方案:lease recovery;

情景:文件写入中,Datanode侧出现异常挂掉了;

解决方案:Pipeline recovery;

Client读异常处理

情景:读取文件过程中,Datanode侧异常挂掉;
解决方法:节点Failover

通用存储应用:对象存储,消息队列,冷数据层,海量日志,备份数据;