alreadyHadoop

Hadoop3.x组件HDFS入门

2022-11-03  本文已影响0人  文景大大

一、HDFS是什么?

HDFS,全称Hadoop Distributed File System,即Hadoop分布式文件存储系统,是Hadoop核心组件之一,是大数据生态最底层的分布式存储服务。HDFS主要为了解决大数据如何存储的问题,是一种能够在普通硬件上运行的分布式文件系统。HDFS它本身是高度容错的,使用多台计算机来存储文件,并提供统一的访问接口,使得访问HDFS就像是访问一个普通文件系统一样便捷。

二、为什么需要HDFS?

在没有大数据技术以前,通常解决单机存储容量问题我们都是不断地加磁盘,但是这种方式很粗暴很原始,无法保证存储数据的高效读写和可靠性。所以后来有了RAID方案,即独立磁盘冗余阵列:

但是,RAID是从垂直伸缩的角度来解决单机大数据存储问题的,可扩展性终究有尽头,且成本会直线提高,因此现在已经很少被使用了。后来才有了分布式文件存储系统(DFS),其是从水平伸缩的角度来解决存储问题的,其可扩展性理论上没有上限:

DFS通常采用树形目录的抽象逻辑来代替硬盘等物理设备的概念,用户不用关心数据底层存放在哪台机器哪块磁盘上,只需要记住数据存放的目录和文件名即可。

2003年Google发表了GFS的论文,而HDFS则是根据这篇论文实现的DFS,是目前大数据生态主流的底层分布式文件系统。

HDFS在大数据生态中的地位

HDFS的设计目标为:

所以,如果是大数据量、一次写入多次读取、高容错的计算场景,就非常适合使用HDFS。

三、HDFS是如何工作的?

HDFS主要分为角色:

HDFS官方架构图

HDFS主要拥有如下的特性:

当HDFS集群需要写数据的时候:

  1. HDFS客户端创建对象实例DistributedFileSystem,该对象里面封装了和HDFS集群的一些操作方法;
  2. DistributedFileSystem对象通过create方法,以RPC调用的方式请求NameNode创建文件,在此过程中,NameNode会执行各种检查判断工作,比如目标文件是否已存在?父目录是否已存在?客户端是否具有该权限?只有检查通过,NameNode才会记录,并返回FSDataOutStream输出流对象给到客户端用于后续的写操作;
  3. HDFS客户端再将文件给到FSDataOutStream,FSDataOutStream将数据分块并写入data_queue,然后内部组件DataStream会读取该数据块,并询问NameNode该数据块应该放在哪些DataNode上;
  4. 当收到DataNode pipeline时,DataStream会将数据块写入pipeine中的第一个DataNode,然后由第一个DataNode再传给第二个DataNode,第二个DataNode再传给第三个DataNode;
  5. DataNode之间通过ack来确认自己的下一个节点已经成功收到数据,FSDataOutStream在收到ack反馈后,就能确认数据块写入集群成功;
  6. 客户端在写完所有数据块后调用close关闭流操作;
  7. 客户端通知NameNode完成过了本次文件写操作;
HDFS写数据过程

当HDFS集群需要读数据的时候:

  1. HDFS客户端创建对象实例DistributedFileSystem,该对象里面封装了和HDFS集群的一些操作方法;
  2. DistributedFileSystem以RPC调用的方式请求NameNode来获取前几个数据块的信息(分批读取),NameNode会返回每个块所有DataNode的列表,并且根据客户端的网络拓补距离将DataNode排好序;
  3. HDFS客户端将读取请求提交给FSDataInputStream输入流;
  4. FSDataInputStream找到数据块对应的DataNode列表中的第一个进行数据的读取;
  5. FSDataInputStream对每一个数据块重复上述读取操作,同时客户端也在重复上述步骤不断从NameNode获取后续批次的块信息;
  6. 当客户端完成读取后,就会调用close方法关闭流。
HDFS读数据过程

四、如何使用HDFS?

首先需要搭建一个HDFS集群,这部分内容我们原先已经完成了,可以参考:Hadoop3.x集群安装教程 - 简书 (jianshu.com)

然后我们可以通过以下两种方式来进行HDFS上的文件操作:

在企业实际的大数据开发分析场景中,我们很少会直接操作HDFS,它太底层了,我们一般都会通过数据导入导出工具来替我们和HDFS操作,但是了解HDFS工作原理和特性还是非常有必要的,毕竟它是大数据生态的基石。

上一篇下一篇

猜你喜欢

热点阅读