大数据知识扫盲

MapReudece作业启动和运行机制

MapReduce是一种分布式计算框架,最初由Google开发,用于处理大规模数据集的批处理任务。其核心思想是将数据划分为小的块,然后并行处理这些块,最后将结果合并。以下是MapReduce作业的启动和运行机制:

  1. 作业提交
    • 用户或应用程序通过客户端将MapReduce作业提交到集群上的资源管理器(ResourceManager)。
    • ResourceManager负责调度集群上的资源并为作业分配资源。
  2. 划分数据
    • ResourceManager将输入数据划分为若干个输入分片(splits),每个输入分片通常对应一个Mapper任务。
    • 输入分片通常是文件的一部分,例如HDFS中的块(block)。
  3. Map任务
    • ResourceManager为每个Mapper任务分配计算资源,例如节点(NodeManager)。
    • 每个Mapper任务负责处理一个输入分片,对输入数据进行映射和处理。
    • 用户编写的Map函数被用于将输入数据转换为键-值对,将结果写入中间文件。
  4. 中间数据的分组和排序
    • 所有的Mapper任务的中间数据被收集并按键进行分组和排序,以便将相同键的数据发送到相同的Reducer任务。
    • 这个阶段的输出结果通常被分区并存储在分布式文件系统中,以便提供容错性。
  5. Reduce任务
    • ResourceManager为每个Reducer任务分配计算资源。
    • Reducer任务负责从Mapper的中间数据中获取相关的数据,并将它们合并和处理,生成最终的结果数据。
  6. 结果输出
    • Reduce任务的输出结果通常被写入分布式文件系统,例如HDFS。
    • 作业完成后,用户可以访问和分析这些输出结果。
  7. 作业监控和管理
    • ResourceManager和JobTracker(在Hadoop 1.x中使用)或ApplicationMaster(在Hadoop 2.x及之后版本中使用)负责监控作业的进度,处理故障,重新执行失败的任务,并确保作业成功完成。
  8. 清理资源
    • 作业完成后,集群将释放已分配的资源,以便其他作业可以使用它们。

shuffle 在大数据中的重大作用

  1. 数据重分布:shuffle 通常涉及数据的重新分布,将不同的数据分片(分区)重新组合到不同的任务中,以便进行进一步的处理。这是大数据处理中的关键操作,例如,在 MapReduce 或 Spark 中,map 阶段会生成键值对,然后进行shuffle,以便在 reduce 阶段合并和处理相关数据。
  2. 数据排序:在某些情况下,shuffle 可能需要对数据进行排序,以确保 reduce 阶段能够高效地进行数据处理。这对于需要有序数据的任务非常重要。
  3. 数据合并:shuffle 也涉及数据的合并操作,以便在 reduce 阶段将相同键的数据合并在一起。这有助于减少在 reduce 阶段的数据传输量和计算开销。
  4. 数据传输和网络开销:shuffle 涉及将数据从一个节点传输到另一个节点,这通常需要通过网络传输大量数据。因此,shuffle 操作可能会引入大量的网络开销,特别是在大规模分布式系统中。
  5. 数据局部性:为了减少网络开销,shuffle 操作通常会尝试将数据移到尽可能接近要处理它的节点上。这有助于提高数据局部性,减少网络传输。
  6. 性能优化:shuffle 操作的性能对整个大数据处理作业的性能有重大影响。因此,许多分布式计算框架(如Apache Spark)都致力于优化shuffle操作,以提高整体性能。
  7. 数据倾斜处理:在大数据处理中,数据倾斜是一个常见的问题,即某些键的数据量远远超过其他键。shuffle操作通常需要处理数据倾斜,以确保任务的负载均衡,防止某些节点上的任务变得过于繁重。

Yarn 大数据平台资源管理和作业调度框架

Apache Hadoop YARN(Yet Another Resource Negotiator)是一个大数据平台资源管理和作业调度框架,它是 Apache Hadoop 生态系统的一部分。YARN 的主要目标是提供一个通用、灵活的资源管理平台,使各种大数据处理框架(如Hadoop MapReduce、Apache Spark、Apache Flink等)可以有效地共享和管理集群资源。以下是关于YARN的一些重要信息:

  1. 资源管理: YARN 负责在集群上分配和管理资源。它将集群资源划分为容器,每个容器可以包含一个或多个任务。这种资源管理方法使多个应用程序可以共享集群资源,而不会相互干扰。

  2. 作业调度: YARN 支持多种调度策略,例如容量调度、公平调度和先进先出调度,以满足不同应用程序的需求。这使得在同一集群上运行多个应用程序变得更加容易。

  3. 容错性: YARN 具有容错性,即使在节点故障时也能够重新分配任务,以确保应用程序的稳定性和可用性。

  4. 灵活性: YARN 提供了灵活的应用程序框架,允许开发人员编写自定义应用程序,并根据需要配置资源和调度策略。这为大数据生态系统的不断发展提供了支持。

  5. 监控和管理: YARN 提供了丰富的监控和管理工具,用于跟踪应用程序的性能、资源使用和集群健康情况。这些工具包括YARN ResourceManager和NodeManager、YARN应用程序历史服务器等。

  6. 生态系统集成: YARN被设计为与大数据生态系统中的其他组件集成,包括Hadoop Distributed File System(HDFS)、Hive、Pig、Tez、Spark等。这意味着你可以在一个集群上同时运行多个大数据处理框架,而它们都可以受益于YARN的资源管理。

  7. 扩展性: YARN是一个高度可扩展的框架,可以适应不断增长的数据处理需求。它支持横向扩展,可以轻松地添加更多的节点和资源来满足增加的工作负载。

Yarn 实际运行过程

让我们通过一个具体的示例来说明YARN的工作原理。假设你有一个大数据集群,其中有数十台服务器,你想在这个集群上运行两个不同的大数据处理应用程序:一个是Hadoop MapReduce作业,另一个是Apache Spark应用程序。YARN将用于管理和调度这两个应用程序的资源。

1. 提交应用程序: 首先,你将在集群上提交两个不同的应用程序,一个是Hadoop MapReduce作业,另一个是Spark应用程序。这两个应用程序分别包括Mapper、Reducer和Spark任务。

2. ResourceManager: 集群上有一个YARN ResourceManager(RM),它是YARN的核心组件之一。RM负责接收应用程序的提交请求并为它们分配资源。RM维护有关可用资源的信息,如可用内存和CPU核心。

3. ApplicationMaster: 每个应用程序都有一个ApplicationMaster(AM)。AM是一个YARN容器,负责与RM协商资源,为应用程序分配任务,并监控应用程序的执行。对于Hadoop MapReduce应用程序,AM会与RM协商Mapper和Reducer任务,而对于Spark应用程序,AM会协商Spark任务。

4. NodeManager: 集群中的每个节点都有一个YARN NodeManager(NM),它负责监视本地资源使用情况,启动和停止容器,以及向RM报告可用资源。

5. 资源分配: RM将应用程序的资源请求与集群中的可用资源进行匹配。它决定分配多少内存、CPU核心等资源给每个应用程序。资源分配是基于调度策略(如容量调度或公平调度)进行的。

6. 执行应用程序: 一旦资源分配完成,AM将启动应用程序的任务,并开始执行。这包括在容器中运行Mapper、Reducer或Spark任务。NodeManager负责启动和监视这些容器。

7. 监控和容错性: RM和AM会不断监控应用程序的执行,以确保它们正常工作。如果应用程序失败或容器遇到问题,YARN可以重新分配资源或重启容器,以确保应用程序的稳定性和可用性。

8. 完成应用程序: 当应用程序执行完成时,AM会向RM报告,并释放已使用的资源。RM会更新集群的可用资源信息。

相关推荐
10年前端老司机2 小时前
React无限级菜单:一个项目带你突破技术瓶颈
前端·javascript·react.js
Sylvia-girl4 小时前
Java——抽象类
java·开发语言
TDengine (老段)4 小时前
TDengine 使用最佳实践(2)
大数据·数据库·物联网·时序数据库·iot·tdengine·涛思数据
Deng9452013145 小时前
基于大数据的电力系统故障诊断技术研究
大数据·matplotlib·深度特征提取·随机森林分类算法·标签编码
Yana.nice6 小时前
Bash函数详解
开发语言·chrome·bash
小菜鸡06268 小时前
FlinkSQL通解
大数据·flink
tomorrow.hello8 小时前
Java并发测试工具
java·开发语言·测试工具
晓13138 小时前
JavaScript加强篇——第四章 日期对象与DOM节点(基础)
开发语言·前端·javascript
老胖闲聊8 小时前
Python I/O 库【输入输出】全面详解
开发语言·python
寅鸷8 小时前
es里为什么node和shard不是一对一的关系
大数据·elasticsearch