1.Hadoop HDFS体系结构指南的目标

这章主要介绍HDFS体系结构,您可以了解关于Hadoop HDFS的所有信息。 首先,我们将讨论什么是HDFS设计的假设和目标。 本HDFS体系结构教程还将介绍Hadoop HDFS的详细体系结构,即NameNode,HDFS中的DataNode,Secondary节点,Checkpoint节点,HDFS中的备份节点。 本HDFS教程中还讨论了HDFS功能,如机架感知,高可用性,数据块,复制管理,HDFS数据读取和写入操作。

2.什么是Hadoop HDFS?

Hadoop分布式文件系统(HDFS)是当今最可靠的存储系统。 HDFS存储在大量普通硬件上运行的非常大的文件。它的工作原理是存储少量的大文件而不是大量的小文件。即使在硬件故障的情况下,HDFS也可以可靠地存储数据。它通过并行提供数据访问来提供高吞吐量。

2.1  HDFS假设和目标

I.硬件故障

硬件故障不再是例外;它已经成为一个常规术语。 HDFS实例由数百或数千个服务器机器组成。其中每个存储部分文件系统的数据。存在大量的组件,这对硬件故障非常敏感。这意味着有一些组件始终不能正常工作。所以HDFS的核心架构目标是快速自动故障检测并恢复。

II. 流式数据访问

HDFS应用程序需要对其数据集进行流式访问。 Hadoop HDFS主要用于批处理而不是用户交互式使用。数据访问的吞吐量高,而不是数据访问的低延迟。它着重于如何在分析日志的同时以最快的速度检索数据。

III大型数据集

HDFS始终需要处理大型数据集。标准做法是在HDFS中,文件大小从千兆字节到兆兆字节的文件。 HDFS架构的设计是最好存储和检索大量数据的一种方式。 HDFS应该提供高聚合数据带宽。它还应该能够扩展到单个群集上的数百个节点。它应该足以处理单个集群实例上的数千万个文件。

IV简单的一致性模型

它适用于理论上一次写入多次读取文件的访问模型。一旦文件被创建,写入和关闭不应该改变内容。这解决了数据一致性问题并实现了高吞吐量数据访问。基于MapReduce的应用程序或Web爬虫应用程序完全适合此模型。

V移动计算比移动数据效率高

如果一个应用程序在它所操作的数据附近执行计算,比远程计算更有效。这点在处理大数据集时变得更加强大。主要优点是这增加了系统的整体吞吐量。它也使网络拥塞最小化。假设是将计算移近数据而不是将数据移动到计算更好。

VI在异构硬件和软件平台上的可移植性

HDFS的设计具有便携性,可以从一个平台移植到另一个平台。这使得广泛采用HDFS。这是处理大量数据时最好的平台。

3.什么是HDFS架构?

Hadoop HDFS体系结构由Master / Slave体系结构组成,其中Master是NameNode,存储元数据,Slave是存储实际数据的DataNode。 HDFS体系结构由单个NameNode组成,所有其他节点都是DataNode。

3.1 什么是HDFS NameNode?

HDFS架构中的NameNode也称为主节点。 HDFS Namenode存储元数据,即数据块的数量,副本和其他细节。 这个元数据在主内存中可用,以便更快地检索数据。 NameNode维护和管理从节点,并为它们分配任务。 它应该部署在可靠的硬件上,因为它是HDFS的核心。

NameNode的任务

管理文件系统名称空间。

规范客户对文件的访问。

它还执行文件系统执行,如命名,关闭,打开文件/目录。

所有DataNode都会将Heartbeat和数据块报告发送到Hadoop集群中的NameNode。 它确保DataNodes存活。 块报告包含数据节点上所有块的列表。

NameNode还负责照顾所有块的复制因子。

NameNode元数据中的文件如下所示 :

FsImage

NameNode中的FsImage是一个“镜像文件”。 FsImage包含整个文件系统名称空间并作为文件存储在namenode的本地文件系统中。 它还包含文件系统中所有目录和文件inode的序列化形式。 每个inode都是文件或目录元数据的内部表示。

编辑日志 –

EditLogs包含最近FsImage上对文件系统进行的所有最新修改。 Namenode收到来自客户端的创建/更新/删除请求。 之后,该请求首先被记录到编辑文件中。

3.2 什么是HDFS DataNode?

HDFS架构中的DataNode也称为Slave。在Hadoop HDFS体系结构中,DataNode将实际数据存储在HDFS中。它根据客户的请求执行读写操作。 DataNodes可以在普通计算机硬件上部署。

DataNode的任务

根据Namenode的指令,进行数据块副本的创建,删除和复制。

DataNode管理系统的数据存储。

DataNodes向NameNode发送心跳报告HDFS的健康状况。默认情况下,该频率设置为3秒。

3.3 什么是Secondary NameNode?

在HDFS中,当NameNode启动时,首先从镜像文件FsImage读取HDFS状态。之后,它将应用来自编辑日志文件的日志。 NameNode然后将新的HDFS状态写入FsImage。然后使用空的编辑文件开始正常操作。在启动时,NameNode合并FsImage并编辑文件,因此随着时间的推移,编辑日志文件可能会变得非常大。较大的编辑文件的副作用是下次重新启动Namenode需要更长的时间。

Secondary Namenode解决了这个问题。 Secondary NameNode从NameNode下载FsImage和EditLogs。然后将EditLogs与FsImage(FileSystem Image)合并。它将编辑日志大小保持在一个限制内。它将修改后的FsImage存储到永久存储器中。我们可以在NameNode失败的情况下使用它。

Secondary NameNode在HDFS中执行常规检查点。

3.4 什么是检查点节点?

Checkpoint节点是一个定期创建名称空间检查点的节点。 Hadoop中的Checkpoint节点首先从Active Namenode下载FsImage和编辑。然后在本地将它们合并(FsImage和编辑),最后,它将新图像上传回活动的NameNode。它将最新的检查点存储在与Namenode目录具有相同结构的目录中。这允许检查点映像在必要时总是可用于由namenode读取。

3.5 什么是备份节点?

备份节点提供与检查点节点相同的检查点功能。在Hadoop中,Backup节点保留内存中最新的文件系统名称空间副本。它始终与活动的NameNode状态同步。 HDFS体系结构中的备份节点不需要下载FsImage并编辑活动NameNode中的文件以创建检查点。它在内存中已经具有最新的名称空间状态。备份节点检查点进程效率更高,因为它只需将名称空间保存到本地FsImage文件并重置编辑。 NameNode一次支持一个备份节点。

这是关于HDFS体系结构中不同类型的节点的。在本HDFS体系结构教程中,我们将学习HDFS中的块,复制管理,机架感知和读/写操作。

3.6  HDFS体系结构中的块是什么?

Apache Hadoop中的HDFS将大文件分割成称为块的小块。这是文件系统中最小的数据单位。我们(客户端和管理员)对块的位置没有任何控制权。 NameNode决定所有这些事情。

HDFS块的默认大小为128 MB,我们可以根据需要进行配置。文件的所有块都具有相同的大小,除了最后一个块,其大小可以相同或更小。

如果数据大小小于块大小,则块大小将等于数据大小。例如,如果文件大小为129 MB,则它将创建2个块。一个块的默认大小为128 MB。另一个将只有1 MB,而不是128 MB,因为它会浪费空间。 Hadoop足够智能,不会浪费127 MB的剩余空间。因此它仅为1MB数据分配1Mb块。以这种块大小存储数据的主要优点是可以节省磁盘寻道时间。

3.7 什么是复制管理?

块复制提供容错功能。如果一个副本不可访问和损坏,我们可以从其他副本读取数据。 HDFS体系结构中每个文件块的副本数或副本数是复制因子。默认的复制因子是3,可以再次配置。所以,每个块复制三次并存储在不同的DataNode上。

如果我们使用默认配置在HDFS中存储一个128 MB的文件,我们最终将占用384 MB(3 * 128 MB)的空间。

NameNode定期从DataNode接收块报告以维护复制因子。当一个块被过度复制/不足复制时,NameNode根据需要添加或删除副本。

3.8 什么是HDFS架构中的机架感知?

在大量的Hadoop集群中,为了在读/写HDFS文件时改善网络流量,NameNode选择更靠近相同机架或附近机架的DataNode来读/写请求。 NameNode通过维护每个DataNode的机架ID来实现机架信息。 Hadoop中的机架感知是基于机架信息选择Datanodes的概念。

在HDFS体系结构中,NameNode确保所有副本不存储在同一个机架或单个机架上。它遵循机架感知算法来减少延迟以及容错。我们知道默认复制因子是3.根据机架感知算法,块的第一个副本将存储在本地机架上。下一个副本将在同一机架内存储另一个datanode。第三个副本将存储在Hadoop中的不同机架上。

机架感知对于改进非常重要:

数据高可用性和可靠性。

集群的性能。

提高网络带宽。

3.9  HDFS读/写操作

3.9.1 写操作

当客户想要将文件写入HDFS时,它将与namenode通信以获取元数据。 Namenode响应一些块,它们的位置,副本和其他细节。根据来自Namenode的信息,客户端将文件拆分成多个块。之后,它开始将它们发送给第一个Datanode。

客户端首先将数据块A发送到Datanode 1并与其他两个数据节点的详细信息一起发送。当Datanode 1从客户端收到数据块A时,Datanode 1将同一数据块复制到同一机架的Datanode 2。由于两个Datanode都在同一个机架上,因此通过机架交换机进行块传输。现在,Datanode 2将同一个块复制到Datanode 3.由于两个Datanode位于不同的机架中,所以通过机架外交换机进行块传输。

当Datanode从客户端收到块时,它向Namenode发送写入确认。

对文件的每个块重复相同的过程。

3.9.2 读操作

要从HDFS读取,第一个客户端与namenode通信以获取元数据。客户端从名称节点出来,具有文件名称及其位置。 Namenode响应块的数量,位置,副本和其他细节。

客户端与Datanodes进行通信。客户端根据从namenode收到的信息开始从Datanodes并行读取数据。当客户端或应用程序收到文件的所有块时,它将这些块组合成原始文件的形式。

4. HDFS架构 – 结论

总结HDFS体系结构教程,我们可以说它是一个能够全面了解HDFS的体系结构。在NameNode和DataNode的帮助下,它可靠地在大型集群中的机器上存储非常大的文件。它将每个文件存储为一系列的块。块复制提供容错功能。它提供了高可用性,因为尽管存在硬件故障,数据仍然可用。当机器或硬件崩溃时,我们可以从另一条路径访问数据。



关注微信服务号,手机看文章
关注微信服务号,手机看文章