Hadoop-HDFS

来源:互联网 发布:淘宝新店怎样开直通车 编辑:程序博客网 时间:2024/06/10 07:08

HDFS

HDFS是Hadoop的核心子项目,是主要应用的一个分布式文件系统,实际上,Hadoop中有一个综合性的文件系统的抽象,它提供了实现文件系统的各个接口,HDFS只是这个抽象的文件系统的实例。

Hadoop文件系统

Hadoop整合了很多文件系统,它首先提供了一个高层的文件系统的抽象,这个抽象展示了一个分布式文件系统。Hadoop可整合的文件系统包括LocalFileSystem,HDFS,HFTP,HSFTP,KFS,FTP,S3等

HDFS的特点

1)适合处理超大文件
2)流式访问数据
3)运行在廉价商用机集群上

4)不适合存储小文件
5)不支持多用户吸入,不支持修改
6)不适合低延时的数据访问

数据块

是HDFS的逻辑存储单元,默认Wie64M
引入块的概念后:
1)存储能力不受单节点的限制
2)有利于复制容错的实现,默认块的副本数是3

NameNode和DataNode

HDFS中有两类节点,NameNod和DataNode,NameNode作为Master管理集群中的执行调度,DataNode是执行具体的任务的节点。NameNode管理系统的命名空间,维护整个系统的文件目录树及文件的索引目录,这些信息已两种形式存储在本地文件系统中:命名空间镜像和编辑日志。 从NameNode中可以获得每个数据块所在的DataNode。客户端从NameNode获取元数据,然后从DataNode访问文件。

DataNode的主要任务:存储文件块,被客户端和NameNode调用,心跳上报文件块信息到NameNode。

HDFS架构

HDFS采用master/slave的模式管理文件系统,一个HDFS集群由一个NameNode和多个DataNode组成,NameNode是中心服务器,管理集群的命名空间,DataNode负责节点上的文件读写。

副本存放与读取策略

副本存放策略是HDFS可靠性和性能的关键,HDFS通过一种机架感知策略来优化数据的可靠性,可用性和网络利用率。一个数据块的多个副本会被存储在相同的机架但不同的机器和不同机架的机器上,在读取数据时,会读取距离客户端最近的节点上的数据,写入时,也可以在包装数据可靠性的前提下尽量减少网络带宽的消耗。

HDFS安全模式

在启动时,HDFS会自动进入安全模式,NameNode等待所有DataNode心跳上报数据块报告,然后NameNode根据块包括检测是否有数据块的副本数小于最小值,如果有,那么正规集群会进入30s的等待时间,NameNode协调增加不足的副本数。

HDFS中文件的安全性

由于NameNode存在单点故障,如果NameNode不可用,那么整个集群就会不可用,可以通过两种方式来尽量避免

第一种方式:备份NameNode中的命名空间镜像和编辑日志到另一个集群

第二种方式:由于在集群中同步运行一个SecondaryNameNode,它的作用的定期合并NameNode产生的镜像文件和编辑日志,防止过大,由于SecondaryNameNode运行需要大量的CPU资源,所以通常独立运行在一个物理节点上,当NameNode不可用时可以用SecondaryNameNode做替补,但由于SecondaryNameNode是周期运行,所以会有部分数据丢失。

HDFS读取文件的流程

1)客户端请求NameNode获取数据块信息
2)NameNode返回一个包含块信息的FSDataInputStream
3)客户端在这个FSDataInputStream的基础上直接与DataNode交互,按时块的列表顺序从DataNode中获取数据。

HDFS写入文件的流程

1)客户端请求NameNode创建文件
2)NameNode对客户端的权限和文件是否存在进行验证,然后在NameNode中创建文件的元信息
3)NameNode返回一个包含副本数数据队列的FSDataOutputStream
4)客户端通过FSDataOutputStream写入数据,写入过程中会等待队列中每一个节点返回写入成功

NameNode的文件结构

{fs.name.dir}/current/

VERSION: 集群命名空间,集群ID,创建时见,版本号,存储类型

edit:编辑日志 ,记录客户端的写操作,并在内存中存有一份

fsimage:记录文件系统的命名空间和目录元信息,它是元数据持久性的检查点,集群重启时会加载,以重构文件系统目录结构,同时,为防止文件过大,SecondaryNameNode会定义合并。

hdfs dfsadmin -saveNamespace 强制刷新内存数据到镜像和编辑文件中

SecondaryNameNode的文件结构

/current/ VERSION,edit,fsimage
/pervious.checkpoint/ VERSION, edit, fsimage

DataNode的文件结构

/current/ VERSION /集群id,DataNode id,创建时间,存储类型id
blk..meta 块元信息

0 0