# HDFS原理与应用||青训营

115 阅读5分钟

HDFS原理与应用||青训营

这是我参加青训营的第6天

一、HDFS基本介绍

01.HDFS:

应用层map Reduce  Spark
调度层hadoopYARN
存储层HDFS

1.1Windows单机文件系统

1.2Linux单机文件系统

1.3分布式文件系统

image.png

大容量:更多的机器,更多的存储介质
高可靠:多个副本提高容错能力
低成本:不需要搞端硬件来扩容

1.4 分布式存储系统

image.png

1.5HDFS功能特性

01.分布式:受GFS启发,用Java实现的开源系统,没有实现完整的POSIX文件系统语义
02.容错:自动处理、规避多种错误场景,例如常见的网络错误、机器等
03.高可用:一主多备模式实现元数据高可用,数据多副本实现用户数据的高可用
04.高吞吐:Client直接从DataNode读取用户数据,服务端支持海量client并发读写
05.可扩展:支持联邦集群模式,DataNode数量可达10w级别
06.廉价:只需要通用硬件,不需要定制高端的昂贵硬件设备

1.6演示环境-HDFS节点

image.png

Hadoop技术体系
分布式文件系统
分布式文件系统
分布式存储系统
HDFS功能特性
演示环境-HDFS节点

二、架构原理

2.1HDFS组件

image.png

在一个实际过程中,namenode很少,但是datanode很多

2.2Client写流程

image.png

不是所有的请求列出来,客户端在写的时候,不知道写在哪里,现在NameNode先选择3块给他,然后建立链接然后返回回去,3是横跨3个链接,

2.3Client读流程

image.png

 先问然后放在不同节点,客户端会选择第一个交互就可以读到数据块的内容,读写都是先问NameNode获取的
 NameNode也是中枢节点

2.4元数据节点NameNode

image.png

2.5数据节点DataNode

image.png 数据块存取:DataNode需要高效实现数据块在硬盘上的存取

心跳汇报:把存放在本机的数据块列表发送给NameNode,以便NameNode能维护数据块的位置信息,同时让NameNode确定该节点处于正常存活状态
副本复制:

1.数据写入时Pipeline IO操作 2.机器故障时补全副本

三、HDFS多场景的应用

3.0分布式存储系统基本概念

```js
1.容错能力:能够处理觉大部分异常场景,例如服务器诺机、网络异常。磁盘故障。网络超时等。
2.一致性模型:为了实现容错,数据必须多副本存放,一致性要解决的问题是如何保证这多个副本的内容都是一致的
3.可扩展性:分布式存储系统需要具备横向扩张scale-out的能力
4.节点体系:常见的有主从模式,对等模式等,不管哪种模式,高可用是必须的功能。
5.数据放置:系统是由多个节点组成,数据是多个副本存放时,需要考虑数据存放的策略。
6.单机存储引擎:在绝大部分存储系统中,数据都是需要落盘持久化,单机引擎需要解决的是根据系统特点,如何高效的存取硬盘数据
```

3.1NameNode 目录树维护

fsimage
image.png
文件系统目录树
完整的存放在内存中
定时存放到硬盘上
修改是只修改内存中的目录树
蓝色目录,绿色文件,会不定期的上传到硬盘上,定期做一个快照,然后保存。如果节点挂了后没有保存后可能会丢失
image.png
Editlog
目录树的修改日志
client更新目录树需要持久化Editlog后才能表示更新成功
Editlog可存放在本地文件系统,也可存放在专用系统上
NameNode Ha方案一个关键点就是如何实现Editlog共享

3.2NameNode数据放置

数据块信息维护
目录树保存每个文件的块id
NameNode维护每个数据块所在的节点信息
NameNode根据DataNode汇报的信息动态维护位置信息
NameNode不会持久化数据块位置信息
数据块放置策略
image.png
新数据存放到哪写节点
数据均衡需要怎么合理搬迁数据
3个副本怎么合理放置
第二个放置比较好

3.3DataNode

数据块的硬盘存放
文件在NameNode已分割成block
dataNOde已block为单位进行存取
启动扫盘
dataNOde需要知道本机存放了哪些数据块
启动时把本机硬盘上的数据块列表加载在内存中

image.png

3.4HDFS写异常处理:Lease Recoverty

image.png

情景:文件写了一半,client自己挂掉了。可能产生的问题:
副本不一致
Lease无法释放
租约:client要修改一个文件,需要通过NameNode上锁,这个锁就是租约(Lease)。
解决方法:Lease Recovery(中间恢复):我去比较三个副本的长度,如果长度不一样选最小的更新,然后作为最终结果,会有十分钟超时,如果超时那就会判断死亡,然后踢掉

image.png

情景:文件写入过程中,DataNode侧出现异常挂掉了
异常出现的时机:
创建连接时
数据传输时
complete阶段
解决方法:Pipeline Recovery

3.5Client读异常处理

情景:读取文件的过程,dataNode测出现异常挂掉了
解决办法:节点Failover(半死不活状态读取很慢)
增强情景:节点半死不过,读取很慢(可以更换节点)
image.png

3.6旁路系统

它积累的一些问题,可以简化一些问题,把解决问题是时间往后退,如果一起解决它。
Balancer:均衡DataNode的容量image.png
Mover:确保副本放置符号策略要求
image.png

3.7控制面建设

可观测性设施
·指标埋点
·数据采集
·访问日志
·数据分析
运维体系建设
·运维操作需要平台化
·NameNode操作复杂
·DataNode机器规模庞大
·组件控制面APl

四、分布式存储系统通用基本概念

4.1使用HDFS的公司

image.png
4.2 初窥大数据生态
image.png

4.3 PySpark读写HDFS文件

4.4 ETL: Extract, Transform,Load

image.png

ETL从数据库把一些数据转化出来,然后转化

4.5 OLAP查询引擎

image.png

4.6 HBase

image.png

4.7机器学习

image.png

4.8通用存储应用

image.png