Hadoop之Map-Reduce

作者: 王中阳 | 来源:发表于2016-07-18 17:22 被阅读366次

应用场景

  1. 高容错
  2. 高扩展
  3. 编程简单
  4. 适合大数据离线批量计算处理(注意,MB级别的数据直接用Java处理,PB级别以上的才有必要使用mapreduce)
  5. 有延迟(需要实时处理数据用Hbase或storm)

原理图

image

map任务处理

  1. 读取输入文件内容,解析成key,value对。对输入文件的每一行,解析成key,value对。每一个键值对调用一次map函数
  2. 写自己的逻辑,处理输入的key,value,转成新的key,value输出
  3. 对输出的key,value进行分区
  4. 对不同分区的数据,按照key进行排序,分组。相同key的value放到一个集合中
  5. 分组后对数据进行==归约== (可选)

reduce任务处理

  1. 对多个map任务的输出,按照不同的分区,通过网络copy到不同的reduce节点。
  2. 对多个map任务的输出进行合并,排序。写reduce函数自己的逻辑,对输入的key,value处理,转换成新的key,value输出。
  3. 把reduce的输出保存到文件中。

map&reduce键值对格式

  1. map函数
  • 输入键值对 <K1,V1>
  • 输出键值对 <k2,v2>
  1. reduce()函数
  • 输入键值对 <k2,{v2}>
  • 输出键值对<k3,v3>

mapreduceg过程各个角色的作用

  • jobclient:提交作业
  • jobtracker:初始化作业,分配作业,tasktracker与其进行通信,协调监控整个作业
  • taskTracker:定期与jobtracker通信,执行map和reduce任务
  • HDFS:保存作业的数据,配置,jar包,结果

作业提交流程

  1. 提交作业准备
  • 编写自己的mapreduce程序
  • 配置作业,包括输入输出路径等等
  1. 提交作业
  • 配置完成后,通过jobclient提交
  1. 具体功能
  • 与jobTracker通信得到一个jar的存储路径和JobId
  • 输入输出路径检查,将jobjar拷贝到HDFS中
  • 写job.xml,真正提交作业

作业初始化

  1. 客户端提交作业后,jobTracker会将作业加入到队列中,然后进行调度,默认是FIFO的方式
  2. 具体功能
  • 作业初始化主要是指JobInProgress中完成的
  • 读取分片信息
  • 创建task:包括map和reduce任务
  • 创建taskInProgress执行task,包括map任务和reduce任务

任务分配

  1. TashTracker和jobtracker之间的通信和任务分配是通过心跳机制实现的
  2. tasktracker会主动定期的想jobtracker发送报告,询问是否有任务要做,如果有就申请到任务;如果没有任务,就一直申请

任务执行

  1. 当tasktracker拿到任务,会将信息拷贝到本地,包括代码,配置,分片信息等
  2. tasktracker中的localizeJob()方法会被调用进行本地化,拷贝job.jar,jobconf,job.xml到本地
  3. TaskTracker调用launchTaskForJob()方法加载启动任务
  4. MapTaskRunner和ReduceTaskRunner分别启动Javachild进行来执行相应的任务

错误处理

  1. JobTracker失败
  • hadoop2.0之前存在单点故障问题
  1. TraskTracker失败
  • TraskTracker崩溃了会停止向JobTracker发送心跳信息
  • JobTracker会将TraskTracker从等待的任务池中移除,并将该任务转移到其他地方执行
  • JobTracker将TraskTracker加入到黑名单中s
  1. Task失败
  • 任务失败,会向TraskTracker抛出异常,任务挂起

牛逼啦:mapreduce词频统计的原理

HDFS中words文件内容:
hello a
hello b
hello c

  1. map处理


  2. reduce处理



一个敲代码,爱分享的人,我在这里!

来玩啊

相关文章

  • hadoop学习笔记(五)MapReduce环境

    Hadoop核心组件——MR(Map-Reduce)Hadoop分布式计算框架Map-Reduce Map-Red...

  • Hadoop之Map-Reduce

    应用场景 高容错 高扩展 编程简单 适合大数据离线批量计算处理(注意,MB级别的数据直接用Java处理,PB级别以...

  • hadoop 学习笔记(1) -- 一个例子解释 MapRedu

    map-reduce 是 hadoop 的核心概念之一,hadoop 权威指南中以一个天气数据处理的例子说明了 m...

  • Oozie-Coordinator组件

    Coordinator Overview 用户在数据处理的过程中可能会使用到map-reduce, hadoop-...

  • Spark学习

    Spark学习 一、Spark简介 1.Hadoop中Map-Reduce计算框架的替代品 2.运行在HDFS上,...

  • 机器学习集训营---第五周总结

    本周主要讲大数据分析和处理,包含: hadoop 使用,map-reduce概念和使用 spark与大数据处理 下...

  • 大数据

    Map-Reduce和Hadoop逐渐称为面试热门。还有,容量的转换如下: bit就是位,也叫比特位,是计算机表示...

  • Hive简易教程 - 数据分析

    Hive是一个HDFS上的sql执行引擎,它将sql语句转化为Hadoop上的map-reduce任务来执行。由于...

  • NoSQL-HDFS-基本概念

    Hadoop Map-Reduce HDFS 正文 分布式文件系统 文件系统:文件系统是用来存储和管理文件,并且提...

  • spark题07

    1、简答说一下hadoop的map-reduce编程模型 首先map task会从本地文件系统读取数据,转换成ke...

网友评论

    本文标题:Hadoop之Map-Reduce

    本文链接:https://www.haomeiwen.com/subject/yxzpjttx.html