这篇文章给大家分享的是有关MapReduce有什么特点的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。
MapReduce特点
易于编程(熟悉之后确实很简单,大多数是map和reduce两个部分。hive和pig让mapreduce更加简单)
良好的扩展性(简单的添加机器就可以实现)
高容错性(job中任务部分失败,可以重新执行)
适合PB级以上海量数据的离线处理
MapReduce不擅长
实时计算
像MySQL一样,在毫秒级或者秒级内返回结果(可以参考Spark或HBase,HBase随机读写性能好,统计不太好)
流式计算
MapReduce的输入数据集是静态的,不能动态变化
MapReduce自身的设计特点决定了数据源必须是静态的(可以考虑Storm)
DAG计算
多个应用程序存在依赖关系,后一个应用程序的输入为前一个的输出(Tez)
MapReduce将作业的整个运行过程分为两个阶段
Map阶段和Reduce阶段
Map阶段由一定数量的Map Task组成
输入数据格式解析:InputFormat
输入数据处理:Mapper
数据分组:Partitioner
Reduce阶段由一定数量的Reduce Task组成
数据远程拷贝
数据按照key排序
数据处理:Reducer
数据输出格式:OutputFormat
默认TextInputFormat对文件切分,并处理每一个Split,提供RecordReader生成key/value
TextInputFormat:Key是行在文件中的偏移量,value是行内容若行被截断,则读取下一个block的前几个字符
设计到的概念
Block
HDFS中最小的数据存储单位默认是64MB
Spit
MapReduce中最小的计算单元默认与Block一一对应
Block与Split
Split与Block是对应关系是任意的,可由用户控制
Map阶段
InputFormat(默认TextInputFormat)
Mapper
Partitioner
Sort(可选)
Combiner(local reducer)(可选)
Reduce阶段
Sort
Reducer
OutputFormat(默认TextOutputFormat)
Combiner
Combiner可做看local reducer合并相同的key对应的value(wordcount例子)通常与Reducer逻辑一样好处
减少Map Task输出数据量(磁盘IO)
减少Reduce-Map网络传输数据量(网络IO)
结果可叠加
Sum(YES!),Average(NO!)
Partitioner
Partitioner决定了Map Task输出的每条数据交给哪个Reduce Task处理默认实现:hash(key) mod R R是Reduce Task数目
允许用户自定义,很多情况需自定义Partitioner
比如“hash(hostname(URL)) mod R”确保相同域名的网页交给同一个Reduce Task处理
感谢各位的阅读!关于“MapReduce有什么特点”这篇文章就分享到这里了,希望以上内容可以对大家有一定的帮助,让大家可以学到更多知识,如果觉得文章不错,可以把它分享出去让更多的人看到吧!
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。