Hadoop知识点总结——MapReduce

简介: MapReduce

大家好,我是风云,欢迎大家关注我的博客 或者 微信公众号【笑看风云路】,在未来的日子里我们一起来学习大数据相关的技术,一起努力奋斗,遇见更好的自己!

前言

只有理解了MapReduce的核心思想以及体系结构,我们才能更好的进行MR编程!

MapReduce核心思想

一张图看懂MapReduce 架构是如何工作的?

核心思想:分而治之

一个存储在分布式文件系统HDFS中的大规模数据集,会被切分成许多独立的分片(split)即:

一个大任务分成多个小的子任务(map),由多个节点进行并行执行,并行执行后,合并结果(reduce)

函数 输入 输出 说明
Map

<k1,v1>

如:

<行号,“a b c”>

List(<k2,v2>)

如:

<"a",1>

<"b",1>

<"c",1>

1. 将小数据集进一步解析成一批<key,value>对,输入Map函数中进行处理

2. 每一个输入的<k1,v1>会输出一批<k2,v2>。<k2,v2>是计算的中间结果

Reduce

<k2,List(v2)>

如:

<"a",<1,1,1>>

<k3,v3>

<"a",3>

输入的中间结果<k2,List(v2)>中的List(v2)表示是一批属于同一个k2的value

  • 分布式编程架构
  • 以数据为中心,更看重吞吐量
  • 分而治之的思想
  • Map将一个任务分解成多个子任务
  • Reduce将多个子任务的计算结果汇总

Mapreduce体系结构

MapReduce的体系结构

  • Job
  • 一个任务,一个作业
  • 一个Job会被分成多个Task
  • Task
  • task里面,又分为Maptask和Reducetask,也就是一个Map任务和Reduce任务
  • JobTracker & TaskTracker
  • MapReduce框架采用了Master/Slave架构,包括一个Master和若干个Slave
  • Master上运行JobTracker,负责作业的调度、处理和失败后的恢复
  • Slave上运行的TaskTracker,负责接收JobTracker发给它的作业指令

Hadoop框架是用Java实现的,但是,MapReduce应用程序不一定要用Java来写,也可以用python

JobTracker:

  1. 作业调度
  2. 分配任务、监控任务执行进度
  3. 监控TaskTracker的状态

TaskTracker的角色:

  1. 执行任务
  2. 汇报任务状态

MapReduce体系结构主要由四个部分组成,分别是:Client、JobTracker、TaskTracker以及Task

Client:客户端,用于提交作业

JobTracker:作业跟踪器,负责作业调度,作业执行,作业失败后恢复

TaskScheduler:任务调度器,负责任务调度

TaskTracker:任务跟踪器,负责任务管理(启动任务,杀死任务等)

  1. Client-提交作业,查看作业状态
    **提交作业:**用户编写的MapReduce程序通过Client提交到JobTracker端
    **查看作业状态:**用户可通过Client提供的一些接口查看作业运行状态
  2. JobTracker-资源监控、作业调度
    JobTracker负责资源监控和作业调度
    资源监控: JobTracker 监控所有TaskTracker与Job的健康状况,一旦发现节点失效(通信失败或节点故障),就将相应的任务转移到其他节点
    作业调度: JobTracker 会跟踪任务的执行进度、资源使用量等信息,并将这些信息告诉任务调度器(TaskScheduler),而任务调度器会选择合适的(比较空闲)节点资源来执行任务
  3. TaskScheduler-任务调度器
  4. TaskTracker-任务管理
    TaskTracker 会周期性地通过“心跳”将本节点上资源的使用情况和任务的运行进度汇报给JobTracker,同时接收JobTracker 发送过来的命令并执行相应的操作(如启动新任务、杀死任务等)
    TaskTracker 使用“slot”等量划分本节点上的资源量(CPU、内存等)。一个Task 获取到一个slot 后才有机会运行,而Hadoop调度器(TaskScheduler)的作用就是将各个TaskTracker上的空闲slot分配给Task使用
    slot 分为Map slot 和Reduce slot 两种,分别供MapTask 和Reduce Task 使用
  5. Task
    Task 分为Map Task 和Reduce Task 两种,均由TaskTracker 启动
相关文章
|
2月前
|
分布式计算 资源调度 Hadoop
大数据-80 Spark 简要概述 系统架构 部署模式 与Hadoop MapReduce对比
大数据-80 Spark 简要概述 系统架构 部署模式 与Hadoop MapReduce对比
83 2
|
22天前
|
数据采集 分布式计算 Hadoop
使用Hadoop MapReduce进行大规模数据爬取
使用Hadoop MapReduce进行大规模数据爬取
|
2月前
|
分布式计算 资源调度 Hadoop
Hadoop-10-HDFS集群 Java实现MapReduce WordCount计算 Hadoop序列化 编写Mapper和Reducer和Driver 附带POM 详细代码 图文等内容
Hadoop-10-HDFS集群 Java实现MapReduce WordCount计算 Hadoop序列化 编写Mapper和Reducer和Driver 附带POM 详细代码 图文等内容
119 3
|
2月前
|
分布式计算 资源调度 数据可视化
Hadoop-06-Hadoop集群 历史服务器配置 超详细 执行任务记录 JobHistoryServer MapReduce执行记录 日志聚合结果可视化查看
Hadoop-06-Hadoop集群 历史服务器配置 超详细 执行任务记录 JobHistoryServer MapReduce执行记录 日志聚合结果可视化查看
52 1
|
2月前
|
分布式计算 资源调度 Hadoop
Hadoop-05-Hadoop集群 集群WordCount 超详细 真正的分布式计算 上传HDFS MapReduce计算 YRAN查看任务 上传计算下载查看
Hadoop-05-Hadoop集群 集群WordCount 超详细 真正的分布式计算 上传HDFS MapReduce计算 YRAN查看任务 上传计算下载查看
58 1
|
2月前
|
SQL 分布式计算 关系型数据库
Hadoop-24 Sqoop迁移 MySQL到Hive 与 Hive到MySQL SQL生成数据 HDFS集群 Sqoop import jdbc ETL MapReduce
Hadoop-24 Sqoop迁移 MySQL到Hive 与 Hive到MySQL SQL生成数据 HDFS集群 Sqoop import jdbc ETL MapReduce
110 0
|
2月前
|
SQL 分布式计算 关系型数据库
Hadoop-23 Sqoop 数据MySQL到HDFS(部分) SQL生成数据 HDFS集群 Sqoop import jdbc ETL MapReduce
Hadoop-23 Sqoop 数据MySQL到HDFS(部分) SQL生成数据 HDFS集群 Sqoop import jdbc ETL MapReduce
51 0
|
2月前
|
SQL 分布式计算 关系型数据库
Hadoop-22 Sqoop 数据MySQL到HDFS(全量) SQL生成数据 HDFS集群 Sqoop import jdbc ETL MapReduce
Hadoop-22 Sqoop 数据MySQL到HDFS(全量) SQL生成数据 HDFS集群 Sqoop import jdbc ETL MapReduce
60 0
|
4月前
|
缓存 分布式计算 算法
优化Hadoop MapReduce性能的最佳实践
【8月更文第28天】Hadoop MapReduce是一个用于处理大规模数据集的软件框架,适用于分布式计算环境。虽然MapReduce框架本身具有很好的可扩展性和容错性,但在某些情况下,任务执行可能会因为各种原因导致性能瓶颈。本文将探讨如何通过调整配置参数和优化算法逻辑来提高MapReduce任务的效率。
676 0
|
6月前
|
存储 分布式计算 Hadoop
Hadoop生态系统详解:HDFS与MapReduce编程
Apache Hadoop是大数据处理的关键,其核心包括HDFS(分布式文件系统)和MapReduce(并行计算框架)。HDFS为大数据存储提供高容错性和高吞吐量,采用主从结构,通过数据复制保证可靠性。MapReduce将任务分解为Map和Reduce阶段,适合大规模数据集的处理。通过代码示例展示了如何使用MapReduce实现Word Count功能。HDFS和MapReduce的结合,加上YARN的资源管理,构成处理和分析大数据的强大力量。了解和掌握这些基础对于有效管理大数据至关重要。【6月更文挑战第12天】
278 0

相关实验场景

更多