MapReduce
heartless_killer
这个作者很懒,什么都没留下…
展开
-
hadoop系列十六——MapReduce之Combiner详解(可解决数据倾斜问题)
为什么需要进行Map规约操作众所周知,Hadoop框架使用Mapper将数据处理成一个个的<key,value>键值对,在网络节点间对其进行整理(shuffle),然后使用Reducer处理数据并进行最终输出。在上述过程中,我们看到至少两个性能瓶颈:(1)如果我们有10亿个数据,Mapper会生成10亿个键值对在网络间进行传输,但如果我们只是对数据求最大值,那么很明显的Mappe...原创 2019-10-23 15:31:50 · 405 阅读 · 0 评论 -
hadoop系列十五——MapReduce实现join案例
实现该hive语法的MapReduce的代码 select a.*,b.* from a join b on a.uid=b.uid;需求有订单数据 : (数据小)order001,u001order002,u001order003,u005order004,u002order005,u003order006,u004有用户数据: (数据大)u...原创 2019-10-23 14:19:10 · 202 阅读 · 0 评论 -
hadoop系列十四——MapReduce输入输出格式(sequencefile文件)
sequencefile中的数据是以key,value对存储的。通过改变mapreduce模式输入输出的设置,可以读取sequencefile中的数据。 使用sequencefile文件,更加方便使用,不需要像文本文件,切分单词。在两个MapReduce程序之间常用这种模式。第一个MapReduce代码:public class IndexStepOne { public stati...原创 2019-10-22 21:05:08 · 397 阅读 · 0 评论 -
hadoop系列十三 ——MapReduce整体工作流程和YARN的架构及原理
概述一个完整的 MapReduce 程序在分布式运行时有两类实例进程:1、MRAppMaster:负责整个程序的过程调度及状态协调2、Yarnchild(MapTask):负责 map 阶段的整个数据处理流程3、Yarnchild(ReduceTask):负责 reduce 阶段的整个数据处理流程 以上两个阶段 MapTask 和 ReduceTask 的进程都是 YarnChild,并不...原创 2019-10-22 19:44:33 · 370 阅读 · 0 评论 -
hadoop系列十二 ——MapReduce分组排序案例 和GroupingComparator的使用
GroupingComparator在hadoop的mapreduce编程模型中,当在map端处理完成输出key-value对时,reduce端只会将key相同的到同一个reduce函数中去执行。但是,当使用java对象为key时,如何判断Java对象是同一个key呢,这时候就需要GroupingComparator,利用该类中的compare方法,根据自己的需求,设定key相同的条件,从而放入...原创 2019-10-20 21:03:25 · 327 阅读 · 0 评论 -
hadoop系列十一 ——MapReduce案例(文档索引创建和文件切片)
mr编程案例6——倒排索引创建需求:有大量的文本文档,如下所示:a.txthello tomhello jimhello kittyhello roseb.txthello jerryhello jimhello kittyhello jackc.txthello jerryhello javahello c++hello c++需要得到以下结果:hello ...原创 2019-10-19 15:32:49 · 516 阅读 · 0 评论 -
hadoop系列十 ——MapReducePartitioner和自定义分区Partitioner
PartitionerPartitioner 处于 Mapper阶段,当Mapper处理好数据后,这些数据需要经过Partitioner进行分区,来选择不同的Reducer处理,从而将Mapper的输出结果均匀的分布在Reducer上面执行。对于map输出的每一个键值对,系统都会给定一个partition,partition值默认通过计算key的hash值后对Reduce task的数量取模获...原创 2019-10-17 21:30:18 · 282 阅读 · 0 评论 -
hadoop系列七———mapreduce编程中自定义类型的序列化接口实现方式
自定义数据类型如何实现hadoop的序列化接口自定义bean对象实现序列化接口(1)必须实现Writable接口(2)反序列化时,需要反射调用空参构造函数,所以必须有空参构造(3)重写序列化方法在这里插入代码片(4)重写反序列化方法(5)注意反序列化的顺序和序列化的顺序完全一致(6)要想把结果显示在文件中,需要重写 toString(),可用 \t 分开,方便后续用(7)如果需要将...原创 2019-10-17 19:45:12 · 1141 阅读 · 0 评论 -
hadoop系列八 ——MapReduce案例排序1(还有treeMap和比较器的知识补充,向map和reduce传外部参数)
TreeMap用法总结TreeMap中的元素默认按照keys的自然排序排列,(对Integer来说,其自然排序就是数字的升序;对String来说,其自然排序就是按照字母表排序)public class TreeMapTest { public static void main(String[] args) { TreeMap<FlowBean, String> t...原创 2019-10-17 19:44:32 · 348 阅读 · 0 评论 -
hadoop系列九 ——MapReduce案例排序2(利用MapReduce自身的排序功能,原理暂时不介绍)
MapReduce案例排序2 ,利用MapReduce自身排序功能排序需求:统计request.dat中每个页面被访问的总次数,同时,要求输出结果文件中的数据按照次数大小倒序排序关键技术点:mapreduce程序内置了一个排序机制,所以如果需要排序,可设置一个bean对象,然后利用Comparable<>接口,对其进行排序。map worker 和reduce worker...原创 2019-10-17 19:44:34 · 313 阅读 · 0 评论 -
hadoop系列六 ———MapReduce代码初识
Hadoop数据类型在mapreduce中,map产生的数据需要传输给reduce,需要进行序列化和反序列化,而jdk中的原生序列化机制产生的数据量比较冗余,就会导致数据在mapreduce运行过程中传输效率低下所以,hadoop专门设计了自己的序列化机制,那么,mapreduce中传输的数据类型就必须实现hadoop自己的序列化接口Hadoop本身提供了一套可优化网络序列化传输的基本类型...原创 2019-10-17 19:44:13 · 198 阅读 · 0 评论