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实现文件级同分布,即存在相关联的多个文件所有块都分布在同一个存储节点。文件级同分布实现文件的快速访问,避免因数据搬移造成大量的网络开销。
Hadoop数据完整性保障
HDFS其他关键设计要点说明
思考:
- hdfs包含哪些角色?
- 简述hdfs的读写流程?
- hdfs是什么?适合做什么?
既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,涵盖了95%以上大数据知识点,真正体系化!
由于文件比较多,这里只是将部分目录截图出来,全套包含大厂面经、学习笔记、源码讲义、实战项目、大纲路线、讲解视频,并且后续会持续更新
厂面经、学习笔记、源码讲义、实战项目、大纲路线、讲解视频,并且后续会持续更新**