HDFS:Hadoop Distributed File System Hadoop分布式文件系统
1.易于扩展的分布式文件系统
2.运行在大量普通廉价机器上,提供容错机制
3.为大量用户提供性能不错的文件存取服务
擅长:
高容错性
数据自动保存多个副本
副本丢失后,自动恢复
适合批处理
移动计算而非数据
数据位置暴露给计算框架
适合打数据处理
GB、TB、设置PB级数据
百万规模以上的文件数来弄个
10K+节点规模
流式文件访问
一次性写入,多次读取
保证数据一致性
可构建在廉价机器上
通过多副本提高可靠性
提供了容错和恢复机制
不擅长:
低延迟数据访问
比如毫秒级
低延迟与高吞吐率
小数据存取
占用NameNode大量内存
寻道时间超过读取时间
并发写入、文件随机修改
一个文件只能有一个写者
仅支持append
NameNode:Master、管理HDFS的名称空间、管理数据块映射信息、配置副本策略、处理客户端读写请求
DataNode:Slave、存储时间的数据快、执行数据块读/写
Clinet:文件切分、与NameNode交互,获取文件位置信息、与DataNode交互,读取或写入数据、管理HDFS、访问HDFS
Secondary NameNode:并非NameNode的热备、辅助NameNode,分担其工作量、顶起合并fsimage和fsedits推送给NameNode、在紧急情况下,可辅助恢复NameNode
NameNode两个重要文件
fsimage:元数据镜像文件(保存文件系统的目录树)
edits:元数据操作日志(针对目录树的修改操作)
元数据镜像
内存中保存一份最新的
内存中的镜像=fsiamge+edits
定期合并fsiamge与edits
Edits文件过大将导致NameNode重启速度慢]
Secondary NameNode负责顶起合并它们
一个文件存储方式
按大小被切分成若干个block,存储在不同节点上
默认情况下每个block有三个副本
HDFS的物理结构
HDFS与MapReduce结合
MapReduce作业的输入数据来自HDFS
HDFS分块存储数据
默认每个Map Task处理一个数据块
MapReduce作业的最终结果写入HDFS
确保数据安全可靠
可作为下一个作业的数据
MapReduce与HDFS关系
低耦合,MapReduce可以与其他分布式文件系统结合
HDFS之上可以是其他计算机框架
HDFS与Hbase结合
Hbase中的文件
操作日志文件WAL
数据索引文件HFile(storefile)
HDFS为Hbase提供可靠的数据存放服务
数据三副本,安全可靠
HDFS为Hbase提供数据共享服务
Hbase布提纳个服务可从HDFS上存取数据
HDFS2.0
NameNode HA
基于NFS共享存储解决方案
基于Bookeeper解决方案
基于Qurom Journal Manager(QJM)解决方案
NameNode Federation
多个NameNode每个分管一部分目录
NameNode共用DataNode