欢迎来到天天文库
浏览记录
ID:46195250
大小:469.00 KB
页数:18页
时间:2019-11-21
《基于Hadoop的MapReduce分析》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、基于Hadoop的MapReduce分析张龙目录1MapReduce编程模型2MapReduce能做什么,不能做什么3Hadoop-MapReduce技术简介4Hadoop-MapReduce程序性能调优5下一代MapReduce(YARN/MRv2)1MapReduce编程模型2MapReduce能做什么,不能做什么MapReduce借用函数式语言的映射(Map)和规约(Reduce)原语,通过自动切分输入数据集,在独立的数据切片上应用Map操作产生中间结果的键值对(key/valuepair)集合,然后通过分区操作(partition)确保具有同样键的数
2、据映射到同一分区中并借助shuffle在无共享的集群中传递中间结果,最后在不同的中间结果分区中引用Reduce操作产生最终的规约结果。这种编程方式并不优雅!2MapReduce能做什么,不能做什么MapReduce编程规范中有一个重要假设:Mapper和Reducer过程不存在任何依赖,可以无交互的在不同的数据切片上独立执行。易并行模型(EmbarrassinglyParallelComputation,EPC)对于矩阵运算,大图运算。这种编程模型,无能为力。2MapReduce能做什么,不能做什么解决办法:BulkSynchronousProgrammin
3、g,BSP大同步编程模型3Hadoop-MapReduce技术简介3Hadoop-MapReduce技术简介1分布式并行计算MapReduce框架是由JobTracker和TaskTracker两类服务调度的。JobTracker是主控服务,只有一个,负责调度和管理TaskTracker,把Map任务和Reduce任务分配给空闲的TaskTracker,使这些服务并行运行,并监控任务的运行情况。TaskTracker是从服务,可以有多个,负责执行任务。如果某个TaskTracker执行失败或者出现故障,JobTracker将这一任务分发给其他空闲的TaskT
4、racker中。2本地计算通常,MapReduce框架和分布式文件系统是运行在一组相同的节点上的,这样配置,允许框架在那些存储数据的节点上高效的调度任务,避免带宽的浪费。3Hadoop-MapReduce技术简介3Combinecombine过程将map任务输出的有相同key值的多个组合成一个。很多情况下,combine可以直接使用reduce函数,combine能减少中间结果的数量,从而减少数据传输的网络流量4Partitioncombine过程之后,把产生的中间结果按照key的范围划分成R份。通常采
5、用hash函数完成,hash(key)modR,这样保证一定范围内的key值,一定由某一个reduce任务完成,简化了Reduce过程。5读取中间结果Map阶段的中间结果,会以文件形式保存在本地磁盘。中间结果的位置会通知给JobTracker,JobTracker再通知Reduce任务到哪一个DataNode上去取中间结果。4Hadoop-MapReduce程序性能调优4.1从应用程序角度进行优化4.1.1避免不必要的reduce任务。对于4.1.2外部文件引入,可以将文件通过DistributedCache放入缓存中,以在多个task之间共享文件。例子:J
6、NI,索引文件,基本数据的共享4.1.3考虑combiner例子:最终处理的数据需要按key值排序存储。4.1.4根据处理数据的特征,选择合适的数据类型。Text对象使用起来很方便,但它在由数值转换到文本或是由UTF8字符串转换到文本时都是低效的,且会消耗大量的CPU时间。当处理那些非文本的数据时,可以使用二进制的Writable类型,如IntWritable,FloatWritable等。二进制writable好处:避免文件转换的消耗;使maptask中间结果占用更少的空间。4.1.5使用StringBuffer而不是String4Hadoop-MapRe
7、duce程序性能调优4.2从参数进行调优Hadoop目前有190多个配置参数,其中大约有25个对hadoop应用程序效率有显著的影响。MapReduce相关配置io.sort.mbio.sort.spill.percentmapred.child.java.optsmapred.compress.map.output/Mapred.output.compress5下一代MapReduce(YARN/MRv2)Hadoop0.23.0是一个通用的资源分配框架,它不仅支持MapReduce计算框架,同时也支持流式计算框架,迭代计算框架。它实现时采用基于了事件驱动
8、机制,异步编程模型,如下图所示:EventHandl
此文档下载收益归作者所有