HDFS
分布式文件系统
特点
高可用和高容错
设计运行在普通硬件上 故障很正常 提供文件存储副本策略
可以实现错误自检并快速修复
流式数据访问
做批量处理 更关注数据访问的高吞吐量
弹性存储,支持大规模数据集
根据业务灵活增加或者删减存储节点
简单一致模型
一次性写 多次读 简化了数据一致性问题 使高吞吐量成为可能
移动计算而非移动数据
移动大文件的时候 可以减少网络的拥塞和提高系统的吞吐量
协议和接口多样性
提供了多种接口和自己的专用接口
多样的数据管理功能
对于数据压缩、加密、缓存等提供了多样的管理功能
架构设计
NameNode
元数据管理者 管理NameSpace,
记录文件如何切割成块以及分别存储在集群中的那些数据节点上
DateNode
文件系统的工作节点根据客户端或者NameNode的指令
扶着hdfs数据块的读写和检索
Client
客户端代表用户和NameNode和Datanode交互
HDFS读取文件的流程
读文件
Client向NameNode发送请求,寻找到数据块的位置信息
NameNode返回元数据信息
Client与DateNode交互 读取block块的信息 并行读取 最后客户端合并数据
写文件
Client向NameNode发送请求,寻找可以写入block块的机器信息
若文件过大 会分成一个一个的block块 分开请求
Client获取到位置信息后开始写入DateNode,以package包的形式依次写入
写完所有block块后 Client告诉DateNode已经写完 关闭socket流
DateNode向NameNode报告新增信息
HDFS高可用的措施
冗余备份
为防止丢失 冗余副本 冗余多少自己设置
跨机架副本存放
会在另外的机架上存储备份 防止机架挂掉
心跳检测
DateNode定时向NameNode发送心跳包 确保未宕机
数据完整性检测
NameNode创建HDFS文件时 会计算每个数据的校验并存储 存入新数据后,比较校验的结果
安全模式
刚启动的时候进入安全模式 NameNode收到所有DataNode数据库报告后 才会退出
核心文件备份
映像文件和事务日志进行备份 确保宕机后的回复
空间回收
删除的文件会放入 /trash 定时清空