MapReduce
内容
• 问题- MapReduce要解决什么问题?
• 理论- MapReduce的理论基础
• 模型– MapReduce的编程模型
• 实现- MapReduce的实现和评测
• 未来- MapReduce的未来发展趋势
处理海量数据
如何统计Google收集的网页中各个单词出现的次
数?
Goolge收集的网页占用存储空间超过400TB,假
设一台计算机以30MB/sec的速度从磁盘读取数
据,那么所需时间将超过4个月!
Google Cluster
• 采用并行计算技术,可以将时间缩短到3个小时以下。
并行化
并行化时要考虑的问题
• 如何划分工作?
• 工作之间需要同步吗?
• 各线程的工作量均衡吗?
• 如何将工作指派给线程?
• 如何处理故障?
• 如何知道所有的工作都已经完成?
• 最后阶段如何汇总结果?
小结
• 简单的计算任务
– 单词计数、Grep、倒排索引、排序、……
• 海量的输入数据
– 整个互联网,网页数目至少是百亿级
• 集群计算环境
– 超过一万个结点
• 如何充分利用硬件,简化程序设计?
不修改数据
运算次序无关紧要
fun foo(lst: int list) =
sum(lst) + mul(lst) + length(lst)
函数可以做参数
fun DoDouble(f, x) = f (f x)
Map
fun map f [] = []
| map f (x::xs) = (f x) :: (map f xs)
map sqrt [1,4,9,16]
Fold
fun foldl f a [] = a
| foldl f a (x::xs) = foldl f (f(x, a)) xs
fun foldr f a [] = a
| foldr f a (x::xs) = f(x, (foldr f a xs))
foldl (-) 1 [4,8,5],foldr (-) 1 [4,8,5]
举例
fun foo(lst: int list) =
sum(lst) + mul(lst) + length(lst)
fun sum(lst) = foldl (fn (x,a)=>x+a) 0 lst
fun mul(lst) = foldl (fn (x,a)=>x*a) 1 lst
fun length(lst) = foldl (fn (x,a)=>1+a) 0 lst
Map的并行化
map f [] = []
map f (x:xs) = f x : map xs
在什么条件下可以并行化map?
– 计算是独立的,各个元素上的计算互不影响
– 计算次序不需要从左到右,结果输出顺序任意
Fold的并行化
在什么条件下可以并行化fold?
– 不可以并行化fold
foldl f z [] = z
foldl f z (x:xs) = foldl f (f z x) xs
MapReduce
mapreduce fm fr lst =
map (reducePerKey fr) (group (map fm lst))
reducePerKey fr (k,v_list) =
(k, (foldl (fr k) [] v_list))
MapReduce maps a fold over the result of a map!
MapReduce借鉴了函数式程序设计语言的设计思想
– MapReduce is inspired by the map and reduce
primitives
present in Lisp and many other functional languages.
• Lämmel对MapReduce的理论基础作了更深入地探讨
– R. Lämmel. Google’s MapReduce Programming Model –
Revisited. http://www.cs.vu.nl/~ralf/MapReduce/.
程序设计模型
• 用户定义两个函数
分享到:
相关推荐
mapreduce海量数据并行处理总结.pdf
为了更加有效和简洁的处理此类问题,Google 提出了 MapReduce 编程模型,它可以隐藏并行化、容错、数据分布、负载均衡等细节,把这些公共的细节抽象到一个库中,由一个运行时系统来负责。而将对数据的操作抽象为 map...
MapReduce是Google提出的分布式并行计算编程模型,用于大规模数据的并行处理。Ma-pReduce模型受函数式编程语言的启发,将大规模数据处理作业拆分成若干个可独立运行的Map任务,分配到不同的机器上去执行,生成某种格式的...
Google云计算原理-并行数据处理模型MapReduce中文PPT
1.为什么需要并行计算 2.并行计算技术的分类 3.并行计算的主要技术问题 4.MPI并行程序设计 5.为什么需要大规模数据并行处理 1.对付大数据处理-分而治
1.为什么需要并行计算 2.并行计算技术的分类 3.并行计算的主要技术问题 4.MPI并行程序设计 5.为什么需要大规模数据并行处理 1.对付大数据处理-分而治
基于MapReduce模型的并行计算平台设计
基于MapReduce编程模型的分布式并行计算系统的设计和实现,何皓星,李昕,大数据处理技术对互联网应用本身和企业都具有非常重大的意义。随着互联网业务数量的快速增长,系统中积累的数据也越来越多。如何
MapReduce是一种流行的分布式并行计算模型,因其使用简单、伸缩性好、自动负载均衡和自动容错等优点,得到了广泛的应用。对已有的基于MapReduce计算模型的并行关联规则挖掘算法进行了分类和综述,对其各自的优缺点和...
MapReduce并行模型
针对这一问题,文中提出了并行数据库的海量数据分析处理方法,该方法详细对比了MapReduce和并行数据库技术,然后确定选用并行数据库的方法来处理海量数据。最后在该方法的基础之上,提出了从数据读取到数据处理的...
MapReduce及其开源实现Hadoop给大规模图的高效处理带来了希望. 基于MapReduce框架的集群系统,提出了1种新的计算模型用于大规模图形的3-clique计算,来实现图挖掘. 计算的基本步骤是:首先获取每个节点的第1跳信息...
文档简要介绍了大数据、大数据处理模型及MapReduce的相关知识
搭建了一个完全分布式Hadoop集群,并通过Java写了mapreduce程序处理数据,需要下载的可以找我要具体数据。
采用理论分析和实验的方法,进行用电数据并行分析构架的研究,研究了Canopy和K-means两种典型的聚类算法,提出一种新的聚类思路,使用Canopy先对用电数据进行粗略处理,得到聚类个数和聚类中心,再用K-means精确聚类,既...
介绍云计算技术基本概念、发展现状、关键技术与云计算应用课程设计大作业自选具有一定难度和工作量的题目,鼓励结合导师的研究工作自选课程设计题目,完成课程设计课时安排
MapReduce是一种编程模型,用于大规模数据集(大于1TB)的并行运算。概念"Map(映射)"和"Reduce(化简)",和他们的主要思想,都是从函数式编程语言里借来的,还有从矢量编程语言里借来的特性。他极大地方便了编程...
基于MapReduce模型的生态遥感参数反演并行化方法与实现
MapReduce并行编程模型研究论文 详细介绍MapReduce
【MapReduce篇07】MapReduce之数据清洗ETL1