Hadoop分布式文件系统
一个文件被分布在多个机器上存储
高容错性的系统
高吞吐量的数据访问
适合大规模数据集的使用
HBase基于HDFS
每一个磁盘都有默认的数据块大小是磁盘进行读取的最小单位
一般为512字节。
Block:大文件会被分割为多个Block进行存储,Block默认大小为128M
每一个Block 会在DataNode上存储多个副本,默认值为3。
HDFS的块比磁盘的块大很多,其目的是为了最小化寻址开销。
128M-》512字节一个block
对分布式文件系统中的块进行抽象:
更好应对大文件的存储
简化了存储系统的设计
适用于数据备份
主节点上的NameNode进程是HDFS文件系统的守护进程。该进程负责:
记录文件是如何分割成数据块,以及存储数据块的数据节点的信息
对内存和I/O进行集中管理
保存文件与block的对应关系/block与节点的对应关系
每个集群都有一个SecondaryNameNode进程,负责监控HDFS状态的辅助后台进程
不接受或记录任何实时的数据变化
SecondaryNameNode进程会定期与NameNode通信每隔三秒发送心跳包,每隔一
个小时发送快报告(当前从节点数据块的实际信息),并定期保存HDFS元数据的快照
也可以用作备用的NameNode。
NameNode进程运行在主节点上,负责管理文件、文件目录和Block的对应关系,以及Block和DataNode的映射关系
主要使用以下文件
** Fsimage :保存文件系统的映射信息**
** Edits:用来临时性记录数据改变的情况的文件(上个检查点后用户对于元数据的修改操作)**
checkpoint机制(secondaryNameNode负责) 用于在适合的时机将edits文件内容合并到fsimage这种时机被称为检查点
** CheckPoint启动时,NameNode创建一个新文件来接受**
** 日志文件系统的变化,该文件名为edits.new**
** 文件edits不再接受变化新的变化时,和fsimage一起拷贝到CheckPointNode所在文件系统中**
** CheckPointNode将两个文件合并成产生fsimage.ckpt文件**
** CheckPointNode将fsimage.ckpt拷贝到NameNode上**
** NameNode使用新的fsimage.ckt替代原fsimage文件**
** NameNode用edits.new替代edits**