hdfs架构包含三个部分:
- NameNode:
用于存储、生成文件系统的元数据。运行一个实例。 - DataNode:
用于存储实际数据,将自己管理的数据块报送给NameNode,运行多个实例。 - Client:
支持业务访问HDFS从NameNode,DataNode获取的数据返回给业务。多个实例和业务一起运行。
HDFS写入数据流程
1.hdfs client向distribute file system发起create请求
2.NNcreate
3.hdfs client向FSdata output stream发起write指令
4.FSdata output stream 向DN写入数据
5.DN向FSdata output stream 返回一个校验包的指令:ack packet
6.写完之后关闭数据写入进程
7.NN收到写入完成的命令:complete
HDFS读数据流程
1.hdfs client向distribut system发起读的请求:open
2.distribute system向NN获取块的位置信息:get block location
3.向输出流系统(FSData outputsystem)发起读的指令:read
4.输出流系统(FSdata outputsystem)向数据节点DN发起读指令:read
5.输出流系统(FSdata outputsystem)向数据节点DN发起读指令:read
6.最后关闭读数据的进程
HDFS关键特性
- HA高可靠:
Zookeeper:分布式协调。主要用于存储HA状态文件,主备信息。zookeeper集群至少3个节点及以上且为基数。
NameNode:主备模式。主提供服务,备合并元数据和作为主的热备
ZKFC(zookeeper failvor controller):用于控制NameNode节点的主备状态
JN(journalnode):用于共享存储NameNode产生的editlog
- 数据副本机制
副本距离计算公式:
同一台服务器距离为0
distance(rack1/d1,rack1/d1)=0
同一机架,不同服务器距离为2
distance(rack1/d1,rack1/d3)=2
不同机架的服务器距离为4
distance(rack1/d1,rack2/d1)=4
副本放置策略:
第一个副本在本地机器
第二个副本在远端机架节点
第三个副本选择和第一个副本相同机架不同节点
第四个及以上,随机选择副本存放位置 - 元数据持久化
元数据持久化过程:
1.主NN每2分钟生成edit.new,并上传JN
2.备NN从主NN下载fsimage,并从JN下载edit.log
3.备NN将旧的日志和元数据合并,生成新元数据fsimage.kcpt
4.备NN将元数据上传到主NN
5.主NN对上传的元数据进行回滚
6.NN每隔一小时或edit.log到64M,重复2-5步骤 - 元数据持久化健壮性机制
- HDFS联邦
HDFS Federation使用多个独立的NN提供命名空间管理和块管理功能。它们之间是联邦关系,它们之间相互独立且不需相互协调;
每个namespace使用一个block pool管理模块,每个block pool内部自治,不会与其他block pool交流。
每个DN为每个block pool提供存储块,并向所在集群NN注册,周期性的发送心跳和块信息报告,同时处理来自NN的指令。
一个NN失效不会影响其下的DN为其他NN的服务。
用户价值
扩展性:支持NN和Nspace水平扩展,后向兼容,结构简单
性能:文件性能不再制约于单个NN的吞吐量,支持多个NN
隔离性:按照应用程序和种类分离Nspace,进而增强隔离性。
命名空间管理:
命名空间支持对HDFS中的目录,文件和做块类似文件系统的创建、修改、删除、列表文件和目录等基本操作。Federation中存在多个命名空间,可以使用client side mount table对命名空间进行划分和管理。
块管理:
处理DN对NN的注册请求以及周期性的心跳信息
处理来自块的报告信息,维护块的位置信息
处理与块的相关操作:块的创建、删除和修改以及获取块的信息
管理副本位置(replica placement)和块的复制以及块的删除 - 配置HDFS的数据存储策略
Colocation 同分布
定义:将存在关联关系的数据或可能存在关联关系的数据存储在同一个存储节点上
Hadoop实现文件级同分布,即存在相关联的多个文件所有块都分布在同一个存储节点。文件级同分布实现文件的快速访问,避免因数据搬移造成大量的网络开销。
自我介绍一下,小编13年上海交大毕业,曾经在小公司待过,也去过华为、OPPO等大厂,18年进入阿里一直到现在。
深知大多数大数据工程师,想要提升技能,往往是自己摸索成长或者是报班学习,但对于培训机构动则几千的学费,着实压力不小。自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前!
因此收集整理了一份《2024年大数据全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友。
既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,基本涵盖了95%以上大数据开发知识点,真正体系化!
由于文件比较大,这里只是将部分目录大纲截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且后续会持续更新
如果你觉得这些内容对你有帮助,可以添加VX:vip204888 (备注大数据获取)
节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且后续会持续更新**
如果你觉得这些内容对你有帮助,可以添加VX:vip204888 (备注大数据获取)
[外链图片转存中…(img-KFQ9Obiv-1712887872370)]