分布式文件系统
特点
- 容忍硬件故障,3个副本,RS(x,y)纠删码 RS(10,4)膨胀率1.4 RAID5
- 流式数据存储 只支持追加,删除,而不能修改
- 大数据集 (100w个文件300m内存)
- 简单的一致性模型 (是强一致性),不支持随机读取
- 移动计算比移动数据划算 “数据本地性“
- 异构软硬件可移植性
块
概念
- 硬盘 块大小一般为512B 每个文件系统都有默认块大小 xfs:4KB NTFS:4KB
- HDFS 块 默认128MB (分块=》chunk) 一个小文件不会占一整个块(硬盘会)
分布式文件系统引入块的好处
- 便于管理大文件
- 简化了文件系统的设计
- 对容错性的提升
- 对并行性的提升
NAMENODE
主/从 架构,每个集群一般只要1个(正在工作的)NAMENODE
NameNode管理文件系统的命名空间(namespace) 即管理文件系统元数据,两个文件永久保存在本地磁盘:命名空间镜像文件(fsimage)和编辑日志文件(editlog)
Name记录每个块所在DataNode的信息, 而DataNode维护块所在磁盘位置
-
NAMENODE目录结构
/dfs/nn/current/VERSION
- namespaceID
- clusterID
- blockpoolID
- cTime
- sotrageType
- layoutVersion
/dfs/nn/in_use.lock
/dfs/nn/current/edit.log
记录着当前时间内存中的事物,一定阈值后会写到fsiamge
hdfs oev -i edits_... -o ~/edit.xml -> 将edit文件(二进制)转换成xml可视文件
/dfs/nn/current/fsimage
包换所目录和文件inode的序列化信息(元信息),只记录块和DD的对应关系
Hfs oiv -i ... -o ... -> fsimage -> webhdfs、xml
永久性还原点
DATENODE
DataNode是文件系统的工作节点
DataNode根据客户端的请求来读或者写数据
-
DATANODE文件目录
/dfs/dn/current/BP-...
HDFS块存储在blk前缀的文件中,存一部分原始数据以及meta文件存储头部信息和校验和信息
当目录已经存储了64个数据块,就会新建一个子目录
JournalNode
共享存储
nn(active) editlog -> journalNode -> nn(standby)
复制块的放置
副本因子为3时,第一个数据块放置到本地机架(RACK)的一个节点(如果客户端在集群外,就随机选择一个节点),另一份数据块放置到异机架的一个节点,最后一份数据块放置到与第二块同一个机架的另一个节点。
重启
- 加载fsimage到内存,进入安全模式(只读)
- 执行时间戳后的edit.log生成新的fsimage
- DA向NN报告文件,当文件收集99.9%时,退出安全模式
Balancer
两个参数
- 阈值 5 -> 最大% - 最小% < 5% 停止重平衡