简介
HDFS(Hadoop Distributed File System )Hadoop分布式文件系统。是根据google发表的论文翻版的。论文为GFS(Google File System)Google 文件系统。
HDFS有很多特点:
① 保存多个副本,且提供容错机制,副本丢失或宕机自动恢复。默认存3份。
(用空间换安全)
② 运行在廉价的机器上。
③ 适合大数据的处理。多大?多小?HDFS默认会将文件分割成block,128M为1个block。然后将block按键值对存储在HDFS上,并将键值对的映射存到内存中(namenode)。如果小文件太多,那内存的负担会很重。
如上图所示,HDFS也是按照Master和Slave的结构。分NameNode、SecondaryNameNode、DataNode这几个角色。
NameNode:是Master节点,是管理者。管理数据块映射;处理客户端的读写请求;配置副本策略;管理HDFS的名称空间;
NameNode保存的metadata包括文件ownership和permission文件包含的block信息
Block保存在那些DataNode节点上(这部分数据并非保存在NameNode磁盘上的,它是在DataNode启动时上报给NameNode的,Name接收到之后将这些信息保存在内存中)
NameNode的metadata信息在NameNode启动后加载到内存中
Metadata存储到磁盘上的文件名称为fsimage
Block的位置信息不会保存在fsimage中
Edits文件记录了客户端操作fsimage的日志,对文件的增删改等。
用户对fsimage的操作不会直接更新到fsimage中去,而是记录在edits中
SecondaryNameNode:分担namenode的工作量;是NameNode的冷备份;合并fsimage和fsedits然后再发给namenode。
合并fsimage和fsedits文件,然后发送并替换NameNode的fsimage文件,同时自己留下一个副本。这个副本可供NameNode毁灭之后的部分文件恢复。
1可以通过配置fs.checkpoint.period修改合并间隔时间,默认1小时
2也可以通过配置edits日志文件的大小,fs.checkpoint.size规定edits文件的最大值,来让SecondaryNameNode来知道什么时候该进行合并操作了。默认是