文章标题

分布式文件系统HDFS

1.概述

分布式文件系统(Distribute File system)是指文件系统管理的物理资源不一定存储在本地节点上,而是通过计算机网络与本地节点相连。Hadoop引入了虚拟文件系统机制,提供了一个文件系统抽象类(org.apache.hadoop.fs.FileSystem)。
HDFS的设计目标是为了存储超大数据文件,而且提供了对数据的流式访问接口,适用于大规模数据处理。HDFS是Hadoop项目的核心子项目,是基于流数据模式访问和处理超大文件的需求而设计开发的,运行在通用硬件上,具有高容错性和高吞吐量,市场适合大规模数据集的分布式文件系统,它的开发和实现遵循GFS的核心原理。
主要特点:硬件故障为常态现象(具有错误检测和快速、自动的恢复功能);支持大规模的数据集(支持几千个节点组成的集群,支持千万个数据文件);简单地一致性模型(当一个文件被创建、写入并关闭就不会在修改,大大的提高了数据访问的吞吐量);流式数据访问(重点是吞吐量量,而不是反应时间,主要是批量处理,节点将数据以较小的数据包形式进行传输);高度容错性(将大文件分割成多个文件存储,采用完全备份的策略,一般备份三份);高可扩展性(动态增加DataNode);平台移植性。
主要局限:HDFS的为了达到较高的数据吞吐量,而是以高延迟为代价,不是用于处理对数据访问要求低延迟的场景;不适合存储大量小文件;只有写入者,写操作只能在文件的末尾添加。
总结:HDFS只用于存储数据量巨大,存储的单个文件也大,数据处理以流式读为主,对数据访问并不要求低延迟,追求的数据访问的高吞吐量,而且对硬件故障有一定容忍度的场景中。

HDFS基本组成

数据块

最基本的存储单位是数据块(一般是64MB或128MB的数据块)。
HDFS将一个文件以块为单位在集群服务器上分配存储,而且每个快都有自己的一个全局ID。一个文件可能包含多个块,一个块也可能包含多个文件,由文件的大小和块大小的参数决定。

元数据节点

元数据(metadata)是指数据的数据,提供了一个分级的文件组织形式,维护这个文件系统的所需信息就成为HDFS的元数据。元数据节点(NameNode)是用来管理文件系统的命名空间,该命名空间含有定位文件的某个数据块的所需信息,其中文件和目录是以iNode的方式来描述。主要是维持两个表:

fsimage

fsimage文件及其对应的md5校验文件,保存了文件系统目录树信息,以及文件和块的对应关系信息,是HDFS中元数据相关的重要文件。

edits

保存了最新检查点之后的命名空间的变化。当客户端对文件进行读写操作时,操作首先会计入到edits文件中,然后才更改内存中的数据。

version

VERSION文件是java的属性文件,保存了HDFS的版本号等信息。

seen_txid

用来存放transactionId的文件,代表的是NameNode中的edits_*文件的尾数,当NameNode重启时,HDFS会按照seen_txid提供的数字,循序从1到seen_txid的数字。

辅助元数据节点(SecondaryNameNode)

主要是对元数据节点的一个补充,本质是NameNode的快照,主要功能是周期性的将元数据节点的命名空间镜像文件fsimage和修改日志edits合并,以防日志文件过大,导致元数据节点的启动时间过长,并将合并过后的命名空间镜像文件在辅助源数据节点保存了一份,从而防止元数据节点失败所导致的数据丢失问题。
辅助元数据节点定期从元数据节点上下载元数据信息,然后将fsimage和esits进行合并,生成新的fsimage,ckpt保存到本地,同时将其推送到NameNode,定期合并fsimage和edits日志,把edits日志文件控制在一个限度下。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值