2023年11月29日发(作者:)

Hadoop架构基础知识总结

Hadoop架构基础知识总结

⼀、Hadoop与分布式计算:

Hadoop框架遵循分布式计算模型,其将对⼤数据集的计算分配到⼀组节点上,每个节点

针对数据集的⼀部分进⾏计算。

分布式计算的核⼼需求:

(1)扩展性:机器数量的增长应该带来计算和存储能⼒的线性增长。

(2)容错性:如果分布式集群中的⼀个节点失败,主要的计算进程本⾝不能失败或受到不利影响。

(3)可恢复性:如果作业或其⼀部分失败,不应该有数据丢失。

Hadoop针对分布式计算需求的给出的解决⽅案:

(1)数据存储在所有或⼤部分集群节点上,将计算流向数据,⽽⾮数据流向计算,这样使得Hadoop能够有效处理海量数据;

(2)开发⼈员专注于数据和算法,分布式的底层细节由Hadoop负责。

(3)作业容错性⾼,当集群中的⼀个或多个节点失败以及作业⾃⾝的组件(被称为任务)失败时,并不影响作业本⾝的完成。

⼆、Hadoop架构:

Hadoop的两个组件:Hdfs(存储组件)Yarn(处理组件)

集群:

Hadoop集群是⼀个使⽤以分布式⽂件系统(HDFS)和集群资源管理器(Yarn)为基础的Hadoop软件的计算机集合。这个集合可以仅包含少数⼏个节点,也可

以包含超过10000个节点,⽆论规模⼤⼩,在Hadoop集群中的所有节点都是同等运⾏的。

在实际情况下,Hadoop通过后台运⾏的⼀组守护进程来实现存储和处理。⽤户不必关⼼这些进程,因为它们在⽹络间执⾏输⼊/输出,⽆须⽤户⼲预。在

Linux系统中,每⼀个守护进程都在单独的Java虚拟机(JVM)上运⾏。

2.主节点和⼯作节点:

主节点:这些节点运⾏协调集群⼯作的服务。客户端联系主节点以执⾏计算任务。在每个集群中,可能有⼏个主节点,从3~6个不等,具体取决于集群的⼤⼩。

⼯作节点: 这些节点在主节点上运⾏的进程之下运⾏。集群的⼤多数节点都是⼯作节点。⼯作节点是存储数据与执⾏具体计算的节点。

3. Hadoop服务:

1HDFS服务:

HDFS服务负责管理HDFS存储。

NameNode : NameNode服务运⾏于主节点,负责管理与HDFS存储有关的元数据,如⽂件系统⽬录树和⽂件位置。当客户端需要在

HDFS中读取或写⼊数据时,会⾸先与NameNode进⾏联系,NameNode会提供HDFS中的相应⽂件的位置信息。

Secondary NameNode 和 Standby NameNode: 在每个集群中,需要运⾏这其中的⼀个服务。这些服务通过执⾏如

checkpointing(更新)元数据⽂件的任务,减轻关键服务NameNode的负担。

DataNodes : 这些是在Linux⽂件系统之上存储HDFS数据块的⼯作节点。DataNodes 与 NameNode保持联系,并以⽂件系统的变更

来对数据进⾏更新。

(2) Yarn服务:

与HDFS类似,Yarn也有⼀些服务运⾏在主节点和⼯作节点上。

ResourceManager : ResourceManager是在集群中的⼀个主节点上⼯作的单⼀服务进程,负责集群资源分配与运⾏任务的调度。

ApplicationMaster:这是⼀个主服务,在集群中运⾏的每个应⽤都有这个服务。ApplicationMaster协调应⽤在集群中的运⾏,并与

ResourceManager协商以获取应⽤所需的资源。

NodeManager:这些服务运⾏在每⼀个⼯作节点。NodeManager服务在⼯作节点上运⾏和管理任务(应⽤程序或作业的组件)。它们

与ResourceManager保持联系,并根据其健康状况以及运⾏任务的情况对ResourceManager进⾏更新。

三、数据存储—Hadoop分布式⽂件系统

HDFS是位于底层服务器存储之上的分布式⽂件系统,其与基础存储系统有许多相似之处。分布式⽂件系统通过由⽹络连接的许多计

算机来存储海量数据,并利⽤内置冗余特性保障数据安全。HDFS是为快速、容错处理⽽设计的,因此它可以使⽤廉价的硬件来进⾏存储。

基于这样的设计,HDFS能够对⼤数据实现流式访问。

最初,MapReduce是Hadoop中,可以使⽤的唯⼀编程引擎,其现在在Hadoop环境中也是⾮常受欢迎的。MapReduce能够处理⼤

数据。它避免了使⽤NFS等存储系统时,由于⽹络和存储I/O⽽造成的速度减慢。⼤数据被分布在集群节点上,但MapReduce将其视为单

⼀⽂件系统。因此,每个磁盘从本地磁盘(HDFS,⽽不是本地⽂件系统)读取其所有数据,这避免了⽹络传输数据。

在⼀个⼩型Hadoop集群中,可能只有少量的服务器。更⼤的集群中会有数以百计的服务器。⽆论集群⼤⼩如何,Hadoop将数据存储

在所有的集群⽂件系统上,集群中的每个节点都存储部分数据。

维护与⽂件系统相关的元数据,如⽂件层次结构和每个⽂件的块位置。

管理⽤户对数据⽂件的访问。

数据块和集群中存储节点发映射关系。

执⾏对⽂件系统的操作,如打开或关闭⽂件以及⽬录。

使⽤⾮常⼤的块,⽂件系统元数据较⼩。

由于可以顺序读取⼤数据的块,因此⽐较容易执⾏⼤数据的流式读取。

⽂件系统组织:

HDFS中的⽂件以类似于Linux或Unix系统中的⽂件组织⽅式组织,其中有⼀个基于树的⽬录和⽂件层次结构。可以在HDFS中使⽤类

似于Linux或UNIX⽂件系统中的操作命令。

由于HDFS采⽤⼀次写⼊多次读取的模式,⼀旦将⽂件写⼊HDFS,就⽆法修改其内容。也不能使⽤现有名覆盖⽂件。可以执⾏以下操

当客户端应⽤程序需要将数据写⼊HDFS时,将在客户端本地的临时⽂件中进⾏初始写⼊。当客户端完成写⼊并关闭⽂件,或当临时

⽂件的⼤⼩越过块边界时,Hadoop将创建⼀个⽂件并为其分配数据块。临时⽂件的内容随后被写⼊新的HDFS⽂件。写⼊第⼀个块之后,

将两个副本(基于默认复制因⼦3)分别写⼊集群中的另外两个DataNode。只有当Hadoop成功将所有数据块副本都放置在⽬标节点中

时,写操作才算成功。

数据复制:

数据复制是Hadoop的关键功能 之⼀,因为Hadoop基于此提供了集群的容错能⼒。由于Hadoop维护了多个数据副本,因此存储在

集群中的数据很难丢失。(HDFS会⾃动复制未经复制的数据块)。

NameNode操作

每个Hadoop集群都有⼀个NameNode(⾼可⽤性环境中可能有两个⼀个是Active NameNode,⼀个是Standby NameNode)。

NameNode上保存着内存中的所有元数据,以便快速访问,但它也会将相同的信息保留在磁盘上。以下信息由NameNode保存在磁盘上的

批处理程序(如Spark和MapReduce)

交互式SQL(如Impala)

先进分析(如Spark SQL、Spark ML和Impala)

流式处理(如Spark Streaming)

在研究YARN之前,先解释⼀下术语。下⾯⼏个名称都是指相同的东西:

MapReduce 2.0

启动所有YARN应⽤。

管理作业的调度与执⾏。

管理任务的调度与执⾏。

为应⽤的任务分配本地资源。

与ResourceManager和NodeManager不同,ApplicationMaster对应于⼀个应⽤程序,并为该应⽤程序的运⾏申请资源。尽管

ResourceManager和NodeManagers⼀直运⾏,ApplicationMaster也仅与运⾏的应⽤程序相关联,如果当前没有运⾏的应⽤程

序,则不会有ApplicationMaster进程存在。记住,ApplicationMaster跟踪特定应⽤程序的作业进度,每次启动新的应⽤程序