![](https://img-blog.csdnimg.cn/20190918140145169.png?x-oss-process=image/resize,m_fixed,h_224,w_224)
MapReduce
分布式离线计算
_东极
少年锦时
展开
-
用python实现共同好友查询(基于MR)
文章目录原始数据集A:B,C,D,F,E,OB:A,C,E,KC:F,A,D,ID:A,E,F,LE:B,C,D,M,LF:A,B,C,D,E,O,MG:A,C,D,E,FH:A,C,D,E,OI:A,OJ:B,OK:A,C,DL:D,E,FM:E,F,GO:A,H,I,J第一步,按:进行分割,切割成A\tB ,A\tCimport sysfor line in sys.stdin: line = line.strip('\n').split(':')原创 2021-03-14 23:35:28 · 824 阅读 · 0 评论 -
MapReduce模拟实现好友推荐系统
数据集:tom hello hadoop catworld hadoop hello hivecat tom hivemr hive hellohive cat hadoop world hello mrhadoop tom hive worldhello tom world hive mr思想: tom和world之间不是好友,通过判断它们间接好友数据集的相同的个数进行对比 个数...原创 2018-11-11 19:55:02 · 2306 阅读 · 0 评论 -
fileInputformat切片总结
FileInputFormat源码解析(input.getSplits(job))找到你数据存储目录开始遍历处理(规划切片)目录下的每一个文件遍历第一个文件 aa.txt(1) 获取文件大小fs.sizeOf(aa.txt)(2)计算切片的大小computeSliteSize(Math.max(minSize,Math.max(maxSize,blocksize)))=bl...原创 2018-11-11 21:22:12 · 850 阅读 · 0 评论 -
CombineTextInputFormat切片机制优化大量小文件
默认情况下TextInputformat对任务的切片机制是按文件规划切片,不管文件多小,都会有一个单独的切片,都会交给一个maptask,如果有大量的小文件,就会产生大量的maptask,处理效率及其低下优化策略(1) 最好的办法,在数据处理系统的最前端(预处理/采集),将小文件先合并成大文件,再上传到HDFS后续分析(2)补救措施:如果已经是大量小文件在HDFS中了,可以使用另一种In...原创 2018-11-11 23:57:55 · 4020 阅读 · 0 评论 -
partition分区将统计的结果按照不同的要求输出到不同的文件中
源代码作用默认的partition分区public class HashPartitioner<K, V> extends Partitioner<K, V> { /** Use {@link Object#hashCode()} to partition. */ public int getPartition(K key, V value, int numRed...原创 2018-11-12 01:18:49 · 687 阅读 · 0 评论 -
MapReduce使用TF-IDF模拟实现微博热点词汇抓取
概念: TF-IDF是一种用于资讯检索与资讯探测常用加权技术评估一个字词对于一个文件集或一个语料库中一份文件的重要程度字词的重要性随着它在文件中华出现的次数成正比增加但同时会随着它在语料库中出现的频率成反比下降TF:词频 某一个给定的词语在一份给定的文件中出现的次数,这个数字通常会被归一化(分子一般小于分母,区别于IDF),防止偏向长的文件n是词在文件中出现的次数,分母是在文件中所有字...原创 2018-11-13 22:02:27 · 1015 阅读 · 1 评论 -
MapReduce优化倒序排序
第一次完成正常的统计总流量数据,第二步将结果进行排序context.write(总流量,手机号)SorFlowBean实现WritableComparable接口重写compareTo方法 @Override public int compareTo(FlowBean o) { // 倒序排列,从大到小 return this.sumFlow &gt; o.getSum...原创 2018-11-12 10:44:55 · 1675 阅读 · 0 评论 -
MapReduce的优化Combiner合并
combiner是MR程序中Mapper和Reducer之外的一种组件Combiner组件的父类就是ReducerCombiner和Reducer的区别在于运行的位置combiner是在每一个maptask所在的节点运行Reducer是接收全局所有Mapper输出的结果combiner的意义就是对每一个maptask的输出进行局部汇总 ,减少网络传输量自定义Comb...原创 2018-11-12 15:30:22 · 482 阅读 · 0 评论 -
GroupingComparator分组,分析订单中最贵的商品
Bean对象package com.zyd.order;import java.io.DataInput;import java.io.DataOutput;import java.io.IOException;import org.apache.hadoop.io.WritableComparable;public class OrderBean implements Wr...原创 2018-11-12 17:21:43 · 400 阅读 · 0 评论 -
MapReduce深入源码分析job提交的整个过程
/** * Submit the job to the cluster and wait for it to finish. * @param verbose print the progress to the user * @return true if the job succeeded * @throws IOException thrown if the commu...原创 2018-11-11 16:14:06 · 357 阅读 · 0 评论 -
MapTask工作机制
maptask并行度决定map阶段的任务处理并发度,进而影响job的处理速度MapTask 并行度决定机制一个job的map阶段并行度(个数) 由客户端提交job时的切片个数决定一个job的map阶段并行度由客户端在提交job时决定每一个split切片分配一个mapTask默认 切片大小=blocksize切片时不考虑数据集整体,而是逐个对每一个文件单独切片MapTask工作机...原创 2018-11-08 00:37:46 · 4095 阅读 · 0 评论 -
MappReduce工作流程
Map阶段1.待处理文本2.客户端submit()前获取待处理数据信息,然后根据参数设置,形成一个任务分配的规划,切片信息3.提交切片信息job.splitwc.jarjob.xml4.yarn RM 计算出maptask的数量 Mr appmaster nodemastask数量拿到的是切片信息,多少个切片,就有多少个maptask5.默认TextInputFormatma...原创 2018-11-08 00:24:47 · 397 阅读 · 0 评论 -
MapReduce简单入门基础了解
MapReduce定义MapReduce是一个分布式运算程序的编程框架,用户开发"基于hadoop的数据分析应用"的核心框架MapReduce核心是将用户编写的业务逻辑代码和自带默认组件整合一个完整的分布式运算程序,并发运作在一个hadoop集群上优点易于编程 :简单实现一些接口完成一个分布式程序,这个程序分布大量廉价的PC机器上,和一个单线程程序一样扩展性好:计算资源不足时,增加机器...原创 2018-11-07 01:36:47 · 494 阅读 · 0 评论 -
Hadoop序列化
1. why 序列化"活的"对象只存在内存中,关机断电就没有,"活的"对象只能本地进程使用,不能发到网络上另外一台计算机,序列化可以存储"活的对象",并发送到远程计算机2. what 序列化序列化就是把内存中对象转换成字节序列(或其他数据传输协议)以便于存储(持久化)和网络传输反序列化就是将受到字节序列(或其他数据传输协议)或者硬盘中持久化的数据,转换为内存中对象3. why不用j...原创 2018-11-10 00:21:45 · 616 阅读 · 0 评论 -
MapReducer中源码Mapper和Reducer方法源码解析
源码中Mapper类中的方法 /** * The <code>Context</code> passed on to the {@link Mapper} implementations. */ public abstract class Context implements MapContext<KEYIN,VALUEIN,KEYO...原创 2018-11-10 01:31:51 · 812 阅读 · 0 评论 -
MapReduce中多表合并案例Reduce端表合并引发数据倾斜
需求:订单数据表t_order商品信息表t_product将商品信息表中数据根据商品的id合并到订单数据表中思路:map中处理获取输入文件的类型获取输入数据不同文件分别处理封装bean对象输出mapTask进行排序分区根据产品的id号进行排序reduceTask缓存订单数据集合和产品表,然后进行合并根据表信息创建bean对象package com.zy...原创 2018-11-12 21:50:34 · 650 阅读 · 0 评论 -
MapReduce中多表合并案例Reduce端表合并引发数据倾斜优化版本map端合并表
适用于关联表中有小表的情形;可以将小表分发到所有的map节点,这样,map节点就可以在本地对自己所读到的大表数据进行合并并输出最终结果,可以大大提高合并操作的并发度,加快处理速度。核心思想驱动文件;加载缓存数据 // 加载缓存数据 job.addCacheFile(new URI("file:/f:/catch/pd.txt"));map端join的逻辑...原创 2018-11-13 00:08:00 · 522 阅读 · 0 评论 -
MapReduce根据WordCount分析map和Reducer原理
Mapper 阶段package com.zyd.wc;import org.apache.hadoop.io.IntWritable;import org.apache.hadoop.io.LongWritable;import org.apache.hadoop.io.Text;import org.apache.hadoop.mapreduce.Mapper;import j...原创 2018-11-10 11:39:38 · 428 阅读 · 0 评论 -
自定义bean对象实现序列化接口(Writable)以及实现案例
自定义bean对象序列化传输必须注意(1) 实现Writable接口(2)反序列化时,需要反射调用空构造函数,所以必须有空构造 public FlowBean() { super(); }(3)重写序列化方法 @Override public void write(DataOutput out) throws IOException { out.writeLong(u...原创 2018-11-10 19:44:31 · 1717 阅读 · 0 评论 -
Hadoop的企业化
MapReduce跑的慢的原因计算机性能CPU,内存,磁盘健康,网络IO操作优化(1)数据倾斜(2)map和reduce数设置不合理(3)map运行时间太长,导致reduce等待过久(4)小文件过多(5)大量的不可分块的超大文件(6)spill次数过多(7)merge次数过多MapReduce优化方法MapReduce优化方法六个方;数据输入(1)合并小...原创 2018-11-10 22:25:17 · 332 阅读 · 0 评论 -
Hadoop实现MR程序模拟实现天气数据获取两次最高温度
数据1949-10-01 14:21:02 34c1949-10-01 19:21:02 38c1949-10-02 14:01:02 36c1950-01-01 11:21:02 32c1950-10-01 12:21:02 37c1951-12-01 12:21:02 23c1950-10-02 12:21:02 41c1950-10-03 12:21:02 27c1951-...原创 2018-11-09 16:16:06 · 859 阅读 · 1 评论