map reduce
链接:https://www.zhihu.com/question/29936822/answer/48586327
来源:知乎
著作权归作者所有,转载请联系作者获得授权。
map reduce确切的说是两步操作:map操作和reduce操作。具体执行的时候其实是语言无关的,只要你能按照其标准输入输出,哪怕用brainfu*k写的代码,能独立运行都可以。当然hadoop在java上有框架接口,spark直接构建在scala上会更加方便开发,但是实际上完全可以用任意语言做map reduce。
举个几乎每个教程都会谈到的例子:单词出现次数统计。如果只有很少的文本,这个统计基本上就是划分单词,统计次数而已,单机上写个循环就能解决。但是如果文本量超TB甚至更多,单机的效率自然吃不消。但是我们可以把这超长文本划分为若干段,每一段就MB量级,分配给一个计算节点,那么每段对于一个分布式计算节点而言计算量就可以接受了。
mapper部分是一个结算节点用的处理程序,用标准输入输出流接收数据和输出处理结果。对于单词统计,它输入的内容自然是一段文章,输出的内容则是这段文章中的单词统计结果。显然节点之间所做的工作仅与送给此节点的数据有关,而与其它节点的数据或结果无关。例如对于文字 “I love hadoop”,这个mapper可以给出如下输出:
I 1
love 1
hadoop 1
reducer则是负责收集数据的。它通过标准流输入输出,输入格式等同于mapper的输出格式。hadoop会把所有mapper的结果简单拼接一下然后全扔给reducer(根据配置不同,可能拼接时会有排序)。
reducer所做的工作则是将这些内容合成出最终结果。
比如两段文本“I love hadoop”,以及“I love you”,分配给mapper处理,会得到两个输出
1
-------
I 1
love 1
hadoop 1
2
-------
I 1
love 1
you 1
然后reducer拿到的输出则是拼在一起的结果
I 1
love 1
hadoop 1
I 1
love 1
you 1
reducer进行处理合并,最终结果大概是
I 2
love 2
hadoop 1
you 1
而hadoop或者spark框架的存在,使得你可以写好mapper和reducer,然后告诉框架你的数据在哪儿,怎么划分之类的配置,框架自动将需要的工作分配给实际上的计算节点,自动连接的mapper和reducer的输入输出,然后得到计算结果。其中你并不需要考虑多机通讯、状态监测之类的问题,只需要写好与本地单机运算没什么差别的简单程序就好。
因此对统计、学习、数学运算(迭代),求最优解之类的问题,都可以适用于map reduce。
链接:https://www.zhihu.com/question/29936822/answer/48553511
来源:知乎
著作权归作者所有,转载请联系作者获得授权。
在过去,处理大量数据或计算时,我们会依頼一部超级电脑,因为他有快速的计算器和大量的容量。但这不是一般人可以负担,而且现在的数据量是超级电脑也无法处理的,故人们便要想一个系统出来让人们可以很方便同时用多部电脑(无论是家用电脑或超级电脑与否)做计算和保存。另外,即使我们有一个高速的中央处理器,但在硬盘读写数据的速度却是硬伤,所以如果有多部电脑同时做读写,那可省下不少时间。
MapReduce就是来解决这问题的。现在很多公司都用Hadoop或Spark,这些都是用MapReduce模式做计算的。当我们有很多数据,要建模时,Hadoop可行使分布式计算,如Google计算PageRank、广告公司计算Bayes模型、数据搜索如在一千部电脑内的硬盘中寻找有史以来最高的气温⋯⋯
Hadoop是用Java写的。我相信很多有经验数据科学家都很喜欢用R或Python建模,然后用Java或C++实现,这是无可厚非的,因为用Python一类的语言建模很有效率,当我们不知道要用什么模型和算法时,我们一定要快速验证。但问题是,当我们知道什么算法可行,却又要用另一工具实现时,那就有点费时失事。而且Python用Hadoop是很麻烦的,人们很少用Python做分布式计算,所以我们用Scala(一个JVM语言),而这跟Python一样可以interactive programming,又是函数式编程(处理数据方便),却又行在JVM上。而对应的MapReduce工具就是Spark。用Spark,数据科学家可即时测试不同的模型,而测试可在MapReduce的架构下进行,而且可以interactive programming,就像Python或MATLAB一样。
map reduce的更多相关文章
- MapReduce剖析笔记之三:Job的Map/Reduce Task初始化
上一节分析了Job由JobClient提交到JobTracker的流程,利用RPC机制,JobTracker接收到Job ID和Job所在HDFS的目录,够早了JobInProgress对象,丢入队列 ...
- python--函数式编程 (高阶函数(map , reduce ,filter,sorted),匿名函数(lambda))
1.1函数式编程 面向过程编程:我们通过把大段代码拆成函数,通过一层一层的函数,可以把复杂的任务分解成简单的任务,这种一步一步的分解可以称之为面向过程的程序设计.函数就是面向过程的程序设计的基本单元. ...
- 记一次MongoDB Map&Reduce入门操作
需求说明 用Map&Reduce计算几个班级中,每个班级10岁和20岁之间学生的数量: 需求分析 学生表的字段: db.students.insert({classid:1, age:14, ...
- filter,map,reduce,lambda(python3)
1.filter filter(function,sequence) 对sequence中的item依次执行function(item),将执行的结果为True(符合函数判断)的item组成一个lis ...
- python基础——map/reduce
python基础——map/reduce Python内建了map()和reduce()函数. 如果你读过Google的那篇大名鼎鼎的论文“MapReduce: Simplified Data Pro ...
- Map/Reduce 工作机制分析 --- 作业的执行流程
前言 从运行我们的 Map/Reduce 程序,到结果的提交,Hadoop 平台其实做了很多事情. 那么 Hadoop 平台到底做了什么事情,让 Map/Reduce 程序可以如此 "轻易& ...
- Map/Reduce个人实战--生成数据测试集
背景: 在大数据领域, 由于各方面的原因. 有时需要自己来生成测试数据集, 由于测试数据集较大, 因此采用Map/Reduce的方式去生成. 在这小编(mumuxinfei)结合自身的一些实战经历, ...
- 用通俗易懂的大白话讲解Map/Reduce原理
Hadoop简介 Hadoop就是一个实现了Google云计算系统的开源系统,包括并行计算模型Map/Reduce,分布式文件系统HDFS,以及分布式数据库Hbase,同时Hadoop的相关项目也很丰 ...
- map/reduce of python
[map/reduce of python] 参考: http://www.liaoxuefeng.com/wiki/001374738125095c955c1e6d8bb493182103fac92 ...
随机推荐
- Mysql-linux下密码修改,忘记密码修改,超级管理用户修改
未忘记密码 方法一:在mysql系统外,使用mysqladmin # mysqladmin -u root -p password "test123"Enter password: ...
- Web前端性能优化教程09:图像和Cookie优化
本文是Web前端性能优化系列文章中的第九篇,主要讲述内容:图像和Cookie优化.完整教程可查看: 一. 图像优化 图像基础知识 gif: 适用于动画效果,例如提示的滚动条图案 jpg: 是一种使用 ...
- UITableView的cell重用优化
三种情况,四种方法: 情况一:加载xib中描述的cell 情况二:加载纯代码自定义的cell 情况三:加载storyBoard中的tableView内的cell 针对于情况一: // 导入自定义cel ...
- 基于Maven引入Hadoop包报Missing artifact jdk.tools:jdk.tools:jar:1.6
一.问题来源 <dependency> <groupId>org.apache.hadoop</groupId> <artifactId>hadoop- ...
- BZOJ1922 [Sdoi2010]大陆争霸
本文版权归ljh2000和博客园共有,欢迎转载,但须保留此声明,并给出原文链接,谢谢合作. 本文作者:ljh2000作者博客:http://www.cnblogs.com/ljh2000-jump/转 ...
- BZOJ1018 [SHOI2008]堵塞的交通traffic
本文版权归ljh2000和博客园共有,欢迎转载,但须保留此声明,并给出原文链接,谢谢合作. 本文作者:ljh2000作者博客:http://www.cnblogs.com/ljh2000-jump/转 ...
- jdbc/ojdbc连oracle的三种方式(转)
文章转自:http://blog.itpub.net/22664653/viewspace-1383092/ 前言 本文是一篇学习笔记,学习如何通过java jdbc /ojdbc 连接oracle ...
- poj3675 求多边形与圆的面积交
题意:给出多边形的顶点坐标.圆的圆心坐标和半径,求面积交 sol:又是模板题啦= = 注意poj的C++好像认不出hypot函数,要稍微改写一下. hypot(double x,double y):即 ...
- ecshop /category.php SQL Injection Vul
catalog . 漏洞描述 . 漏洞触发条件 . 漏洞影响范围 . 漏洞代码分析 . 防御方法 . 攻防思考 1. 漏洞描述 Relevant Link: http://sebug.net/vuld ...
- 过滤器(Filter)的应用
过滤器的概念 Java中的Filter 并不是一个标准的Servlet ,它不能处理用户请求,也不能对客户端生成响应. 主要用于对HttpServletRequest 进行预处理,也可以对HttpSe ...