16-hadoop-mapreduce简介

mapreduce是hadoop的核心组件, 设计理念是移动计算而不是移动数据,

mapreduce的思想是‘分而治之‘, 将复杂的任务分解成几个简单的任务去执行

1, 数据和计算规模大大减少
2, 就近计算, 移动计算
3, 小任务并行计算, 彼此间没有依赖

  

共分为4个步骤:

1, split

切分blcok, 切分为数据片段, split0, split1, split2

计算公式为:

2, map

自定义的程序, 根据业务需求来的,

map任务的多少, 根据碎片的多少来的, 即上一步切分为多少个split , 每个split位一个线程,  split传递的数据为 key-value的形式, 输出形式也为键值对

相同key的数据, 输出为一组数据, 然后将数据进行下一步, 洗牌(sharp)

3, shuffler

包括 sort 和 merger, 把mapper输出的的数据进行切分, 排序, 组合等操作, 吧key符合某种范围的输出到特定的reducer那里

过程为:

4, reduce

reduce的数量, 

一个mapreduce 默认 只有一个reduce , 可通过配置分区数来更改reduce的数量

时间: 2024-10-27 08:01:27

16-hadoop-mapreduce简介的相关文章

hadoop入门笔记MapReduce简介(三)

. MapReduce基本编程模型和框架 1.1 MapReduce抽象模型 大数据计算的核心思想是:分而治之.如下图1所示.把大量的数据划分开来,分配给各个子任务来完成.再将结果合并到一起输出. 注:如果数据的耦合性很高,不能分离,那么这种并行计算就不适合了. 图1:MapReduce抽象模型 1.2 Hadoop的MapReduce的并行编程模型 如下图2所示,Hadoop的MapReduce先将数据划分为多个key/value键值对.然后输入Map框架来得到新的key/value对,这时候

使用Python实现Hadoop MapReduce程序

转自:使用Python实现Hadoop MapReduce程序 英文原文:Writing an Hadoop MapReduce Program in Python 根据上面两篇文章,下面是我在自己的ubuntu上的运行过程.文字基本采用博文使用Python实现Hadoop MapReduce程序,  打字很浪费时间滴. 在这个实例中,我将会向大家介绍如何使用Python 为 Hadoop编写一个简单的MapReduce程序. 尽管Hadoop 框架是使用Java编写的但是我们仍然需要使用像C+

[Hadoop] - Hadoop Mapreduce Error: GC overhead limit exceeded

在运行mapreduce的时候,出现Error: GC overhead limit exceeded,查看log日志,发现异常信息为 2015-12-11 11:48:44,716 FATAL [main] org.apache.hadoop.mapred.YarnChild: Error running child : java.lang.OutOfMemoryError: GC overhead limit exceeded at java.io.DataInputStream.readU

Hadoop MapReduce执行过程详解(带hadoop例子)

https://my.oschina.net/itblog/blog/275294 摘要: 本文通过一个例子,详细介绍Hadoop 的 MapReduce过程. 分析MapReduce执行过程 MapReduce运行的时候,会通过Mapper运行的任务读取HDFS中的数据文件,然后调用自己的方法,处理数据,最后输出.Reducer任务会接收Mapper任务输出的数据,作为自己的输入数据,调用自己的方法,最后输出到HDFS的文件中.整个流程如图: Mapper任务的执行过程详解 每个Mapper任

hadoop MapReduce实例解析

1.MapReduce理论简介 1.1 MapReduce编程模型 MapReduce采用"分而治之"的思想,把对大规模数据集的操作,分发给一个主节点管理下的各个分节点共同完成,然后通过整合各个节点的中间结果,得到最终结果.简单地说,MapReduce就是"任务的分解与结果的汇总". 在Hadoop中,用于执行MapReduce任务的机器角色有两个:一个是JobTracker:另一个是TaskTracker,JobTracker是用于调度工作的,TaskTracke

Hadoop MapReduce编程 API入门系列之倒排索引(二十四)

不多说,直接上代码. 2016-12-12 21:54:04,509 INFO [org.apache.hadoop.metrics.jvm.JvmMetrics] - Initializing JVM Metrics with processName=JobTracker, sessionId=2016-12-12 21:54:05,166 WARN [org.apache.hadoop.mapreduce.JobSubmitter] - Hadoop command-line option

Hadoop MapReduce编程 API入门系列之Crime数据分析(二十五)(未完)

不多说,直接上代码. 一共12列,我们只需提取有用的列:第二列(犯罪类型).第四列(一周的哪一天).第五列(具体时间)和第七列(犯罪场所). 思路分析 基于项目的需求,我们通过以下几步完成: 1.首先根据数据集,分别统计出不同犯罪类别在周时段内发生犯罪次数和不同区域在周时段内发生犯罪的次数. 2.然后根据第一步的输出结果,再按日期统计出每天每种犯罪类别在每个区域发生的犯罪次数. 3.将前两步的输出结果,按需求插入数据库,便于对犯罪数据的分析. 程序开发 我们要编写5个文件: 编写基类,MapRe

Hadoop Mapreduce模板

Mapper 1 package com.scb.jason.mapper; 2 3 import org.apache.hadoop.io.IntWritable; 4 import org.apache.hadoop.io.LongWritable; 5 import org.apache.hadoop.io.Text; 6 import org.apache.hadoop.mapreduce.Mapper; 7 8 import java.io.IOException; 9 import

使用hadoop mapreduce分析mongodb数据:(2)

在上一篇使用hadoop mapreduce分析mongodb数据:(1)中,介绍了如何使用Hadoop MapReduce连接MongoDB数据库以及如何处理数据库,本文结合一个案例来进一步说明Hadoop MapReduce处理MongoDB的细节 原始数据 > db.stackin.find({}) { "_id" : ObjectId("575ce909aa02c3b21f1be0bb"), "summary" : "go

hadoop文件系统简介

Hadoop文件系统简介 Hadoop家族中,最重要的两部分内容就是MapReduce和HDFS,其中MapReduce是一种编程范型,这种范型比较适合用来在分布式环境下进行批处理计算.另一部分就是HDFS,即hadoop分布式文件系统.Hadoop环境下可以兼容多种文件系统,包括本地文件系统,体现在文件系统API层面上就是有一个文件系统接口,这个接口可以有多种实现,包括本地文件系统或者分布式文件系统等. 一:HDFS的设计目标 HDFS是用来将数据存储到多台计算机上(计算机集群)为主要设计目标