产生背景:分布式文件管理系统,源自于Google的GFS(Goole File System)论文,GFS的开源克隆版
重点:分布式,易扩展(增加机器来增加存储量,多副本)
HDFS架构
1.master(主节点 NameNode/NN)和多个salve(副节点 DataNode/DN)
一个文件按照一定规则拆分成多个Block (一般为128M为一块)
NN:(1)负责客户端请求的响应
(2)负责元数据的管理【名称,副本系数,Block存放的DN】
DN:(1)存储用户的文件队形的数据块(Block)
(2)定期向NN发送信息,汇报其本身和所有Block,状态
经典部署:NameNode+N个DataNode
副本存放策略:本Rack(机架)放置一个,另一机架放置在不同节点分别放置(不作要求总共为3份)
优点:
数据冗余,硬件容错(block,多副本)
适合批处理
处理流式的数据访问
适合存储大文件
可构建在廉价机器
缺点:
不适合低延迟的数据访问
不适合小文件存储
并发写入、文件随机修改(只支持append追加)
组成结构:
Client:客户端用户程序
切分文件成数据块
与NameNode交互,获取文件的位置信息
与DataNode交互,读取对应数据块
管理和访问HDFS
NameNode(Master):集群管理者,负责者
管理HDFS名称空间
管理数据块的映射关系
配合副本策略
客户端的读写请求
SecondaryNameNode:辅助NameNode
分担工作量
定期合并image镜像文件和edits日志文件,并推送给NameNode
紧急情况恢复NameNode
DataNode(Slave):实际存储数据
存储实际的数据块
执行数据块的读写操作
解决NameNode单点故障:
namdNode(active)与nameNode(standby(备用))数据的共享存储(zoookeeper解决两者之间同步问题)
jnNode(日志,镜像文件(fsimage))
zoookeeper接收nameNode的心跳,调控nameNode接替工作
HA架构扩展nameNode