HDFS - 初学者HDFS的完整介绍
在这个HDFS教程中,我们将讨论有关Hadoop分布式文件系统的所有内容。 首先,我们将回答Hadoop中的HDFS,NameNode和DataNode是什么。 我们还将在本Hadoop教程中介绍HDFS架构,功能和HDFS数据读写操作。
2.什么是HDFS?
Hadoop分布式文件系统是Hadoop的主要存储系统。 它存储在商用硬件集群上运行的非常大的文件。 它基于GFS(谷歌文件系统)。 即使在硬件故障的情况下,HDFS也可以可靠地存储数据。 它还通过并行访问提供对应用程序的高吞吐量访问。 根据2017年底的预测,全球75%的可用数据将存在于HDFS中。
3. HDFS节点
它以Master-Slave方式工作。 它有两种类型的节点NameNode(Master)和DataNode(Slave)。
- 主节点 - 它也称为NameNode。 NameNode管理所有从属节点。 它将工作分配给Slave。 NameNode部署在可靠的硬件上,因为它是Hadoop分布式文件系统的核心。
- 从节点 - 它也称为DataNode。 它在每台机器上部署并提供实际存储。 DataNodes是实际的工作节点。 DataNode还负责提供来自客户端的读写请求。
4. HDFS守护进程
有3个守护进程在HDFS中运行以存储数据。
- NameNode - 它是在所有主服务器上运行的守护程序。 它存储元数据,例如块数,文件名等。元数据在主服务器的内存中可用,以便更快地检索数据。 本地磁盘上还提供了元数据副本以实现持久性。
- Secondary NameNode - Secondary NameNode的主要功能是获取NameNode上存在的文件系统元数据的检查点。 它不是备份节点,它是主NameNode的帮助程序,但不替换主NameNode。
- DataNode - 它是在从节点运行的守护程序。 DataNodes是存储数据的实际工作节点。
5. HDFS数据存储
如果客户端想要在HDFS中写入文件,Hadoop框架会将文件分成称为块的小块数据。 块的默认大小为128MB,我们可以根据需要进行配置。 然后,块以分布式方式在集群中并行存储在集群中。 Hadoop框架复制每个块。 并将这些块存储在不同节点上的集群中。 默认情况下,它的复制因子为3。
6. HDFS中的机架感知
它在一组计算机上运行,这些计算机通常分布在许多机架上。 NameNode将块的副本放在多个机架上。 NameNode在每个机架中至少放置一个块的副本。 因此,如果一个完整的机架发生故障,那么系统也将具有高可用性。 机架感知副本放置策略的主要目的是提高容错能力,数据可靠性和可用性。
7. HDFS架构
架构提供了Hadoop HDFS的完整画面。 它有一个NameNode和多个DataNode。 NameNode存储元数据。 DataNode是实际的工作节点。 节点排列在机架中。 然后,数据块的副本存储在集群中的不同机架上,以提高数据可靠性和容错性。 要在客户端读取或写入文件与NameNode交互,它是群集中的核心。 群集中有许多DataNode,用于在本地磁盘上存储数据。 DataNode会定期向NameNode发送心跳消息,以指示它处于活动状态。 它还根据复制因子将数据复制到其他DataNode。
8. HDFS的特点
HDFS的重要特征是
8.1.高可用性
这是一个高度可用的文件系统。在此文件系统中,通过在HDFS集群中存在的其他从站上创建块的副本,可以在Hadoop集群中的节点之间复制数据。因此,只要用户想要访问这些数据,他们就可以从包含其块的从站访问它们的数据。
8.2.容错
Hadoop HDFS中的容错是系统在不利条件下的工作强度。它具有高度的容错能力。 Hadoop框架将数据划分为块。之后,在群集中的不同计算机上创建多个块副本。因此,当群集中的任何计算机出现故障时,客户端可以轻松地从包含相同数据块副本的其他计算机访问其数据。
8.3.高可靠性
HDFS提供可靠的数据存储。它可以存储100千兆字节的数据。 HDFS可靠地在群集上存储数据。它将数据分成块。然后,Hadoop框架将这些块存储在集群中的节点上。 HDFS还可以通过创建群集中存在的每个块的副本来可靠地存储数据。因此提供容错设施。
8.4.复制数据
复制是HDFS的独特功能。复制解决了硬件故障,节点崩溃等不利条件下数据丢失的问题.HDFS以固定的时间间隔维护复制过程。它还不断在群集中存在的不同计算机上创建用户数据的副本。因此,当任何节点发生故障时,用户可以从其他计算机访问数据。因此,不存在丢失用户数据的可能性。
8.5.可伸缩性
它将数据存储在集群中的多个节点上。因此,只要需求增加,您就可以扩展集群。 HDFS提供两种可扩展性机制:垂直和水平可伸缩性。
8.6.分布式存储
HDFS功能通过分布式存储和复制实现。它以分布式方式跨节点存储数据。在Hadoop中,数据被分成块并存储在群集中存在的节点上。之后,它会创建每个块的副本并存储在其他节点上。当群集中的单台机器崩溃时,我们可以轻松地从包含其副本的其他节点访问我们的数据。
9. HDFS操作
Hadoop HDFS与Linux文件系统有许多相似之处。我们可以使用本地文件系统执行几乎所有操作,例如创建目录,复制文件,更改权限等。它还提供不同的访问权限,如读写和执行给用户,组和其他人。
9.1.读取操作
当HDFS客户端想要从HDFS读取任何文件时,客户端首先与NameNode交互。 NameNode是唯一存储元数据的地方。 NameNode指定存储数据的从站的地址。然后,客户端与指定的DataNode交互并从那里读取数据。 HDFS客户端与分布式文件系统API交互。然后,它向NameNode发送请求以发送块位置。 NameNode首先检查客户端是否具有足够的权限来访问数据?之后,NameNode将共享数据存储在数据节点中的地址。 NameNode向客户端提供令牌,它向数据节点显示该令牌以便出于安全目的读取文件。当客户端访问DataNode以读取文件时,在检查令牌后,DataNode允许客户端读取该特定块。之后,客户端打开输入流并开始从指定的DataNode读取数据。因此,以这种方式,客户端直接从DataNode读取数据。
9.2.写入操作
为了写入文件,客户端首先与NameNode进行交互。 HDFS NameNode提供客户端必须在其上写入数据的DataNode的地址。当客户端完成写入块时,DataNode开始将块复制到另一个DataNode中。然后它将块复制到第三个DataNode。一旦创建了所需的复制,它就会向客户端发送最终确认。验证与读取操作相同。无论我们的复制因素如何,客户端只发送1份数据,而DataNodes复制块。写入文件并不昂贵,因为它在多个DataNode上并行地将多个块写入多个块。
10.结论总之,我们可以说,HDFS以分布式方式存储大量数据。 NameNode和DataNode是HDFS的两个节点。它还将大文件分成小块,称为块。块是文件系统中最小的数据单元。然后,它在群集中复制这些块和存储。块的复制提供了高可用性的数据,这是HDFS的主要功能
更多技术资讯可关注:gzitcast