【博学谷学习记录】超强总结,用心分享|HADOOP-HDFS相关知识点汇总

【博学谷学习记录】超强总结,用心分享|HADOOP-HDFS相关知识点汇总

通常来说一个分布式文件系统需要具备:分布式特性、分块存储、副本机制、元数据记录、抽象目录树、统一namespace命名空间。

一、HDFS-分布式文件系统

1.1 概述

HDFS(Hadoop Distributed File System)是 Apache Hadoop 项目的一个子项目,它的设计初衷是为了能够支持高吞吐和超大文件读写操作。HDFS是一种能够在普通硬件上运行的分布式文件系统,它是高度容错的,适应于具有大数据集的应用程序,它非常适于存储大型数据 (比如TB和PB)。HDFS使用多台计算机存储文件, 并且提供统一的访问接口, 像是访问一个普通文件系统一样使用分布式文件系统。

HDFS采用master/slave架构,一般一个HDFS集群是有一个Namenode和一定数目的Datanode组成。Namenode是HDFS主节点,Datanode是HDFS从节点,两种角色各司其职,共同协调完成分布式的文件存储服务。
在这里插入图片描述

1.2 分块机制

HDFS中的文件在物理上是分块存储(block)的,块的大小可以通过配置参数来规定,参数位于hdfs-site.xml中:dfs.blocksize。默认大小是128M(134217728)
在这里插入图片描述

1.3 副本机制

为了容错,文件的所有block都会有副本。每个文件的block大小(dfs.blocksize)和副本系数(dfs.replication)都是可配置的。应用程序可以指定某个文件的副本数目,副本系数可以在文件创建的时候指定,也可以在之后通过命令改变。
默认dfs.replication的值是3,也就是会额外再复制2份,连同本身总共3份副本
在这里插入图片描述

1.4 Namespace介绍

HDFS支持传统的层次型文件组织结构。用户可以创建目录,然后将文件保存在这些目录里。
Namenode负责维护文件系统的namespace名称空间,任何对文件系统名称空间或属性的修改都将被Namenode记录下来。

1.5 元数据管理

在HDFS中,Namenode管理的元数据具有两种类型:
(1)文件自身属性信息
文件名称、权限,修改时间,文件大小,复制因子,数据块大小。
(2)文件块位置映射信息
记录文件块和DataNode之间的映射信息,即哪个块位于哪个节点上。
补充:文件的各个block的具体存储管理由DataNode节点承担,每一个block都可以在多个DataNode上存储。)

1.6 HDFS的安全模式

安全模式是hadoop的一种保护机制,用于保证集群中的数据块的安全性。当集群启动的时候,会首先进入安全模式。当系统处于安全模式时会检查数据块的完整性。
在NameNode启动过程中,等待DataNodes汇报可用的block信息。在此期间,NameNode保持在安全模式。随着DataNode的block汇报持续进行,当整个系统达到安全标准时,HDFS自动离开安全模式。在NameNode Web主页上会显示安全模式是打开还是关闭。
在安全模式状态下,文件系统只接受读数据请求,而不接受删除、修改等变更请求。在当整个系统达到安全标准时,HDFS自动离开安全模式。

二、HDFS的读写流程

2.1 写入流程

在这里插入图片描述
(1)客户端向服务器发起上传请求(RPC)。
(2)NameNode接收到请求之后会进行权限检查。
①查看是否有操作权限 ②查看父目录是否存在
(3)NameNode会给Client反馈是否可以上传标记。
(4)Client会将要上传的文件按照设置的Block大小进行切片。
(5)Client向NameNode请求上传第一个Block/blk。
(6)当NameNode收到上传Block请求之后,会根据副本放置策略和主机的优秀程度选出3台最优主机。
(7)NameNode返回最有主机列表{node1、node2、node3}
(8)Client和主机列表排在最前的主机建立pipeline。
(9)Client开始传输第一个Block数据,传输数据的单位是package(64k)。
(10)收到第一个package就会缓存。
(11)HDFS会产生一个应答队列,从最后一个开始,收到packet,就会将一个ACK应答放入应答队列。
(12)Client判断应答队列中的ACK是否完整,如果完整, 则判断此次packet发送成功,则继续发送第二个package。
(13)当最后一个package发送完成以后,每一个Datanode会将缓存的package数据存储到硬盘上也就是一个block。
(14)Client重新执行第五步,请求上传第二个Block。
(15)Client向NameNode汇报文件上传完毕。
(16)NameNode更新自己内存中的元数据。

2.2 读取流程

在这里插入图片描述

(1)客户端向服务器发起下载请求(RPC)。
(2)服务器做权限检查。
①判断文件是否存在②判断权限是否满足
(3)NameNode获取该文件的Block信息列表,并且对每一个Block的主机进行排序。
(4)将a.txt文件的Block列表发送给Client。
(5)Client分别和三个Block所在的主机建立pipeline。
(6)Client分别从三台主机读取数据,读取时并行执行,读取的单位也是package。
(7)Client将这三个Block进行合并(字节数组的合并)。

三、总结

本文介绍了HDFS的相关概述及其内部相关知识原理如分块切分机制、副本机制、安全机制等。另外,详细介绍了HDFS的读写流程,这也是面试常常问到的问题。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值