Hadoop 1.x:体系结构,主要组件以及HDFS和MapReduce的工作方式
在本文中,我们将讨论Apache Hadoop 1.x体系结构及其组件的详细工作方式。
Hadoop 1.x架构
Apache Hadoop 1.x或者更早版本使用以下Hadoop体系结构。
它是Hadoop 1.x高级架构。
我们将在接下来的部分中讨论详细的低层架构。
如果您目前不了解这种架构,则无需担心。
阅读这篇文章的下一部分以及以后的文章,以很好地理解它。
Hadoop通用模块是适用于所有Hadoop组件的Hadoop基本API(一个Jar文件)。
所有其他组件都在此模块上运行。HDFS代表Hadoop分布式文件系统。
它也被称为HDFS V1,因为它是Hadoop 1.x的一部分。
它用作Hadoop体系结构中的分布式存储系统。MapReduce是批处理或者分布式数据处理模块。
它是按照Google的MapReduce算法构建的。
由于它是Hadoop 1.x的一部分,因此也称为" MR V1"或者" Classic MapReduce"。其余所有Hadoop生态系统组件都在这两个主要组件之上工作:HDFS和MapReduce。
在我的后续文章中,我们将详细讨论所有Hadoop生态系统组件。
注意:-Hadoop 1.x MapReduce是根据Google的MapReduce算法技术论文开发的,也被称为"经典MapReduce"。
Hadoop 1.x主要组件
Hadoop 1.x主要组件组件包括:HDFS和MapReduce。
它们也被称为Hadoop 1.x的"两个支柱"。
HDFS:HDFS是Hadoop分布式文件系统,其中BigData使用商品硬件存储。
它设计用于默认块大小为64MB的大型数据集(我们可以根据我们的项目要求进行更改)。
HDFS组件又分为两个子组件:
- 名称节点
名称节点放置在主节点中。
它用于存储有关数据节点的元数据,例如"数据节点中存储了多少块,哪些数据节点具有数据,从节点详细信息,数据节点位置,时间戳等"。
- 数据节点
Data Nodes are places in Slave Nodes. It is used to store our Application Actual Data. It stores data in Data Slots of size 64MB by default.
MapReduce:MapReduce是一种分布式数据处理或者批处理编程模型。
与HDFS一样,MapReduce组件也使用商品硬件以可靠且容错的方式处理"高速率下的大量数据"。
MapReduce组件再次分为两个子组件:
- 工作追踪器
Job Tracker用于将MapReduce任务分配给节点集群中的Task Tracker。
有时,由于先前的任务跟踪器出现故障或者关闭情况,它会将相同的任务重新分配给其他任务跟踪器。
Job Tracker维护所有任务跟踪器状态,如"正在运行/正在运行","失败","已恢复"等。
- 任务追踪器
Task Tracker executes the Tasks which are assigned by Job Tracker and sends the status of those tasks to Job Tracker.
在下一部分中,我们将详细讨论这四个子组件的职责以及它们如何相互作用以执行"客户端应用程序任务"。
Hadoop 1.x主要组件如何工作
Hadoop 1.x组件遵循此架构相互交互,并以可靠且容错的方式并行工作。
Hadoop 1.x组件高级架构
主节点和从节点都包含两个Hadoop组件:
HDFS组件
MapReduce组件
主节点的HDFS组件也称为"名称节点"。
从节点的HDFS组件也称为"数据节点"。
主节点的"名称节点"组件用于存储元数据。
从节点的"数据节点"组件用于存储实际的应用程序大数据。
HDFS通过使用64MB大小的"数据插槽"或者"数据块"来存储数据。
主节点的MapReduce组件也称为"作业跟踪器"。
从节点的MapReduce组件也称为"任务跟踪器"。
主节点的"作业跟踪器"会小心地将任务分配给"任务跟踪器",并从中接收结果。
从节点的MapReduce组件"任务跟踪器"包含两个MapReduce任务:
地图任务
减少任务
我们将在我的后续文章中通过一些简单的端到端示例详细讨论MapReduce任务(Mapper和Reducer)。
从属节点的"任务跟踪器"实际上是通过使用MapReduce批处理模型执行客户端的任务的。
主节点是主要节点,用于照顾所有剩余的从节点(次要节点)。
Hadoop 1.x组件详细架构
Hadoop 1.x架构说明
客户(一个或者多个)将他们的工作提交到Hadoop系统。
Hadoop系统收到客户端请求时,首先会被主节点接收。
主节点的MapReduce组件"作业跟踪器"负责接收客户端工作,并分为可管理的独立任务,并将其分配给任务跟踪器。
从节点的MapReduce组件"任务跟踪器"从"作业跟踪器"接收这些任务,并使用MapReduce组件执行这些任务。
所有任务跟踪程序完成工作后,任务跟踪程序将获得这些结果并将其合并为最终结果。
最终,Hadoop系统会将最终结果发送给客户端。
Hadoop中存储和计算操作的工作方式
所有这些主节点和从节点都被组织成一个集群网络。
每个群集又被分为机架。
每个机架包含一组节点(商品计算机)。
当Hadoop系统收到将大型数据集存储到HDFS中的"存储"操作时,它将数据存储到3个不同的节点中(默认情况下,我们将复制因子设置为3)。
此完整数据不存储在一个节点中。
大数据文件分为可管理的有意义的块,并分配给具有3个副本的不同节点。
如果Hadoop系统收到任何"计算"操作,它将与附近的节点通信以检索这些数据块。
在读取数据或者计算时,如果一个或者多个节点发生故障,则它将通过接近任何附近的可用节点来自动执行这些任务。
这就是Hadoop系统提供高可用性和容错性的BigData解决方案的原因。
注意:
Hadoop 1.x体系结构具有很多局限性和缺陷。
因此,Hadoop社区已经对该架构进行了评估并将其重新设计为Hadoop 2.x架构。Hadoop 2.x架构完全不同,并且解决了所有Hadoop 1.x架构的局限性和缺点。