![](https://img-blog.csdnimg.cn/20201014180756927.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
mapreduce
jsperlee
这个作者很懒,什么都没留下…
展开
-
map的join
map端的join想做mapjoin,保证map端可以一次拿到两个表的数据map()一行调用一次只能拿到一个表的一行数据同时还需要获取另一个表的全部数据问题:如何获取另一个表的数据* map端执行join* 1.先将其中一个表的数据加载到每个运行maptask的节点的缓存中(本地)* job.addCacheFile(new URI(""))* 2.在mapper的setup中...原创 2020-02-04 10:52:10 · 501 阅读 · 0 评论 -
reduce的join
reduce-joinjoin过程在reduce端进行join将两个表中相同的id的数据拼接在一起 拼接的过程在reduce端进行a:1 zs b:1 45想在reduce端拼接这个数据保证reduce端能够接受到的数据中a:1 zs b:1 45在一组相同的关联键的数据被分到一组map端key:两个表的关联键reduce端接受的数据相同关联建的两个表中的数...原创 2020-02-03 22:01:45 · 464 阅读 · 0 评论 -
mapreduce的shuffle
shuffle的环形缓冲区map----shuffle过程—reduce元数据:描述原始数据的数据 原始数据在缓冲区的位置1)分区信息2)原始数据key的起始位置3)原始数据value的起始位置4)value的长度信息长度是固定的(4 * 16)原始数据:序列化的数据 map输出的key 、value的键值对环形缓冲区 byte []缓冲区中:分界线 辨识元...原创 2020-02-03 09:14:29 · 425 阅读 · 0 评论 -
mapreduce的combiner
优化组件combiner1、 shuffle必经:分区 、排序、分组combiner:优化过程combiner的作用;对每一个maptask的输出做一个聚合达到的效果:减少了shuffle过程的数据,减少reduce端处理的数据,提升总体性能combiner 就是帮助reduce在map端 提前做了一个数据预处理,减少shuffle过程中的数据量2、 combiner的逻辑和re...原创 2020-02-01 23:53:22 · 222 阅读 · 0 评论 -
reducetask的并行度
reducetask的并行度//指定reducetask的个数job.setNumReduceTasks(4); 参数决定的 默认值是1当有多个reducetask的时候,每一个reducetask的数据如何分配的,由分区算法决定1、默认的分区算法mapkey.hash % numReduceTask的个数;只需要设置reduecetask的个数,分区数===reducetask的...原创 2020-02-01 09:14:07 · 526 阅读 · 0 评论 -
mapreduce的自定义分区
分区分区与reducetask的并行度有关reducetask:运行reduce类的任务,成为reducetaskreducetask的并行度是指一个job中reducetask运行的个数默认的reducetask的个数:默认值是1,reducetask只执行一个< property >< name>mapreduce.job.jvm.numtasks<...原创 2020-02-01 08:30:42 · 358 阅读 · 0 评论 -
reudece中的坑
reduce中的迭代器的坑1)迭代器中的每一个值和key是一一对应的2)这个迭代器职能迭代一次迭代器是指针操作,每次迭代完成,指针就跳到这一组的最后了3)reduce端 key(一个内存地址)和values(所有的value都用一个内存地址)使用了两个对象jvm的对象重用解决方案:重新创建对象接收即可Stu s = new Stu(key.getCourse(),key.getN...原创 2020-01-29 22:36:37 · 157 阅读 · 0 评论 -
mapreduce的自定义分组
默认分组默认情况下的分组和排序的规则是一样的,他们调用的都是compareTo()方法。排序:compareTo()返回值 调整数据顺序排序规则相同的会排在一起 分组:compareTo()调用的是返回值是否为0返回值为0的为0的全部为一组返回值不为0的为新的组底层实现: 调用一个类 WritableComparetor 是一个普通类/*分组按照map输出的key(序列化...原创 2020-01-29 21:51:46 · 711 阅读 · 0 评论 -
mapreduce的自定义排序
默认排序:map ------shuffle(排序–>分组)-----reduce 在shuffle过程中,先按照map输出的key进行排序。如果key是数值类型,按大小排序如果key是字符串类型,按照字典顺序升序排在按照map输出的key进行分组运用shuffle过程中的排序:想要运用shffle过程中的排序,则排序字段为map输出的key。自定义排序----二次排...原创 2020-01-28 13:34:23 · 1141 阅读 · 0 评论 -
mapreduce的自定义类
自定义类1)需要实现一个接口:Writable2)需要实现两个抽象方法:write() 序列化ReadFields() 反序列化注意:自定义类不能放在map输出的key的位置,其他位置都可以。案例:package com.lee.define;import java.io.IOException;import org.apache.hadoop.conf.Confi...原创 2020-01-28 10:31:17 · 447 阅读 · 0 评论 -
MapReduce基础知识
1、什么是 MapReduce首先让我们来重温一下 hadoop 的四大组件:HDFS:分布式存储系统MapReduce:分布式计算系统YARN:hadoop 的资源调度系统Common:以上三大组件的底层支撑组件,主要提供基础工具包和 RPC 框架等。MapReduce 是一个分布式运算程序的编程框架,是用户开发“基于 Hadoop 的数据分析应用”的核心框架。MapReduce...原创 2020-01-24 08:54:24 · 457 阅读 · 0 评论 -
maptask的并行度
maptask的并行度maptask:执行map阶段的任务称为maptask。并行度:maptask一起执行的个数 换句话说在一个job中就是maptask运行的个数。maptask运行的并行度:底层的数据如何存储的:分块多副本存储的300M文件blk1:0-127Mblk2:128-255Mblk3:256-300Mmaptask运行的个数 和数据的大小有关一个ma...原创 2020-01-28 08:07:09 · 480 阅读 · 0 评论