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服务:
(1)HDFS服务:
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跟踪特定应⽤程序的作业进度,每次启动新的应⽤程序


发布评论