MapReduce:简单介绍
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:简单介绍相关推荐
- Hadoop自学笔记(三)MapReduce简单介绍
1. MapReduce Architecture MapReduce是一套可编程的框架,大部分MapReduce的工作都能够用Pig或者Hive完毕.可是还是要了解MapReduce本身是怎样工作的 ...
- hadoop简单介绍_Hadoop:简单介绍
hadoop简单介绍 什么是Hadoop: Hadoop是用Java编写的框架,用于在大型商品硬件群集上运行应用程序,并具有类似于Google File System和MapReduce的功能 . H ...
- Hadoop:简单介绍
什么是Hadoop: Hadoop是一种用Java编写的框架,用于在大型商品硬件集群上运行应用程序,并具有类似于Google File System和MapReduce的功能 . HDFS是高度容错的 ...
- 玩转人工智能(3)常用的大数据框架简单介绍
时光不老,我们不散. 讲大数据框架前,简单的介绍下大数据的文化.信息时代人类社会的进步得益于分享和开源.大数据时代属于信息时代的第三代发展阶段(2001年到2011年可以认为是CT行业的黄金期,200 ...
- 1、hadoop3.1.4简单介绍及部署、简单验证
Hadoop系列文章目录 1.hadoop3.1.4简单介绍及部署.简单验证 2.HDFS操作 - shell客户端 3.HDFS的使用(读写.上传.下载.遍历.查找文件.整个目录拷贝.只拷贝文件.列 ...
- 遗传算法的简单介绍以及模式定理的简单证明
遗传算法 遗传算法(Genetic Algorithm,GA),最早是由美国的John holland在20世纪70年代提出.算法通过模拟达尔文生物进化论的自然选择以及遗传学机理的生物进化过程来搜 ...
- 2021年大数据ELK(十八):Beats 简单介绍和FileBeat工作原理
全网最详细的大数据ELK文章系列,强烈建议收藏加关注! 新文章都已经列出历史文章目录,帮助大家回顾前面的知识重点. 目录 Beats 简单介绍和FileBeat工作原理 一.Beats 二.FileB ...
- 2021年大数据ELK(十五):Elasticsearch SQL简单介绍
全网最详细的大数据ELK文章系列,强烈建议收藏加关注! 新文章都已经列出历史文章目录,帮助大家回顾前面的知识重点. 目录 Elasticsearch SQL简单介绍 一.SQL与Elasticsear ...
- 2021年大数据ELK(二):Elasticsearch简单介绍
全网最详细的大数据ELK文章系列,强烈建议收藏加关注! 新文章都已经列出历史文章目录,帮助大家回顾前面的知识重点. 目录 系列历史文章 一.Elasticsearch简介 1.介绍 2.创始人 二.E ...
- iOS开发UI篇—多控制器和导航控制器简单介绍
iOS开发UI篇-多控制器和导航控制器简单介绍 一.多控制器 一个iOS的app很少只由一个控制器组成,除非这个app极其简单.当app中有多个控制器的时候,我们就需要对这些控制器进行管理 有多个vi ...
最新文章
- ms-sql是mysql吗_mssql和mysql有哪些区别?
- 从 0 开始手写一个 Mybatis 框架,三步搞定!
- linux支持表情的字体,让应用程序支持emoji字符
- react中用pace.js
- IOS15之优雅的使用UITableView
- 光纤跳线的交叉连接注意点?
- access字段类型varchar_Access SQL语句创建表对应的数据类型名称
- ideahtml里面没有提示_微信聊天时提示请注意核实对方身份谨防诈骗什么原因?怎么解决?...
- 千千静听音效插件使用方法(激烈经典)
- php smarty安装,smarty安装(PHP)
- shell脚本复制文件
- 高数__已知2个平面方程, 求这2个平面的夹角
- mysql 未找到 WinSxS_win7的winsxs文件清理方法
- 信号处理:希尔伯特-黄变换
- mac升级node版本(用n升级nodejs)
- 一键体验 Istio
- 美创科技与联通(浙江)产互签署战略合作协议
- mysql日期vlog
- (3.6A)不用库函数实现字符串拼接
- 3DMAX 9 角色建模3 uv展开
热门文章
- java继承中的 equals + hashCode+toString
- 公证服务信息_使用多个公证员提高网络吞吐量
- okta-spring_通过Okta的单点登录保护Spring Boot Web App的安全
- 安装openstack_午餐前如何安装OpenStack Cloud
- 易语言 字段重复_使对易失性字段的操作原子化
- 高效的企业测试-工作流和代码质量(4/6)
- input发送a.jax_JAX-RS 2.0:自定义内容处理
- 多云互操作性!=云服务聚合
- Spring Webflux – Kotlin DSL –实现的演练
- 使用自定义线程池处理并行数据库流