mapreduce介绍

MapReduce是Google流行的一种并行编程技术。 它用于处理大量数据。 仅通过将工作并行分配给多台机器,就可以在合理的时间内完成这种处理。 每台机器都处理一小部分数据。

MapReduce是一种编程模型,使开发人员可以专注于编写处理数据的代码,而不必担心并行执行的细节。

MapReduce需要将要处理的数据建模为键值对。 开发人员编写了map函数和reduce函数的代码。

MapReduce运行时为每个键值对调用map函数。 映射函数将键值对作为输入,并产生另一个键值对的输出。

MapReduce运行时按键对映射函数的输出进行排序和分组。 然后,它将调用reduce函数,并为其传递键和与该键关联的值的列表。 为每个键调用reduce函数。 reduce函数的输出是键值对。 该值通常是一个集合或通过处理为输入键传入的值列表而计算出的值。 对于由map函数产生的每个中间键,调用reduce函数。 reduce函数的输出是必需的结果。

例如,假设您有大量的日志文件,其中包含某些事件(例如访问帐户)的审核日志。 您需要找出过去10年中每个帐户被访问了多少次。
假设日志文件中的每一行都是审核记录。 我们正在逐行处理日志文件,map和reduce函数如下所示:

map(key , value) {// key = byte offset in log file // value = a line in the log fileif ( value is an account access audit log) {account number = parse account from valueoutput key = account number, value = 1}
}reduce(key, list of values) {// key = account number// list of values {1,1,1,1.....}for each valuecount = count + valueoutput key , count
}

每个日志文件中的每一行都会调用map函数。 不相关的行将被忽略。 从相关行中解析出帐号,并输出一个值1。MapReduce运行时按帐号对输出进行排序和分组。 为每个帐户调用reduce函数。 reduce函数汇总每个帐户的值,这是必需的结果。

MapReduce作业通常在计算机集群上执行。 每台机器执行一个任务,该任务可以是映射任务,也可以是归约任务。 每个任务都在处理数据的子集。 在上面的示例中,假设我们从一组大型输入文件开始。 MapReduce运行时将输入数据分为称为分割或碎片的分区。 每个拆分或碎片均由计算机上的映射任务处理。 每个映射任务的输出均按键排序和分区。 来自所有映射的输出被合并以创建输入到reduce任务的分区。

可以有多台计算机,每台计算机都运行简化任务。 每个reduce任务都有一个要处理的分区。 该分区可以具有多个键。 但是每个键的所有数据都在1个分区中。 换句话说,每个键只能处理1个缩减任务。

机器的数量,映射任务的数量,reduce任务的数量以及其他几项都是可配置的。

对于需要对大数据集进行某些处理的问题,MapReduce非常有用。 该算法可以分解为map和reduce函数。 MapReduce运行时负责将处理分配到多台计算机并汇总结果。

Apache Hadoop是mapreduce的开源Java实现。 请继续关注有关使用hadoop的有关mapreduce的未来博客/教程。

参考: 什么是MapReduce? 来自我们的JCG合作伙伴在“ Khangaonkar报告”中的报道 。

相关文章 :
  • Cajo,用Java完成分布式计算的最简单方法
  • Hibernate映射集合性能问题
  • Java Code Geeks Andygene Web原型
  • Servlet 3.0异步处理可将服务器吞吐量提高十倍

翻译自: https://www.javacodegeeks.com/2011/05/mapreduce-soft-introduction.html

mapreduce介绍

mapreduce介绍_MapReduce:简单介绍相关推荐

  1. Zookeeper详细介绍+dubbo简单介绍+简单大白话讲解

    Zookeeper zookeeper前言 zookeeper简介绍 dubbo中为何使用zookeeper(如果理解dubbo实现原理可以忽略) dubho好处简单介绍下 dubbo如何使用zook ...

  2. java简单介绍_java 简单介绍

    byte 1个字节(主要是节省内存控件,在进行i/o传输的时候可以使用) short 2个字节(不常用) int 4个字节(常用于控制循环语句) long 8个字节(计算非常大的数是,int不足以满足 ...

  3. IOS sqlite3 使用简单介绍 使用简单介绍

    iPhone中支持通过sqlite3来访问iPhone本地的数据库. 具体使用方法如下 1:添加开发包libsqlite3.0.dylib 首先是设置项目文件,在项目中添加iPhone版的sqlite ...

  4. 玩转人工智能(3)常用的大数据框架简单介绍

    时光不老,我们不散. 讲大数据框架前,简单的介绍下大数据的文化.信息时代人类社会的进步得益于分享和开源.大数据时代属于信息时代的第三代发展阶段(2001年到2011年可以认为是CT行业的黄金期,200 ...

  5. Oracle10g SQL tune adviser简单介绍【转自ITPUB zhouwf0726】

    Oracle10g SQL tune adviser Oracle10g SQL tune adviser简单介绍 本文简单介绍下SQL Tuning Adviser的配置使用方法和一些相关知识点,如 ...

  6. linux的swap与memory,【Linux】Linux中Swap与Memory内存简单介绍

    背景介绍 对于Linux来说,其在服务器市场的使用已经占据了绝对的霸主地位,不可动摇.Linux的各种设计思想和使用也被传承(当然不乏各种黑Linux,而且黑的漂亮).Linux的很多独特的设计,对性 ...

  7. EventBus简单介绍

    EventBus简单介绍 EventBus简单介绍 EventBus作用 EventBus优缺点 EventBus使用步骤 EventBus的三要素(三个角色) Event Subscriber Pu ...

  8. 选股方法简单介绍及选股方法大力推荐

    相信大家都知道,对于股民来说,选股毫无疑问是非常重要的!如果选股选错了的话,那么悲剧就注定难免了!下面为你介绍一下选股方法大力推荐以及选股方法简单介绍,如果想要了解更多选股方法方面的知识,敬请关注QR ...

  9. HTTP请求方式中8种请求方法(简单介绍)

    HTTP请求方式中8种请求方法(简单介绍) 简单介绍 HTTP是超文本传输协议,其定义了客户端与服务器端之间文本传输的规范.HTTP默认使用80端口,这个端口指的是服务端的端口,而客户端使用的端口是动 ...

  10. Hadoop自学笔记(二)HDFS简单介绍

    1. HDFS Architecture 一种Master-Slave结构.包括Name Node, Secondary Name Node,Data Node Job Tracker, Task T ...

最新文章

  1. SQL 中的 AND OR
  2. Redis分布式锁的正确实现方式(Java版)
  3. 论文被拒稿后怎么办?这些事情你要知道
  4. 偏差、方差、贝叶斯误差
  5. php获取页面的可视内容高度,网页制作技巧:获取页面可视区域的高度_css
  6. 售前人员应该具备的素质---理解客户的需求
  7. 这也许是Android一句话权限适配的更优解决方案
  8. centos7 开机启动脚本
  9. [转载] python文件操作--写入文件
  10. es查询两列相减大于某个值的数据_南京师范大学汇编语言期末试卷
  11. python 直方图每个bin中的值_python – 如何获取直方图bin中的数据
  12. Atitit 解决Unhandled event loop exception错误的办法
  13. c语言流程图各个框的作用,C语言流程图的三种基本结构
  14. 推荐 4 个开源小程序
  15. 在Delphi程序中访问报表对象
  16. 啦啦啦啦啦啦啦啦啦啦啦啦
  17. Python网络编程:E-mail服务(八) 实现抄送和密送功能
  18. python的request发请求报500原因
  19. Arduino :PWM详解和电路搭建以及示例代码
  20. 17. CTF综合靶机渗透(十)

热门文章

  1. say小组KTV点歌系统简介
  2. pagerAdapter 与FragmentPagerAdapter的区别
  3. bean交个spring和new比较区别
  4. 满足其中一个条件则可_农村分户好处多,但并非人人都可分户!满足这4个条件才可以申请...
  5. python数据分析架构_Python数据分析
  6. tomcatSupplement(1)tomcat启动脚本分析(以Windows平台为例)
  7. java流与文件——java生成解压缩文件(夹)
  8. 匿名内部类与Lambda表达式习题
  9. java fastutil_具有FastUtil的精简Java集合
  10. 成为java高手_我如何想成为Java