简介
HDFS(Hadoop Distributed File System )Hadoop分布式文件系统。是根据google发表的论文翻版的。论文为GFS(Google File System)Google 文件系统(中文,英文)。
HDFS特点:
1、保存多个副本,且提供容错机制,副本丢失或宕机自动恢复。默认备份3份。
2、可以支持运行在廉价的机器上。
3、适合大数据的处理。HDFS将文件分成block(块),默认一个block为64M,将分块后的数据以键值对的方式存储到HDFS上,并将键值对映射到内存中。
如上图所示,HDFS也是按照Master和Slave的结构。分NameNode、SecondaryNameNode、DataNode这几个角色。
NameNode:是Master节点,是管理者。管理数据块映射;处理客户端的读写请求;配置副本策略;管理HDFS的名称空间。
block保存在那些DataNode节点上(这部分数据并非保存在NameNode磁盘上,它是在DataNode启动时上报给NameNode的,NameNode接收到之后将这些信息保存在内存中)。
Block的位置信息不回保存在fsimage中。
Edits文件记录了客户端操作fsimage的日志,对文件的增删改等。
SecondaryNameNode:分担namenode的工作量;是NameNode的冷备份;合并fsimage和fsedits然后再发给namenode。
合并fsimage和fsedits文件,然后发送并替换NameNode的fsimage文件,同时自己留下一个副本,
这个副本可以在NameNode宕机或者坏死后进行部分文件恢复。
1、可以通过配置fs.checkpoint.period修改合并间隔时间,默认1小时。
2、也可以配置edits日志文件的大小,fs.checkpoint.size规定edits文件的最大值,来让SecondaryNameNode来知道什么时候该进行合并操作,默认大小是64M。
合并过程如下:
DataNode:Slave节点,奴隶,干活的。负责存储client发来的数据块block;执行数据块的读写操作。
热备份:b是a的热备份,如果a坏掉。那么b马上运行代替a的工作。
冷备份:b是a的冷备份,如果a坏掉。那么b不能马上代替a工作。但是b上存储a的一些信息,减少a坏掉之后的损失。
fsimage:元数据镜像文件(文件系统的目录树。)
edits:元数据的操作日志(针对文件系统做的修改操作记录)
namenode内存中存储的是=fsimage+edits。
SecondaryNameNode负责定时默认1小时,从namenode上,获取fsimage和edits来进行合并,然后再发送给namenode。减少namenode的工作量。
HDFS优缺点:
®优点:
1、高容错性
数据自动保存多个副本
副本丢失后,自动恢复
2、适合批处理
移动的计算和操作
数据位置暴露给计算框架
3、适合大数据处理
GB、TB、PB甚至更大
百万规模以上的文件数量
10K+节点
4、可以构架在廉价的机器上
通过副本提高可靠性
提供了容错和恢复机制
®缺点:
1、低延迟数据访问
2、小文件存取耗资源(占用NameNode内存空间)
3、并发写入(一个文件只能有一个写入者)、文件不能随机修改(只支持append)