本文目录
- mapreduce的工作流程
- mapreduce实现原理是怎样的
- 是否所有的mapreduce程序都需要经过map和reduce这两个过程,如果不是,请举例说明
- mapreduce 中的map和reduce分别什么意思
- 什么是MapReduce
- hadoop和mapreduce是一种什么关系
- 开发mapreduce各有哪些优缺点
- MapReduce是什么有什么作用
- mapreduce有哪些局限性
mapreduce的工作流程
1.客户端将每个block块切片(逻辑切分),每个切片都对应一个map任务,默认一个block块对应一个切片和一个map任务,split包含的信息:分片的元数据信息,包含起始位置,长度,和所在节点列表等
2.map按行读取切片数据,组成键值对,key为当前行在源文件中的字节偏移量,value为读到的字符串
3.map函数对键值对进行计算,输出《key,value,partition(分区号)》格式数据,partition指定该键值对由哪个reducer进行处理。通过分区器,key的hashcode对reducer个数取模。
4.map将kvp写入环形缓冲区内,环形缓冲区默认为100MB,阈值为80%,当环形缓冲区达到80%时,就向磁盘溢写小文件,该小文件先按照分区号排序,区号相同的再按照key进行排序,归并排序。溢写的小文件如果达到三个,则进行归并,归并为大文件,大文件也按照分区和key进行排序,目的是降低中间结果数据量(网络传输),提升运行效率
5.如果map任务处理完毕,则reducer发送http get请求到map主机上下载数据,该过程被称为洗牌shuffle
6.可以设置combinclass(需要算法满足结合律),先在map端对数据进行一个压缩,再进行传输,map任务结束,reduce任务开始
7.reduce会对洗牌获取的数据进行归并,如果有时间,会将归并好的数据落入磁盘(其他数据还在洗牌状态)
8.每个分区对应一个reduce,每个reduce按照key进行分组,每个分组调用一次reduce方法,该方法迭代计算,将结果写到hdfs输出
mapreduce实现原理是怎样的
map 根据输入的映射函数,将一个集合映射为另一个集合,比如: 输入集合为 {1,2,3,4,5},输入的函数为 f(x) = x^2,那么输出的集合就是 {1,4,9,16,25}。 reduce 就是根据输入的归约函数,将集合(一般指map输出的集合)归约,比如上面的输出集合...
是否所有的mapreduce程序都需要经过map和reduce这两个过程,如果不是,请举例说明
不是。对于关系的选择运算,只需要Map过程就能实现,对于关系R 中的每个元组t,检测是否是满足条件的所需元组,如果满足条件,则输出键值对《,》,也就是说,键和值都是t。这时的Reduce函数就只是一个恒等式,对输入不做任何变换就直接输出。
mapreduce 中的map和reduce分别什么意思
map
n. 地图;天体图;示意图,分布图;染色体图;(非正式)面孔
v. 绘制地图;了解信息;计划;映现;映射;与……有关;确定基因在染色体中的位置
n. (Map) (美)马普(人名)
短语
World Map 世界地图 ; 全世界电子地图 ; 地界地图 ; 世界舆图
geologic map 地质图 ; 地质学 ; 地质年代
heat map 热图 ; 网站点击热图 ; 热度图
Genetic map [遗] 遗传图谱 ; 遗传图 ; [遗] 遗传学图 ; 基因图谱
Multilinear map 多重线性映射
reduce
vt. 减少;降低;使处于;把…分解
vi. 减少;缩小;归纳为
短语
reduce waste 减少浪费 ; 减少浪费来源考试大 ; 减少废弃物
reduce expenditure 开源与节流并重 ; 开源与节流偏重 ; 减少开支 ; 节流节支
reduce luminance 降低亮度
reduce by 减少了 ; 减少
Reduce costs 更可减少成本支出 ; 降低成本 ; 减少成本 ; 削减成本
扩展资料:
map同近义词
vt. 映射;计划;绘制地图;确定基因在染色体中的位置
schedule , propose , design , project
n. [测]地图;示意图;染色体图
conventional diagram , schematic plan
例句:
Beijing is indicated on the map by a red star.
在这幅地图上北京是用一颗红星标明的。
什么是MapReduce
概念“Map(映射)“和“Reduce(化简)“,和他们的主要思想,都是从函数式编程语言里借来的,还有从矢量编程语言里借来的特性。他极大地方便了编程人员在不会分布式并行编程的情况下,将自己的程序运行在分布式系统上。当前的软件实现是指定一个Map(映射)函数,用来把一组键值对映射成一组新的键值对,指定并发的Reduce(化简)函数,用来保证所有映射的键值对中的每一个共享相同的键组。 映射和化简 简单说来,一个映射函数就是对一些独立元素组成的概念上的列表(例如,一个测试成绩的列表)的每一个元素进行指定的操作(比如前面的例子里,有人发现所有学生的成绩都被高估了一分,他可以定义一个“减一”的映射函数,用来修正这个错误。)。事实上,每个元素都是被独立操作的,而原始列表没有被更改,因为这里创建了一个新的列表来保存新的答案。这就是说,Map操作是可以高度并行的,这对高性能要求的应用以及并行计算领域的需求非常有用。 而化简操作指的是对一个列表的元素进行适当的合并(继续看前面的例子,如果有人想知道班级的平均分该怎么做?他可以定义一个化简函数,通过让列表中的元素跟自己的相邻的元素相加的方式把列表减半,如此递归运算直到列表只剩下一个元素,然后用这个元素除以人数,就得到了平均分。)。虽然他不如映射函数那么并行,但是因为化简总是有一个简单的答案,大规模的运算相对独立,所以化简函数在高度并行环境下也很有用。编辑本段分布和可靠性 MapReduce通过把对数据集的大规模操作分发给网络上的每个节点实现可靠性;每个节点会周期性的把完成的工作和状态的更新报告回来。如果一个节点保持沉默超过一个预设的时间间隔,主节点(类同Google File System中的主服务器)记录下这个节点状态为死亡,并把分配给这个节点的数据发到别的节点。每个操作使用命名文件的原子操作以确保不会发生并行线程间的冲突;当文件被改名的时候,系统可能会把他们复制到任务名以外的另一个名字上去。(避免副作用)。 化简操作工作方式很类似,但是由于化简操作在并行能力较差,主节点会尽量把化简操作调度在一个节点上,或者离需要操作的数据尽可能近的节点上了;这个特性可以满足Google的需求,因为他们有足够的带宽,他们的内部网络没有那么多的机器。用途 在Google,MapReduce用在非常广泛的应用程序中,包括“分布grep,分布排序,web连接图反转,每台机器的词矢量,web访问日志分析,反向索引构建,文档聚类,机器学习,基于统计的机器翻译...”值得注意的是,MapReduce实现以后,它被用来重新生成Google的整个索引,并取代老的ad hoc程序去更新索引。 MapReduce会生成大量的临时文件,为了提高效率,它利用Google文件系统来管理和访问这些文件。
hadoop和mapreduce是一种什么关系
hadoop是依据mapreduce的原理,用Java语言实现的分布式处理机制。
Hadoop是一个能够对大量数据进行分布式处理的软件框架,实现了Google的MapReduce编程模型和框架,能够把应用程序分割成许多的小的工作单元,并把这些单元放到任何集群节点上执行。
MapReduce是Hadoop中的一个数据运算核心模块,MapReduce通过JobClient生成任务运行文件,并在JobTracker进行调度指派TaskTracker完成任务。
扩展资料
1、MapReduce分布式计算框架原型:
MapReduce分布式计算模型是由Google提出,主要用于搜索领域,解决海量数据的计算问题Apache对其做了开源实现,整合在hadoop中实现通用分布式数据计算。
MR由两个阶段组成:Map和Reduce,用户只需要实现map()和reduce()两个函数,即可实现分布式计算,非常简单。大大简化了分布式并发处理程序的开发。
Map阶段就是进行分段处理。
Reduce阶段就是进行汇总处理。汇总之后还可以进行数据的一系列美化操作,然后再输出。
2、MapReduce组件介绍:
JobClient:用于把用户的作业任务生成Job的运行包,并存放到HDFS中。
JobinProgress:把Job运行包分解成MapTask和ReduceTask并存放于TaskTracker中。
JobTracker(Master):进行调度管理TaskTracker执行任务。
TaskTracker(Slave):执行分配下来的Map计算或Reduce计算任务。
开发mapreduce各有哪些优缺点
1. 不适合事务/单一请求处理
MapReduce绝对是一个离线批处理系统,对于批处理数据应用得很好:MapReduce(不论是Google的还是Hadoop的)是用于处理不适合传统数据库的海量数据的理想技术。但它又不适合事务/单一请求处理。(HBase使用了来自Hadoop核心的HDFS,在其常用操作中并没有使用MapReduce。)
2. 不能随即读取
3. 以蛮力代替索引
在索引是更好的存取机制时,MapReduce将劣势尽显。
4. low-level语言和操作
“直接开始你想要的 -- 而不是展示一个算法,解释如何工作的。” (关系型数据库的观点) -- High level(DBMS)
“展示数据存取的算法。” (Codasyl 的观点) -- Low level(MapReduce)
5. 性能问题
想想N个map实例产生M个输出文件-每个最后由不同的reduce 实例处理, 这些文件写到运行map实例机器的本地硬盘. 如果N是1,000, M是500, map阶段产生500,000个本地文件. 当reduce阶段开始, 500个reduce实例每个需要读入1,000文件,并用类似FTP协议把它要的输入文件从map实例运行的节点上pull取过来. 假如同时有数量级为100的reduce实例运行,
MapReduce是什么有什么作用
MapReduce是一种编程模型,用于大规模数据集(大于1TB)的并行运算。概念“Map(映射)“和“Reduce(归约)“,和它们的主要思想,都是从函数式编程语言里借来的,还有从矢量编程语言里借来的特性。它极大地方便了编程人员在不会分布式并行编程的情况下,将自己的程序运行在分布式系统上。 当前的软件实现是指定一个Map(映射)函数,用来把一组键值对映射成一组新的键值对,指定并发的Reduce(归约)函数,用来保证所有映射的键值对中的每一个共享相同的键组。
瑭锦TANJURD总结在Google,MapReduce用在非常广泛的应用程序中,包括“分布grep,分布排序,web连接图反转,每台机器的词矢量,web访问日志分析,反向索引构建,文档聚类,机器学习,基于统计的机器翻译...”值得注意的是,MapReduce实现以后,它被用来重新生成Google的整个索引,并取代老的ad hoc程序去更新索引。
mapreduce有哪些局限性
从MapReduce 的特点可以看出MapReduce的优点非常明显,但是MapReduce也有其局限性,并不是处理海量数据的普适方法。它的局限性主要体现在以下几点。
MapReduce的执行速度慢。一个普通的MapReduce作业一般在分钟级别完成,复杂的作业或者数据量更大的情况下,也可能花费一小时或者更多,好在离线计算对于时间远没有OLTP那么敏感。所以MapReduce现在不是,以后也不会是关系型数据库的终结者。MapReduce的慢主要是由于磁盘I/O, MapReduce作业通常都是数据密集型作业,大量的中间结果需要写到磁盘上并通过网络进行传输,这耗去了大量的时间。
MapReduce过于底层。与SQL相比,MapReduce显得过于底层。对于普通的查询,一般人是不会希望写一个map函数和reduce函数的。对于习惯于关系型数据库的用户,或者数据分析师来说,编写map函数和reduce函数无疑是一件头疼的事情。好在Hive的出现,大大改善了这种状况。
不是所有算法都能用MapReduce实现。这意味着,不是所有算法都能实现并行。例如机器学习的模型训练,这些算法需要状态共享或者参数间有依赖,且需要集中维护和更新。