HDFS原理与操作及API编程
- HDFS原理与操作及API编程
- HDFS新特性,高可用,联邦,快照
HDFS
- 提供分布式存储机制,提供可线性增长的海量存储能力
- 自动数据冗余,无须使用Raid,无须另行备份
- 为进一步分析计算提供数据基础
HDFS 设计基础与目标
- 硬件错误是常态,因此需要冗余
- 流式数据访问,即数据批量读取非随机读写
- 大规模数据集
- 简单一致性模型。为降低系统复杂度,对文件采用一次性写多次读的逻辑设计,及文件已经写入,关闭,就不能修改
- 数据就近原则分配节点执行
体系结构
- NameNode: 数据块信息
- DataNode: 数据信息
- 事物日志
- 映像文件
- SecondaryNameNode
NameNode
- 管理文件系统的命名空间
- 记录每个文件数据块在各个Datanode上的位置和副本 信息
- 协调客户端对文件的访问
- 记录命名空间内的改劢戒空间本身属性的改劢
- Namenode使用事务日志记 录HDFS元数据的变化。使用 映像文件存储文件系统的命 名空间,包括文件映射,文 件属性等
DataNode
- 负责所在物理节点的存储管理
- 一次写入,多次读取
- 文件由数据块组成, 典型的块大小是64MB
- 数据块尽量散布道各个节点
读取数据流程
- 客户端访问HDFS 中的一个文件
- 首先从namenode获得组成返个文件的数据块位置列表
- 根据列表知道存储数据块的datanode
- 访问datanode获取数据
- Namenode并不参与数据实际传输
写入数据流程
- 客户端请求namenode创建新文件
- 客户端将数据写入DFSOutputStream
- 建立pipeline依次将目标数据块写入各个datanode,建立多个副本
HDFS 可靠性
- 冗余副本策略
- 机架策略
- 心跳机制
- 安全模式
- 校验和
- 回收站