mapreduce
静默安然
这个作者很懒,什么都没留下…
展开
-
Hadoop数据压缩
1 概述压缩技术能够有效减少底层存储系统(HDFS)读写字节数。压缩提高了网络带宽和磁盘空间的效率。在Hadoop下,尤其是数据规模很大和工作负载密集的情况下,使用数据压缩显得非常重要。在这种情况下,I/O操作和网络数据传输要花大量的时间。还有,Shuffle与Merge过程同样也面临着巨大的I/O压力。鉴于磁盘I/O和网络带宽是Hadoop的宝贵资源,数据压缩对于节省资源、最小化磁盘I/O和网络传输非常有帮助。不过,尽管压缩与解压操作的CPU开销不高,其性能的提升和资源的节省并非没有代价。如果原创 2020-12-04 14:25:14 · 80 阅读 · 0 评论 -
Map输出端、Reduce输出端采用压缩
即使你的MapReduce的输入输出文件都是未压缩的文件,你仍然可以对map任务的中间结果输出做压缩,因为它要写在硬盘并且通过网络传输到reduce节点,对其压缩可以提高很多性能,这些工作只要设置两个属性即可,我们来看下代码怎么设置:1)给大家提供的hadoop源码支持的压缩格式有:BZip2Codec 、DefaultCodecMap输出端压缩,但是Reduce是没压缩的。要想输出压缩,要设置reduce输出端压缩。Map输出端的压缩格式不影响Reduce端的。Reduce输出端采用压缩原创 2020-12-04 14:03:05 · 423 阅读 · 0 评论 -
压缩/解压缩案例
数据流的压缩和解压缩CompressionCodec有两个方法可以用于轻松地压缩或解压缩数据。要想对正在被写入一个输出流的数据进行压缩,我们可以使用createOutputStream(OutputStreamout)方法创建一个CompressionOutputStream,将其以压缩格式写入底层的流。相反,要想对从输入流读取而来的数据进行解压缩,则调用createInputStream(InputStreamin)函数,从而获得一个CompressionInputStream,从而从底层的流读取未.原创 2020-12-04 13:40:55 · 192 阅读 · 0 评论 -
MapReduce之寻找博客共同好友
1)需求:以下是博客的好友列表数据,冒号前是一个用户,冒号后是该用户的所有好友(数据中的好友关系是单向的),求出哪些人两两之间有共同好友,及他俩的共同好友都有谁?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关注了B,C原创 2020-12-03 16:27:20 · 247 阅读 · 0 评论 -
java.lang.Exception: java.lang.ArrayIndexOutOfBoundsException: 1(无奈,深层原因未找到)
数据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,JMapReduce博客找好友报错,如果把数据直接从txt记事本中粘贴过来就报这个数组越界错误(但是并没有越界,且可以正常在控制才输出,但无法进行下一步),但是如果把粘贴到QQ,再粘贴到TXT,或者是自己手动输入数据则原创 2020-12-03 14:03:38 · 4174 阅读 · 2 评论 -
倒排索引案例(多job串联)两个MapReduce串联工作
需求:有大量的文本(文档、网页),需要建立搜索索引输入 输出分析: 分两次MapReduce工作,第一次预期输出atguigu--a.txt 3atguigu--b.txt 2atguigu--c.txt 2pingping--a.txt 1pingping--b.txt 3pingping--c.txt 1ss--a.txt 2ss--b.txt 1ss--c.txt 1第二次预期输出atguigu c.txt-->2 b.txt-->2 a原创 2020-12-02 19:12:40 · 299 阅读 · 0 评论 -
计数器应用
计数器应用(多线程情况下,无法使用debug调试代码,只能通过计数器的方式来调节)打log和debug是解决问题的重要手段Hadoop为每个作业维护若干内置计数器,以描述多项指标。例如,某些计数器记录已处理的字节数和记录数,使用户可监控已处理的输入数据量和已产生的输出数据量。1)API(1)采用枚举的方式统计计数enum MyCounter{MALFORORMED,NORMAL}//对枚举定义的自定义计数器加1context.getCounter(MyCounter.MALFOR原创 2020-12-01 19:35:40 · 288 阅读 · 0 评论 -
数据清洗(ETL)--简单解析版(日志清洗案例)
数据清洗(ETL)1)概述在运行核心业务Mapreduce程序之前,往往要先对数据进行清洗,清理掉不符合用户要求的数据。清理的过程往往只需要运行mapper程序,不需要运行reduce程序。7.7.1 简单解析版1)需求:去除日志中字段长度小于等于11的日志。2)输入数据194.237.142.21 - - [18/Sep/2013:06:49:18 +0000] "GET /wp-content/uploads/2013/07/rstudio-git3.png HTTP/1.原创 2020-12-01 19:09:30 · 1787 阅读 · 0 评论 -
Job提交流程和切片源码详解(****)
1)job提交流程源码详解 waitForCompletion() submit(); // 1建立连接 connect(); // 1)创建提交job的代理 newCluster(getConfiguration()); // (1)判断是本地yarn还是远程 initialize(jobTrackAddr, conf); // 2 提交job submitter.submitJobInternal(Job.this, c.原创 2020-12-01 14:12:18 · 168 阅读 · 0 评论 -
MapReduce中多表合并案例之Map端表合并(Distributedcache)
Map端表合并(Distributedcache)1)分析适用于关联表中有小表的情形;可以将小表分发到所有的map节点,这样,map节点就可以在本地对自己所读到的大表数据进行合并并输出最终结果,可以大大提高合并操作的并发度,加快处理速度。订单数据表t_order: id pid amount 1001 01 1 1002 02原创 2020-12-01 14:04:21 · 313 阅读 · 0 评论 -
MapReduce中多表合并案例【Reduce端表合并(数据倾斜)】
1)需求:订单数据表t_order: id pid amount 1001 01 1 1002 02 2 1003 03 3 商品信息表t_product pid pname 01原创 2020-11-30 23:07:18 · 559 阅读 · 0 评论 -
过滤日志及自定义日志输出路径案例(自定义OutputFormat)
自定义OutputFormat为了实现控制最终文件的输出路径,可以自定义OutputFormat。要在一个mapreduce程序中根据数据的不同输出两类结果到不同目录,这类灵活的输出需求可以通过自定义outputformat来实现。1)自定义OutputFormat步骤(1)自定义一个类继承FileOutputFormat。(2)改写recordwriter,具体改写输出数据的方法write()。2)实操案例:1)需求过滤输入的log日志中是否包含atguigu(1)包含原创 2020-11-30 12:32:42 · 269 阅读 · 0 评论 -
二次排序(GroupingComparator)
1)需求有如下订单数据 订单id 商品id 成交金额 0000001 Pdt_01 222.8 0000001 Pdt_06 25.8 0000002 Pdt_03 522.8 0000002 Pdt_04原创 2020-11-29 16:49:13 · 595 阅读 · 0 评论 -
mapreduce工作流程(*****)
Map工作流程Reduce工作流程Shuffle机制Mapreduce确保每个reducer 的输入都是按键排序的。系统执行排序的过程(即将map输出作为输入传给reducer)称为shuffle。官网详细展开原创 2020-11-29 16:38:57 · 87 阅读 · 0 评论 -
小文件处理案例(自定义InputFormat)
1)需求无论hdfs还是mapreduce,对于小文件都有损效率,实践中,又难免面临处理大量小文件的场景,此时,就需要有相应解决方案。将多个小文件合并成一个文件SequenceFile,SequenceFile里面存储着多个文件,存储的形式为文件路径+名称为key,文件内容为value。2)输入数据one.txt hhhhhtwo.txt yyyyythree.txt akjfkajkfak3)分析小文件的优化无非以下几种方式:(1)在数据采集的时候,就将小文件或小批数据合.原创 2020-11-29 15:00:43 · 135 阅读 · 0 评论 -
Combiner合并(减轻Reduce压力,提高效率)
1)combiner是MR程序中Mapper和Reducer之外的一种组件。2)combiner组件的父类就是Reducer。3)combiner和reducer的区别在于运行的位置:Combiner是在每一个maptask所在的节点运行;Reducer是接收全局所有Mapper的输出结果;4)combiner的意义就是对每一个maptask的输出进行局部汇总,以减小网络传输量。5)combiner能够应用的前提是不能影响最终的业务逻辑,而且,combiner的输出kv应该跟redu原创 2020-11-27 23:26:15 · 360 阅读 · 0 评论 -
MapReduce之合并小文件---量小文件的切片优化(CombineTextInputFormat)
0)需求:将输入的大量小文件合并成一个切片统一处理。1)输入数据:准备5个小文件2)实现过程(1)不做任何处理,运行需求1中的wordcount程序,观察切片个数为5(2)在WordcountDriver中增加如下代码,运行程序,并观察运行的切片个数为1 // 如果不设置InputFormat,它默认用的是TextInputFormat.classjob.setInputFormatClass(CombineTextInputFormat.class);Combin原创 2020-11-26 20:35:58 · 226 阅读 · 0 评论 -
MapReduce 之流量汇总案例四+不同省份输出文件内部排序(部分排序)
1)需求要求每个省份手机号输出的文件中按照总流量内部排序。2)分析:基于需求3,增加自定义分区类即可。3)案例实操(1)增加自定义分区类package com.lzz.mapreduce.flowsort;import org.apache.hadoop.io.Text;import org.apache.hadoop.mapreduce.Partitioner;public class FlowSortProvincePartitioner extends Part原创 2020-11-26 20:13:19 · 286 阅读 · 1 评论 -
MapReduce 之流量汇总案例三+将统计结果将统计结果按照总流量正序排序(全排序)
0)需求根据需求1产生的结果再次对总流量进行排序。1)数据准备1363157985066 13726230503 00-FD-07-A4-72-B8:CMCC 120.196.100.82 i02.c.aliimg.com 24 27 2481 24681 2001363157995052 13826544101 5C-0E-8B-C7-F1-E0:CMCC 120.197.40.4 4 0 264 0 2001363157991076 13926435656 20-10-7A原创 2020-11-26 20:09:15 · 497 阅读 · 0 评论 -
MapReduce 之流量汇总案例二+将统计结果按照手机归属地不同省份输出到不同文件中(Partitioner)
0)需求:将统计结果按照手机归属地不同省份输出到不同文件中(分区)1)数据准备1363157985066 13726230503 00-FD-07-A4-72-B8:CMCC 120.196.100.82 i02.c.aliimg.com 24 27 2481 24681 2001363157995052 13826544101 5C-0E-8B-C7-F1-E0:CMCC 120.197.40.4 4 0 264 0 2001363157991076 13926435656 20原创 2020-11-26 20:01:18 · 368 阅读 · 0 评论 -
流量汇总案例(一)之统计手机号耗费的总上行流量、下行流量、总流量(序列化)
1)需求:统计每一个手机号耗费的总上行流量、下行流量、总流量2)数据准备1363157985066 13726230503 00-FD-07-A4-72-B8:CMCC 120.196.100.82 i02.c.aliimg.com 24 27 2481 24681 2001363157995052 13826544101 5C-0E-8B-C7-F1-E0:CMCC 120.197.40.4 4 0 264 0 2001363157991076 13926435656 20-原创 2020-11-26 19:37:25 · 2031 阅读 · 0 评论 -
MapReduce入门+编程wordcount实例
一、MapReduce1 MapReduce定义MapReduce是一种分布式运算程序的框架,是用户开发“基于Hadoop的数据分析应用”的核心框架,Mapreduce核心功能是将用户编写的业务逻辑代码和自带默认组件整合成一个完整的分布式运算程序,并发运行在一个hadoop集群上。2 MapReduce的优缺点2.1 优点易于编程,使用户开发代码就像写简单的串行程序一样。可以处理PB(1PB=1024TB=10 6GB=10 9MB=10 12KB=10 15B以上的海量数据高容原创 2020-11-23 18:22:25 · 1604 阅读 · 0 评论