【大数据】MapReduce与YARN 理解 (图文)

MapReduce 基础架构与原理

 

1:Job Tracker:JobTracker是MapReduce的主节点,负责协调整个作业的执行过程。它接收客户端提交的作业请求,并将作业划分为多个任务(Task)。JobTracker跟踪任务的执行状态,监控任务的进度和失败情况,并重新调度失败的任务。

2:Task Tracker:TaskTracker是MapReduce的工作节点,负责执行具体的任务。每个工作节点上都运行一个TaskTracker。TaskTracker接收JobTracker分配的任务,并将其划分为多个子任务(Map任务和Reduce任务),并将这些子任务分配给可用的执行器(Executor)进行执行。

3:NameNode:NameNode是HDFS的主节点,负责管理文件系统的命名空间、文件和目录的元数据信息。它记录了文件的块分布和副本位置。JobTracker会与NameNode通信以获取输入文件的位置和复制因子等信息。

4:NataNode:DataNode是HDFS的工作节点,负责存储实际的数据块。每个工作节点上都运行一个DataNode。TaskTracker会与DataNode通信以读取和写入数据块。

 

MapReduce的基本运行流程如下:

  1. 客户端将作业提交给JobTracker。
  2. JobTracker根据作业的输入数据划分成多个Map任务,并将这些任务分配给可用的TaskTracker。
  3. TaskTracker执行Map任务,将中间结果存储在本地磁盘上,并将结果通知JobTracker。
  4. JobTracker将Reduce任务分配给TaskTracker,Reduce任务读取Map任务的输出,并进行合并和排序。
  5. Reduce任务将最终结果写入HDFS。
  6. 客户端可以从HDFS读取作业的输出结果。

总结:JobTracker负责作业的调度和监控,TaskTracker负责任务的执行和报告状态,NameNode负责管理文件系统的元数据,DataNode负责存储实际的数据块。这种基于主从架构的设计使得MapReduce能够高效地处理大规模的数据。

 

 

YARN 基础架构与原理

 

1:ResourceManager:ResourceManager是YARN的主节点,负责整个集群的资源管理和作业调度。它接收客户端提交的作业请求,并将作业划分为多个应用程序(Application)。ResourceManager分配资源给应用程序,并通过NodeManager来监控和管理资源使用情况。

2:NodeManager:NodeManager是YARN的工作节点,负责执行具体的任务。每个工作节点上都运行一个NodeManager。NodeManager接收ResourceManager分配的任务,并将其划分为多个容器(Container),并将这些容器分配给可用的执行器(Executor)进行执行。

3:ApplicationMaster:ApplicationMaster是每个应用程序的主节点,负责协调整个应用程序的执行过程。它与ResourceManager通信以获取资源,并与NodeManager通信以启动和管理容器。ApplicationMaster跟踪任务的执行状态,监控任务的进度和失败情况,并重新调度失败的任务。

 

YARN的基本运行流程如下:

  1. 客户端将应用程序提交给ResourceManager。
  2. ResourceManager为应用程序分配一个唯一的Application ID,并为应用程序启动一个ApplicationMaster。
  3. ApplicationMaster与ResourceManager通信以获取资源,并与NodeManager通信以启动和管理容器。
  4. ApplicationMaster将任务分配给容器,并监控任务的执行状态。
  5. 容器中的执行器执行任务,并将结果写入存储系统(如HDFS)。
  6. 客户端可以从存储系统读取应用程序的输出结果。

总结:ResourceManager负责资源的管理和作业的调度,NodeManager负责任务的执行和资源的管理,ApplicationMaster负责应用程序的协调和任务的监控。YARN的设计实现了资源和作业的分离,使得不同类型的应用程序可以共享同一个集群,并能够高效地利用集群资源。

 

 

 

 

JobHistoryServer历史服务器

 

1:存储作业历史信息:JobHistoryServer负责接收来自ResourceManager和NodeManager的作业历史信息,并将其存储在持久化存储中(如HDFS或其他支持的存储系统)。这些历史信息包括作业的运行时间、任务的执行状态、任务的输入输出路径等。

2:提供作业历史信息查询接口:JobHistoryServer提供了REST API和Web界面,用于用户查询和浏览作业的历史信息。用户可以通过这些接口查看作业的执行进度、任务的执行情况、作业的输入输出路径等详细信息。这对于故障排查和性能优化非常有帮助。

3:作业历史信息的保留和管理:JobHistoryServer可以根据配置的策略来管理历史信息的保留周期。它可以定期清理过期的历史信息,以节省存储空间。

总结:JobHistoryServer是一个独立的组件,独立于ResourceManager和NodeManager。它可以单独部署在一个独立的服务器上,也可以与其他Hadoop组件一起运行在同一个服务器上。通过使用JobHistoryServer,用户可以更方便地追踪和分析作业的执行历史,从而能够更好地优化和管理集群的性能。

 

posted @ 2023-10-07 12:12  PythonNew_Mr.Wang  Views(146)  Comments(0)    收藏  举报