MapReduce简单介绍

限时加码!20+主流AI编程工具免费用 购周边加赠Coding Plan Lite,Claude Code、Cursor等即刻畅享,学习进阶更高效! 阅读详情

前面已经体会到了hadoop的魅力,为了更深入的了解hadoop,不仅仅是为了写出运行hadoop的程序,而是更好的了解她,用她来解决我们需要解决的问题。
MapReduce是hadoop的核心,所以了解MapReduce是运用hadoop的首要任务。下面是翻译过来的MapReduce介绍,作为自己学习的一个借鉴。


Hadoop MapReduce 可以轻松的写应用程序在集群中并行,可靠,容错地处理大数据。一个MapReduce job 通常把输入的数据分切成独立的chunks,

并由map task 完全并行的方式来处理。Map task 处理完成后,将处理完成的结果排序,作为reduce task 的输入数据。整个MapReduce架构会自动的

分配task,监控task和重启失效的task。


MapReduce包含Jobtracker 和 TaskTracker。Jobtracker只有一个,Tasktracker存在于每一个slave节点上。Jobtracker分配任务给Tasktracker,

Tasktracker根据命令执行,监控和重启失败的task。


尽管Hadoop是用java实现的,但是MapReduce程序可以不用java编写。可以使用Hadoop Streaming (SHELL)

和 Pipes(C++)来编写。


Input和Output
Mapreduce 以键值对<key,value>的方式来处理数据。

Key和value类必须要序列化,需实现writable接口。Key类需要实现 writablecomparable接口支持排序。


MapReduce的Input和Output如下:
(input) <k1, v1> -> map -> <k2, v2> -> combine -> <k2, v2> -> reduce -> <k3, v3> (output)

用workcount示例:
map-1:
< Hello, 1> 
< World, 1> 
< Bye, 1> 
< World, 1>

map-2:
< Hello, 1> 
< Hadoop, 1> 
< Goodbye, 1> 
< Hadoop, 1>

map-1的输出:
< Bye, 1> 
< Hello, 1> 
< World, 2>
map-2的输出:
< Goodbye, 1> 
< Hadoop, 2> 
< Hello, 1>

Reduce执行结果:
< Bye, 1> 
< Goodbye, 1> 
< Hadoop, 2> 
< Hello, 2> 
< World, 2>

MapReduce 用户接口
MapReduce程序通常需要实现 Mapper 和 Reducer 接口来提供map 和 reduce方法。这是整个工作的核心。

Mapper
Mapper maps 将输入的 key/value 处理成 中间形式的 key/value。中间数据不需要和输入数据一样的类型。Map将输入的数据处理输出零个

或多个 output键值对,output键值对被OutputCollector.collect(WritableComparable,Writable)类收集处理成中间数据 mapper output。

mapper output会被排序和分区交给reduce处理。分区数和reducer task的数量一致。用户可以通过实现自定义 Partitioner来控制哪些

 keys 交给reducer 处理。
用户可以选择指定combiner,通过JobConf.setCombinerClass(Class)指定combiner类。Combiner类可计算本地的中间数据,

来减少Mapper数据转换工作量给Reducer。

Maps的数量通常取决于需要处理数据的分片数多少。每个slave节点通常可同时运行10-100个maps。如果在高性能CPU机器上最多可以

运行300maps。如果处理10TB的内容,blocks 128MB的话,需要82000个maps甚至更多。


Reducer
Reducer 将mapper output中间数据处理成想要的结果。
Reduce的数量可以通过JobConf.setNumReduceTasks(int)设置。
Reduce有三个阶段:shuffle,sort,reduce。

Shuffle
Reduce的输入数据是mapper处理和排过序的。在该阶段中通过HTTP协议来完成mapper相关结果的分区partition。

Sort
该阶段根据key来排序。Shuffle和Sort阶段在map output结果合并后。

Reduce
在reduce阶段,处理被分组后的每个<key,list<values>>键值对。
Reduce的处理结果会通过OutputCollector.collect(WritableComparable, Writable)写入FileSystem。
应用程序可以通过Reporter来报告进度,设置应用程序状态和更新计数器,或监听是否存活。
Reducer的处理结果是没有排序的。

How Many Reduce
Reduce的节点数一般是节点数nodes的0.95 – 1.75倍。0.95倍下maps阶段完成后reduces可以立即执行。在1.75倍下,性能好的

阶段优先完成第一轮reduce,然后开始第二轮reduce来提供更好的负载均衡。

不断增加reduces的数量会使整个架构负载,但是会提高负载均衡和降低失效成本。


Reducer NONE
当我们不需要 reduce-task时,把reduce task的数量设置为0是合法的。

Partioner
Pationer控制map-outputs的关键字分区。通常关键字被hash分区。Pationer的数量通常和reduce task的数量一致,并控制着哪些

key被哪一个reduce处理。Hash 分区是默认的partitioner。

Reporter
Reporter为MapReduce程序提供运行进度,应用等级状态信息和更新计数器。

OutoutCollector
OutputCollector是由MapReduce架构提供来专门收集mapper和reducer的处理结果的工具。
Hadoop MapReduce自带的library有很多有用的mappers,reducers和partitioners。

Job Configuration
JobConf 体现了MapReduce 的配置信息。
JobConf是用户用来描述MapReduce任务,hadoop根据该JobConf来执行任务。MapReduce会公平的根据JobConf的描述来执行任务。

JobConf是用来指定Mapper,combiner(如果需要),Partitioner,Reducer,InputFormat,OutputFormat和OutputCommitter类实现。

另外,JobConf也用来指定高级设置。比如:比较器Comparator,文件保存到分布式缓存DistributedCache,中间结果和处理完成的结果

的压缩,通过用户提供的脚本debug,最大尝试任次数attempts per task,最大容忍失败任务百分比等等。


资料来源:http://hadoop.apache.org/docs/r1.2.1/mapred_tutorial.html

hadoop streaming参数配置 Streaming简介Streamining框架允许任何程序语言实现的程序在Hadoop MapReduce中使用,方便已有程序向Hadoop平台移植。因此可以说对于hadoop的扩展性意义重大。Streamining的原理是用Java实现一个包装用户程序的MapReduce程序,该程序负责调用MapReduce Java 接口获取key/value对输入,创建一个新的进程启动包装的用户程序,将数据 阅读详情

相关推荐

关于简单介绍Mapreduce,Hbase,Kafka,Zookeeper

1.1. zookeeper是干什么的?Zookeeper 是 分布式协调服务,分布式应用程序可以基于它实现同步服务,配置维护和命名服务等1.2. zookeeper节点类型Znode有两种类型:短暂(ephemeral)(断开连接自己删除)持久(persistent)(断开连接不删除)Znode有四种形式的目录节点(默认是persistent )PERSISTENTPERSISTENT_SEQU...

忍哥的博客 1175

MapReduce中Shuffle阶段细分和reduceTask为0

Mapreduce中,Shuffle过程是Mapreduce的核心,它分布在Mapreduce的map阶段和reduce阶段,共可分为6个详细的阶段: 1).Collect阶段:将MapTask的结果输出到默认大小为100M的MapOutputBuffer内部环形内存缓冲区,保存 的是key/value,Partition分区,map的每条结果通过context.write进行collect数据收集,即进入到了Collect阶段。在collect中,会先对其进行分区处理,默认使用HashPartitio

zyz的博客 579

Hadoop之简答题

1      简述hadoop的安装配置1.创建hadoop账户2.配置主机名3.配置hosts文件4.配置免密码登录5.安装和配置jdk、修改/etc/profile文件,配置环境变量6.上传和安装hadoop7.配置hadoop配置文件(hadoop-env.sh、core-site.xml、hdfs-site.xml、mapred-site.xml、yarn-site.xml)8.配置sla...

小真子的博客 1万+

MapReduce简单介绍

MapReduce是Google流行的一种并行编程技术。 它用于处理大量数据。 仅通过将工作并行分配给多台机器,就可以在合理的时间内完成这种处理。 每台机器都处理一小部分数据。 MapReduce是一种编程模型,使开发人员可以专注于编写处理数据的代码,而不必担心并行执行的细节。 MapReduce需要将要处理的数据建模为键值对。 开发人员编写了map函数和reduce函数的代码。 ...

最佳 Java 编程 414

MapReduce 简单介绍

MapReduce 是一个使用简单的软件框架,基于它写出来的应用程序能够运行在由上千个商用机器组成的大型集群上,并以一种可靠容错式并行处理TB级别的数据集。MapReduce是一个并行程序的计算模型与方法MapReduce是一个并行程序运行的软件框架MapReduce是一个基于集群的高性能并行计算平台。

slb190623的博客 1148

mapreduce介绍_MapReduce简单介绍

mapreduce介绍 MapReduce是Google流行的一种并行编程技术。 它用于处理大量数据。 仅通过将工作并行分配给多台机器,就可以在合理的时间内完成这种处理。 每台机器都处理一小部分数据。 MapReduce是一种编程模型,使开发人员可以专注于编写处理数据的代码,而不必担心并行执行的细节。 MapReduce需要将要处理的数据建模为键值对。 开发人员编写了map函数和redu...

最佳 Java 编程 534

HadoopMapReduce简单介绍

关于MapReduce MapReduce其实是一种可用于数据处理的编程模型。Hadoop中可以运行各个语言版本的MapReduce程序,但是一般来说还是常用Java语言。最重要的是,MapReduce程序本质上是并行运行的,因此可以将大规模的数据分析任务分发给任何一个拥有足够多机器的数据中心。MapReduce的优势就在于处理大规模数据集。 这里采用的是《Hadoop权威指南》书中的例子。 获取数据集: 使用Hadoop分析数据 MapReduce任务过程分为两个处理阶段:map阶段..

Stray_Lambs的博客 1085

Hadood之MapReduce介绍简单例子

1. 到底什么是Mapper与Reducer2. 为什么要用MapReduce而不是普通的代码3. 常见的MapReduce任务示例3.1 简单的单词计数任务3.1.1 自动排序功能~~~~~~~首先给出定义:Mapper与ReducerMapReduce编程模型的两个核心组件,用于处理大规模数据集的并行计算。Mapper(映射器):Mapper的主要任务是将输入数据分割成较小的数据块,并为每个数据块生成键值对。

m0_71417856的博客 781

mapreduce原理简单介绍

wu

m0_66471429的博客 194

java hadoop(二) hadoop mapreduce简单介绍以及简单实例

1、简单介绍一下mapreduce MapReduce的思想核心是“分而治之”,适用于大量复杂的任务处理场景(大规模数据处理场景) Map负责“分”,即把复杂的任务分解为若干个“简单的任务”来并行处理。可以进行拆分的前提是这些小任务可以并行计算,彼此间几乎没有依赖关系。 Reduce负责“合”,即对map阶段的结果进行全局汇总。 这两个阶段合起来正是MapReduce思想的体现。 2、mapreduce编写步骤 https://lansonli.blog.csdn.net/article/.

qq_40771567的博客 879

MapReduce简单介绍及执行过程

#1.## MapReduce简单介绍 MapReduce是面向大数据并行处理的计算模型、框架和平台,它隐含了以下三层含义: 1)MapReduce是一个基于集群的高性能并行计算平台(Cluster Infrastructure)。它允许用市场上普通的商用服务器构成一个包含数十、数百至数千个节点的分布和并行计算集群。 2)MapReduce是一个并行计算与运行软件框架(Software Fram...

cuiyiyinga的博客 1380

大数据学习03:MapReduce及Bigtable简单介绍

MapReduce及Bigtable简单介绍 MapReduce的编程模型:先拆分、再合并 HDFS = NameNode+SecondaryNameNode+DataNode 求和:大任务=小任务1+小任务2+......完事再合并 BigTable:大表------NoSQL数据库:HBase 1、关系型数据库:Oracle、MySql等等----->行式数据库----->i...

weixin_44804248的博客 730

MapReduce 过程简单介绍

1、MapReduce中数据流动(1)最简单的过程: map - reduce (2)定制了partitioner以将map的结果送往指定reducer的过程: map - partition - reduce (3)增加了在本地先进性一次reduce(优化)过程: map - combin(本地reduce) - partition -reduce2、Mapreduce中Part

lovefef4的专栏 3480

MapReduce简单介绍及入门程序

1、MapReduce 入门 1.1、什么是 MapReduce hadoop 的四大组件: HDFS:分布式存储系统 MapReduce:分布式计算系统 YARN:hadoop 的资源调度系统 Common:以上三大组件的底层支撑组件,主要提供基础工具包和 RPC 框架等 MapReduce 是一个分布式运算程序的编程框架,是用户开发“基于 Hadoop 的数据分析应用”的核心框架 1.2、为...

qianyulin 552
上一篇: Eclipse重写Wordcount类实现处理中文字符,利用hadoop Eclipse插件远程调试hadoop运行WordCount程序
下一篇: HDFS 简单介绍
caixen
博客等级 码龄12年 0粉丝 14原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值