简介

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)