IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 大数据 -> MapReduce&Yarn理论 -> 正文阅读

[大数据]MapReduce&Yarn理论

前言

MapReduce

Hadoop MapReduce是数据处理层。它处理存储在 HDFS 中的大量结构化和非结构化数据
MapReduce 通过将作业划分为一组独立的任务来并行处理数据。因此,并行处理提高了速度和可靠性

Hadoop MapReduce 数据处理分两个阶段进行 Map 和 Reduce 阶段:

  • map阶段——这是数据处理的第一阶段。在这个阶段,我们指定所有复杂的逻辑/业务规则/昂贵的代码
  • Reduce阶段——这是处理的第二阶段。在这个阶段,我们指定轻量级处理,如聚合/求和

MapReduce架构

在这里插入图片描述

MRv1角色

Client

  • 作业为单位
  • 规划作业计算分布
  • 提交作业资源到HDFS
  • 最终提交作业到JobTracker

JobTracker

  • 核心,主,单点
  • 调度所有的作业
  • 监控整个集群的资源负载

TaskTracker

  • 从,自身节点资源管理
  • 和JobTracker心跳,汇报资源,获取Task

弊端

  • JobTracker:负载过重,单点故障
  • 资源管理与计算调度强耦合,其他计算框架需要重复实现资源管理
  • 不同框架对资源不能全局管理

MapReduce执行流程

在这里插入图片描述

  1. 客户端提交一个MapReduce的jar包给JobClient(提交方式:hadoop jar …)
  2. JobClient通过RPC和JobTracker)进行通信,返回一个存放jar包的地址(HDFS)和JobId
  3. Client将运行作业所需要的资源(包括JAR文件、配置文件和计算所得的输入分片)复制到HDFS中的以作业id命名的目录下(Path = HDFS上的地址 + JobId)
  4. 开始提交任务(任务的描述信息,不是jar,包括Jobid,jar存放的位置,配置信息等等)
  5. JobTracker进行初始化任务
  6. 读取HDFS上的要处理的文件,开始计算输入分片,每一个分片对应一个MapperTask
  7. TaskTracker通过心跳机制领取任务(任务的描述信息)
  8. 下载所需的jar,配置文件等
  9. TaskTracker启动一个Java Child子进程
  10. 用来执行具体的任务(MapperTask或ReducerTask)将结果写入到HDFS当中

MapReduce工作流程

在这里插入图片描述

  1. InputFiles - 文件输入
    在输入文件中存储 MapReduce 作业的数据。在HDFS中,输入文件驻留,输入文件格式是任意的,还可以使用基于行的日志文件和二进制格式

  2. InputFormat - 文件格式化
    InputFormat 定义如何分割和读取这些输入文件,它选择要输入的文件或其他对象,InputFormat 创建 InputSplit

  3. Splits - 切片
    它表示将由单个Mapper处理的数据。对于每一次拆分,都会创建一个map任务,因此map任务的数量等于 Split 的数量,框架划分为记录,由 Mapper 处理

  4. RecordReader - 记录阅读
    它与 Split 通信。然后将数据转换成适合 Mapper 读取的键值对,RecordReader 默认使用 TextInputFormat 将数据转换为键值对,直到文件读取完成,它将字节偏移量分配给文件中存在的每一行,然后这些键值对被进一步发送到 Mapper 进一步处理

  5. Mapper - 映射
    它处理由 RecordReader 产生的输入记录,并生成中间的键值对,中间输出完全不同于输入对,Mapper 的输出是键值对的完整集合
    Hadoop 框架不会将mapper的输出存储在HDFS上,因为数据是临时的,写入HDFS会创建不必要的多个副本,然后Mapper将输出传递给 Combiner 进行进一步处理

  6. Combiner - 合并
    Combiner 是 Mini-reducer,它对 Mapper 的输出执行局部聚合,它最大限度地减少了 Mapper 和 Reducer 之间的数据传输,因此,当合并功能完成时,框架将输出传递给 Partitioner 进行进一步处理

  7. Partitioner - 分区
    如果我们使用多个 Reducer 时,Partitioner 就会出现,它获取 Combiner 的输出并执行分区
    根据MapReduce中的键对输出进行分区,通过散列函数,key(或key的子集)派生分区
    根据MapReduce中的键值,对每个 Combiner 输出进行分区,然后具有相同键值的记录进入相同的分区,之后每个分区被发送到 Reducer ,MapReduce执行中的分区允许 Mapper 输出均匀分布到 Reducer 上

  8. Shuffling and Sorting - 洗牌和排序
    分区后,输出被转移到 Reducer 节点,洗牌是数据在网络上的物理移动,当所有 Mapper 完成后,在 Reducer 上调整输出,然后,框架将这些中间输出合并并排序,然后将其作为 Reducer 的输入

  9. Reducer - 归约
    然后Reducer 将 Mapper 生成的一组中间键值对作为输入,之后在它们中运行一个 Reducer 函数来生成输出,Reducer 的输出就是最终输出,然后框架将输出存储在HDFS上

  10. RecordWriter - 记录写入
    它将这些输出键值对从 Reducer 阶段写入输出文件

  11. OutputFormat - 输出格式
    OutputFormat 定义了 RecordReader 在输出文件中写入这些输出键值对的方式,Hadoop提供实例向HDFS中写入文件,因此OutputFormat 实例将 Reducer 的最终输出写入HDFS

Yarn

Hadoop 2.0新引入的资源管理系统,从MRv1演化而来的
YARN 由 ResourceManager、NodeManager 和每个应用程序的 ApplicationMaster 组成
将MRv1中JobTracker的资源管理和任务调度两个功能分开,分别由 ResourceManager 和 ApplicationMaster 进程实现

Yarn架构

在这里插入图片描述

MRv2角色

Client - 客户端:提交 MapReduce 作业
Resource Manager - 资源管理器:它是YARN的主守护进程,负责所有应用程序之间的资源分配和管理。无论何时接收到处理请求,它都会将其转发给相应的节点管理器,并分配相应的资源以完成请求。它有两个主要组成部分

  • Scheduler - 调度器:它根据分配的应用程序和可用资源执行调度。它是一个纯粹的调度器,意味着它不执行其他任务,如监视或跟踪,并且不保证在任务失败时重新启动。YARN调度器支持使用Capacity scheduler、Fair scheduler等插件对集群资源进行分区
  • Application Manager - 应用程序管理器:它负责接受应用程序并协商来自 ResourceManager 的第一个容器。如果任务失败,它还会重新启动Application Master容器

Node Manager - 节点管理器:它负责Hadoop集群上的单个节点,并管理应用程序和工作流以及特定的节点,主要工作是与 ResourceManager 保持同步,向 ResourceManager 注册,并发送带有节点健康状态的心跳,监视资源使用情况,执行日志管理,并根据 ResourceManager 的指示杀死容器,还负责创建容器进程,并根据应用程序主进程的请求启动它
Application Master - 应用程序:Application 是提交给框架的单个作业,Application 负责与 ResourceManager 协商资源,跟踪单个Application 的状态和进度,Application 通过发送包含应用程序运行所需的所有内容的容器启动上下文(container Launch Context, CLC)从 NodeManager 请求容器,启动应用程序后,它会不时向 ResourceManager 发送运行状况报告
Container - 容器:它是单个节点上的 RAM、CPU 内核和磁盘等物理资源的集合,容器由容器启动上下文(CLC)调用,这是一个包含环境变量、安全令牌、依赖项等信息的记录

Yran执行流程

在这里插入图片描述

  1. 客户端提交应用程序
  2. 资源管理器分配一个容器来启动应用程序管理器
  3. 应用程序管理器向资源管理器注册自己
  4. 应用程序管理器从资源管理器协商容器
  5. 应用程序管理器通知节点管理器启动容器
  6. 应用程序代码在容器中执行
  7. 客户端联系资源管理器/应用程序管理器以监视应用程序的状态
  8. 处理完成后,应用程序管理器取消对资源管理器的注册

参考

本文参考

https://techvidvan.com/tutorials/mapreduce-job-execution-flow/
https://www.geeksforgeeks.org/hadoop-yarn-architecture/

本专栏为大数据学习专栏,如有问题还望指出,共同学习!

  大数据 最新文章
实现Kafka至少消费一次
亚马逊云科技:还在苦于ETL?Zero ETL的时代
初探MapReduce
【SpringBoot框架篇】32.基于注解+redis实现
Elasticsearch:如何减少 Elasticsearch 集
Go redis操作
Redis面试题
专题五 Redis高并发场景
基于GBase8s和Calcite的多数据源查询
Redis——底层数据结构原理
上一篇文章      下一篇文章      查看所有文章
加:2022-06-06 17:25:11  更:2022-06-06 17:25:41 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年5日历 -2024/5/19 23:29:04-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码