分布式计算框架MapReduce

Posted 一杯敬朝阳一杯敬月光

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了分布式计算框架MapReduce相关的知识,希望对你有一定的参考价值。

 

MapReduce概述

  • 源自于Google的MapReduce论文,论文发表于2004年2月
  • Hadoop MapReduce 是 Google MapReduce 的克隆版
  • MapReduce优点:海量数据离线处理 & 易开发(相对于自己开发分布式框架来说的,现在的Spark和Flink要比MapReduce更简单) & 易运行(可以本地开发本地测试)
  • MapReduce缺点:实时流式计算

MapReduce编程模型

MapReduce编程模型之Map和Reduce阶段

  • 将作业拆分成Map阶段和Reduce阶段
  • Map阶段:Map Tasks
  • Reduce阶段:ReduceTasks

MapReduce变成模型之执行步骤

  1. 准备map处理的输入数据
  2. Mapper处理
  3. shuffle
  4. Reduce处理
  5. 结果输出

MapReduce编程模型核心概念详解

  • Split
  • InputFormat
  • OutputFormat
  • Combiner
  • Partitioner

词频统计升级之Combiner操作

Combiner

  • 优点:能减少IO,提升作业的执行性能
  • 缺点:求平均数: 总数 / 个数, 其实可以理解为非求和操作都要慎重?
    • 每个map求平均再到reducer求平均,与直接reducer求平均通常不一样。

map端的聚合操作就叫做combiner。

设map1处理了1kw个单词,均是hello,is;map2也处理了1千万个单词,均是hadoop和is。则所有的这些中间结果都需要经过网络传输,即1kw个中间结果+1kw个中间结果(map中输出的所有key都通过网络传输),可想而知,性能不会好,此时若我们先在map端做一次聚合,则只需各传输两个中间结果【(hello, 2), (is, 2)】+ 【(hadoop, 3), (is, 2)】,可以节省网络的开销,即在map端先做一次聚合,且该聚合操作和reducer的逻辑是一样的。

报错

忘记加载主类、也没有提交

[WARN ] method:org.apache.hadoop.util.NativeCodeLoader.<clinit>(NativeCodeLoader.java:62)
Unable to load native-hadoop library for your platform... using builtin-java classes where applicable

 

参考:慕课网-Hadoop 系统入门+核心精讲

 

 

 

以上是关于分布式计算框架MapReduce的主要内容,如果未能解决你的问题,请参考以下文章

分布式计算框架MapReduce

分布式计算框架——MapReduce

分布式计算框架——MapReduce

大数据入门-分布式计算框架MapReduce

一文快速入门大数据计算框架MapReduce

Hadoop中的MapReduce——分布式离线计算框架