HDFS简介

HDFS是ApacheHadoop的核心组件,设计用于在大量廉价硬件上运行,提供高容错性和高扩展性。其特点包括一次写入多次读取、流式数据访问和大文件存储。NameNode作为主管理节点,维护文件系统的元数据,DataNode则存储数据块。HDFS的缺点包括不支持低延迟访问和随机修改文件。系统通过Block多副本策略保证数据安全,且支持NameNode高可用以避免单点故障。
摘要由CSDN通过智能技术生成
1、什么是HDFS(存放大文件)
1)概念

Hadoop分布式文件系统(Hadoop Distributed File System)

2003年10月Google发表了GFS(Google File System)论文

HDFS是GFS的开源实现

HDFS是Apache Hadoop的核心子项目

在开源大数据技术体系中,地位无可替代

2)设计目标

运行在大量廉价商用机器上:硬件错误是常态,提供容错机制

简单一致性模型:一次写入多次读取,支持追加,不允许修改,保证数据一致性

流式数据访问:批量读而非随机读,关注吞吐量而非时间

:存储大规模数据集:典型文件大小GB~TB,关注横向线性扩展(喜欢大文件)

2、优点

高容错、高可用、高扩展

数据冗余多副本,副本丢失后自动恢复

NameNode HA、安全模式

10K节点规模

海量数据存储

典型文件大小GB~TB,百万以上文件数量, PB以上数据规模

构建成本低、安全可靠

构建在廉价的商用服务器上

提供了容错和恢复机制

适合大规模离线批处理

流式数据访问

数据位置暴露给计算框架

3、缺点

不适合低延迟数据访问

:不适合大量小文件存储

元数据占用NameNode大量内存空间

磁盘寻道时间超过读取时间

不支持并发写入

一个文件同时只能有一个写入者

不支持文件随机修改

仅支持追加写入

4、系统架构:

设计思想

基本概念

1、Active NameNode(AN)(主节点)

活动Master管理节点(集群中唯一)

管理命名空间

管理元数据:文件的位置、所有者、权限、数据块等

管理Block副本策略:默认3个副本(副本数量可以改)

处理客户端读写请求,为DataNode分配任务

2、、Standby NameNode(SN)

热备Master管理节点(Active NameNode的热备节点)

Hadoop 3.0允许配置多个Standby NameNode

Active NameNode宕机后,快速升级为新的Active

周期性同步edits编辑日志(存放元信息),定期合并fsimage与edits到本地磁盘

3、NameNode元数据文件

edits(编辑日志文件):保存了自最新检查点(Checkpoint)之后的所有文件更新操作

fsimage(元数据检查点镜像文件):保存了文件系统中所有的目录和文件信息,如:某个目录下有哪些子目录和文件,以及文件名、文件副本数、文件由哪些Block组成等

Active NameNode内存中有一份最新的元数据(= fsimage + edits)

Standby NameNode在检查点定期将内存中的元数据保存到fsimage文件中

4、DataNode

Slave工作节点(可大规模扩展)

存储Block和数据校验和

执行客户端发送的读写操作

通过心跳机制定期(默认3秒)向NameNode汇报运行状态和Block列表信息

集群启动时,DataNode向NameNode提供Block列表信息

5、Block数据块

HDFS最小存储单元

文件写入HDFS会被切分成若干个Block

Block大小固定,默认为128MB,可自定义

若一个Block的大小小于设定值,不会占用整个块空间

默认情况下每个Block有3个副本

6、Client

将文件切分为Block

与NameNode交互,获取文件元数据

与DataNode交互,读取或写入数据

管理HDFS

5、存储机制:

文件存储

1、Block存储()

Block是HDFS的最小存储单元

如何设置Block大小

目标:最小化寻址开销,降到1%以下

默认大小:128M(HDFS 1.x中,默认64M)

块太小:寻址时间占比过高

块太大:Map任务数太少,作业执行速度变慢

Block和元数据分开存储:Block存储于DataNode,元数据存储于NameNode

Block多副本

以DataNode节点为备份对象

默认副本数:3

机架感知:将副本存储到不同的机架上,实现数据的高容错

副本均匀分布:提高访问带宽和读取性能,实现负载均衡

2、Block文件

Block文件是DataNode本地磁盘中名为“blk_blockId”的Linux文件

DataNode在启动时自动创建存储目录,无需格式化

DataNode的current目录下的文件名都以“blk_”为前缀

Block元数据文件(*.meta)由一个包含版本、类型信息的头文件和一系列校验值组成

3、Block副本放置策略

副本1:放在Client所在节点

对于远程Client,系统会随机选择节点

系统会首先选择空闲的DataNode节点

副本2:放在不同的机架节点上

副本3:放在与第二个副本同一机架的不同节点上

副本N:随机选择

节点选择:同等条件下优先选择空闲节点

元数据存储

元数据(Metadata)

信息存放在NameNode内存当中

包含:HDFS中文件及目录的基本属性信息(如拥有者、权限信息创建时间等)、文件有哪些block构成、以及block的位置存放信息。

元数据信息持久化

fsimage(元数据镜像检查点文件)

edits(编辑日志文件)

注意:block的位置信息并不会做持久化,仅仅只是在DataNode启动汇报给NameNode,存放在NameNode内存空间内。

6、读写操作

写操作

客户端发送创建文件指令给分布式文件系统

文件系统告知namenode

检查权限,查看文件是否存在

EditLog增加记录

返回输出流对象

客户端往输出流中写入数据,分成一个个数据包

根据namenode分配,输出流往datanode写数据

多个datanode构成一个管道pipeline,输出流写第一个,后面的转发

每个datanode写完一个块后,返回确认信息

写完数据,关闭输出流

发送完成信号给namenode

读操作

读流程

客户端发送打开文件指令给分布式文件系统

文件系统访问namenode,获得这个文件的数据块位置列表,返回输入流对象

客户端从输入流中读取数据

输入流从各个datanode读取数据

关闭输入流

7、安全模式

1、什么是安全模式

安全模式是HDFS的一种特殊状态,在这种状态下,HDFS只接收读数据请求,而不接收写入、删除、修改等变更请求

安全模式是HDFS确保Block数据安全的一种保护机制

Active NameNode启动时,HDFS会进入安全模式,DataNode主动向NameNode汇报可用Block列表等信息,在系统达到安全标准前,HDFS一直处于“只读”状态

2、何时正常离开安全模式

Block上报率:DataNode上报的可用Block个数 / NameNode元数据记录的Block个数

当Block上报率 >= 阈值时,HDFS才能离开安全模式,默认阈值为0.999

不建议手动强制退出安全模式

3、触发安全模式的原因

NameNode重启

NameNode磁盘空间不足

Block上报率低于阈值

DataNode无法正常启动

日志中出现严重异常

用户操作不当,如:强制关机(特别注意!)

4、故障排查

找到DataNode不能正常启动的原因,重启DataNode

清理NameNode磁盘

谨慎操作,有问题找星环,以免丢失数据

8、高可用

1、优势

高容错性

扩展性

海量数据的高效读、写

2、劣势

NameNode内存受限问题

Federation机制

NameNode单点故障问题

对NameNode做高可用(High Availability)

3、Journal集群

负责存储edits编辑日志

部署奇数(2N+1)台服务器

4、利用QJM实现元数据edits文件高可用

QJM机制(Quorum Journal Manager)

只要保证Quorum(法定人数)数量的操作成功,就认为这是一次最终成功的操作

QJM共享存储系统

写edits的时候,只要超过半数(>=N+1)的JournalNode返回成功,就代表本次写入成功

最多可容忍N个JournalNode宕机

基于Paxos算法实现

操作命令

1、系统配置

核心配置文件

core-site.xml:Hadoop全局配置

hdfs-site.xml:HDFS局部配置

示例:NameNode URI配置(core-site.xml)

2、环境变量文件

Hadoop-env.sh:设置了HDFS运行所需的环境变量

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值