这是我参与「第四届青训营 」笔记创作活动的的第8天,学习了【HDFS 原理与应用】的内容,重点是 HDFS的基本概念:架构及其设计,之后又了解了HDFS的应用场景。
HDFS基本介绍
应用层 hadoop MapReduce
调度层 yarn k8s
存储层 hdfs
文件系统
linux:xfs,ext(X),Btrfs
windows:fat,ntfs,
HDFS架构
client
读写都先向NameNode发送请求,获取DataNode(dn)列表
多个dn被写:pipeline写
namenode 元数据节点
- 维护目录树 保证持久化
- 维护文件和数据块 文件以数据块为单位多副本存储
- 维护DataNode心跳汇报
datanode
- 数据存取
- 心跳汇报
- 副本复制
pipeline IO
HDFS关键设计
namenode
fsimage:目录存内存,定时写磁盘
数据放置
namenode不会持久化,是靠dn汇报信息动态维护
editlog
修改日志 挂掉后,可通过editlog恢复数据
datanode
namenode时将文件分割成block,以block为单位进行数据存取
写异常处理
1.场景:写入时,client挂了
方案:Lease Recovery
思想:根据副本内容大小,选最小,全局更新
2.场景:写入时,dn挂了
方案:pipeline recovery
思想:重新构建pipeline
读异常
去其他节点读
旁路系统(异步解决会累计恶化的问题)
- 负载均衡:datanode容量均衡
- Mover:按照策略放副本到合适位置
控制面建设
可观测性设施
埋点、采集、分析
运维
解决机器规模庞大带来的运维困难
应用
ETL
Extract-Transform-Load 抽取、转换、加载。ETL是商业智能BI重要环节。
分布式存储的关键点
- 容错
- 一致性
- 可扩展
思考
1.DataNode的启动扫盘设计存在哪些问题
现有磁盘检测是串行执行,需要将其改为并行执行。
参考www.cnblogs.com/bianqi/p/12…
2.什么是分布式系统的“脑裂”
集群环境中往往有一个核心节点Master。但当两个机房的网络故障时,两机房会分别选出一个Master,两个机房的Master数据同步产生冲突。