20210103

大数据 | 大数据基础--系统之大数据计算框架实例:Hadoop

亲爱的读者朋友大家晚上好,上次我们介绍了大数据计算框架的概述。今天分析一个计算框架的实例Hadoop~

简介

Hadoop的计算场景是处理批处理任务,具体的任务处理的实现接口被抽象为Map-Reduce。在使用Hadoop进行实践的时候需要重载MapReduce函数,函数的接口的使用如下所示:1609627999144

学习Hadoop的理论知识,应当从以下几个方面入手:

  • Hadoop的系统结构
  • Hadoop的底层计算框架MapReduce的执行过程
  • Hadoop的数据相关的底层技术,比如数据存储和文件系统

接下来就让我们按照上述顺序依次对Hadoop进行解析。

Hadoop系统结构

Hadoop有一套自己的生态,包括自己的计算框架、数据存储机制、任务执行的流程调度、事务的处理机制,具体如下所示:

  • 系统架构:Hadoop生态

  • 数据存储机制:HDFS

  • 基本数据操作:数据重分布

  • 流程优化:无 (额外的DAG模型生成工具)

  • 流程调度:基础任务调度、Map与Reduce函数的执行

  • 事务处理:失效结点处理

各个部分之间的关系如图所示:

1609639096964

MapReduce的执行

MapReduce程序运行流程

以wordcount为例,任务处理分为split、map、shuffle、reduce、output1609640003222

MapReduce计算框架

这里需要了解几个概念

  • 作业(Job):MapReduce程序指定的一个完整计算过程;一个作业在执行过程中可以被拆分为若干Map和Reduce任务完成。
  • 任务(Task):MapReduce框架中进行并行计算的基本事务单元;分为Map和Reduce任务,一个作业通常 包含多个任务。
  • JobClient:替程序与MapReduce运行框架交互的对象
  • JobTracker:MapReduce框架的管理者;协调MapReduce作业;分配任务;监控任务
  • TaskTracker:执行JobTracker分配的任务;分为Map和Reduce两类
1609640631928

程序执行流程的分解动作

  1. 作业启动1609641814965

  2. 作业初始化1609641942299

    1. MapReduce程序创建新的JobClient实例
    2. JobClient向JobTracker请求获得一个新的JobId标识本次作业
    3. JobClient将运行作业需要的相关资源放入作业对应的HDFS目录、计算分片数量和map任务数量
    4. 向JobTracker提交作业,并获得作业的状态对象句柄
    1609642050349
  3. 作业调度1609642208444

    1. 作业提交请求放入队列等待调度
    2. 从HDFS中取出作业分片信息,创建对应数量的TaskInProgress调度和监控Map任务
    1609642285200
  4. Map任务执行:作业调度完成后,每个client都收到了相应的计算任务1609642886178

    1. 从HDFS提取相关资源(Jar包、数据)
    2. 创建TaskRunner运行Map任务
    3. 在单独的JVM中启MapTask执行map函数
    4. 中间结果数据定期存入缓存
    5. 缓存写入磁盘
    6. 定期报告进度
    1609643036075
  5. shuffle:这个过程大致可以理解成为Reduce构造输入数据,因此整个过程包括:Map端保存、Partition、Sort、Combine、Reduce端拉取,最终将经过Map阶段处理之后具有相同key的数据聚集到一台机器上处理1609643196706

  6. Reduce任务执行1609643443586

    1. 分配Reduce任务
    2. 创建TaskRunner运行Reduce任务
    3. 在单独的JVM中启 动ReduceTask执行 reduce函数
    4. 从Map节点下载中间结果数据
    5. 输出结果临时文件
    6. 定期报告进度
    1609643547510
  7. 作业完成1609643599574

    1. 4.6/5.6 进度更新
    2. 6.1 JobClient轮询获知任务完成
    3. 6.2 通知用户

底层数据管理系统

底层的数据管理系统由数据存储Hbase和文件存储HDFS共同构成,关于这部分将会在下一篇中进行更加详细的介绍。

总结

这次我们把Hadoop的系统结构以及其比较重要的MapReduce程序的执行流程都介绍了一下,关于数据管理系统下次进行介绍,敬请期待~