![](https://img-blog.csdnimg.cn/20200722153335781.png?x-oss-process=image/resize,m_fixed,h_224,w_224)
7.MapReduce
MapReduce是一种编程模型,用于大规模数据集(大于1TB)的并行运算。
SuperBigData~
大数据行业热爱者,欢迎交流学习,共同进步
展开
-
Map端表合并(Distributedcache)
需求2:Map端表合并(Distributedcache)1)分析适用于关联表中有小表的情形;可以将小表分发到所有的map节点,这样,map节点就可以在本地对自己所读到的大表数据进行合并并输出最终结果,可以大大提高合并操作的并发度,加快处理速度。 Mapperjion类:package com.itstar.mr.wc0908.mapperjoin;impor...原创 2019-11-14 21:52:06 · 172 阅读 · 0 评论 -
Hadoop数据流中的压缩和解压缩
CompressionCodec有两个方法可以用于轻松地压缩或解压缩数据。要想对正在被写入一个输出流的数据进行压缩,我们可以使用createOutputStream(OutputStreamout)方法创建一个CompressionOutputStream,将其以压缩格式写入底层的流。相反,要想对从输入流读取而来的数据进行解压缩,则调用createInputSt...原创 2019-11-13 19:44:05 · 512 阅读 · 0 评论 -
Hadoop数据压缩种类
1.概述压缩技术能够有效减少底层存储系统(HDFS)读写字节数。压缩提高了网络带宽和磁盘空间的效率。在Hadoop下,尤其是数据规模很大和工作负载密集的情况下,使用数据压缩显得非常重要。在这种情况下,I/O操作和网络数据传输要花大量的时间。还有,Shuffle与Merge过程同样也面临着巨大的I/O压力。 鉴于磁盘I/O和网络带宽是Hadoop的宝贵资源,数据压缩对于节省资源、...原创 2019-11-13 14:20:38 · 206 阅读 · 0 评论 -
电话号码分区案例
需求:要求将统计结果按照条件输出到不同文件中(分区)。比如:将统计结果按照手机号不同的运营商输出到不同文件中(分区)数据样本模式:一共180万个电话号码左右这个是Mapl类代码:package com.itstar.mr.wc0908.Partition;import org.apache.hadoop.io.LongWritable;import org...原创 2019-11-08 20:46:21 · 1032 阅读 · 0 评论 -
Shuffle机制
Shufflte机制 图解:Mapreduce确保每个reducer的输入都是按键排序的。系统执行排序的过程(即将map输出作为输入传给reducer)称为shuffle。这个是官方给的图,比较简单:接下来看这个详细的流程图:Combiner会将相同的分区和一起,然后生成一个大文件先分区在排序,而且生成如果一个文件则是全局排序如...原创 2019-11-07 23:13:21 · 194 阅读 · 0 评论 -
MapTask工作机制
1 并行度决定机制1)问题引出maptask的并行度决定map阶段的任务处理并发度,进而影响到整个job的处理速度。那么,mapTask并行任务是否越多越好呢?这种说法是不对的,mapTask多的话,消耗的资源就多(CPU,内存等等);mapTask少的话,运行效率就会变低。2)MapTask并行度决定机制 一个job的map阶段MapTask并行度(个...原创 2019-11-07 14:03:03 · 453 阅读 · 0 评论 -
复杂清洗日志案例
1)需求:对web访问日志中的各字段识别切分去除日志中不合法的记录(1.字段小于等于11不合法 2.状态码大于等于400)根据统计需求,生成各类访问请求过滤数据2)样本数据格式:一共 14619行3)实现代码:(1)定义一个LogBean,用来记录日志数据中的各数据字段public class LogBean { private St...原创 2019-11-06 23:38:14 · 390 阅读 · 0 评论 -
用自定义InputFormat做万行数据清洗
1)需求:去除日志中按照空格切分,字段长度小于等于11的日志属于不符合日志。日志模板清洗前:一共14619行2)实现代码:(1)编写LogMapper package com.itstar.mr.wc0908.mr.bigdata_13.clean;import org.apache.hadoop.io.LongWritable;import org.a...原创 2019-11-05 21:40:47 · 232 阅读 · 0 评论 -
NLineInputFormat 切片类型
NLineInputFormat 切片数据类型格式:NLineInputFormat如果使用NlineInputFormat,代表每个map进程处理的InputSplit不再按block块去划分,而是按NlineInputFormat指定的行数N来划分。即输入文件的总行数/N=切片数(20),如果不整除,切片数=商+1。一个9行Linux mont bb xx zz ...原创 2019-11-05 15:06:34 · 342 阅读 · 0 评论 -
KeyValueTextInputFormat类型切分格式
KeyValueTextInputFormat数据格式:1,Linux mont bb xx zz dd fff2,Linux windows linux shell xhell3,yy vv nn mmDrive类代码: Configuration conf = new Configuration(); conf.set(KeyValueTex...原创 2019-11-05 14:18:23 · 334 阅读 · 0 评论 -
大量小文件的优化策略
CombineTextInputFormat切片机制:1)默认情况下TextInputformat对任务的切片机制是按文件规划切片,不管文件多小,都会是一个单独的切片,都会交给一个maptask,这样如果有大量小文件,就会产生大量的maptask,处理效率极其低下。2)优化策略 (1)最好的办法,在数据处理系统的最前端(预处理/采集),将小文件先合并成大文件,再上传到HDF...原创 2019-11-04 17:55:35 · 576 阅读 · 1 评论 -
FileInputFormat源码解析
FileInputFormat源码解析(input.getSplits(job)) (1)找到你数据存储的目录。 (2)开始遍历处理(规划切片)目录下的每一个文件 (3)遍历第一个文件ss.txt a)获取文件大小fs.sizeOf(ss.txt); b)计算切片大小在dri...原创 2019-11-03 20:32:36 · 523 阅读 · 0 评论 -
MapReduce框架原理
MapReduce工作流程reduce端:2)流程详解上面的流程是整个mapreduce最全工作流程,但是shuffle过程只是从第7步开始到第15步结束,具体shuffle过程详解,如下:1)maptask收集我们的map()方法输出的kv对,放到内存缓冲区中2)从内存缓冲区不断溢出本地磁盘文件,可能会溢出多个文件3)多个溢出文件会被合并...原创 2019-11-03 16:00:21 · 114 阅读 · 0 评论 -
本地测试后,把jar包打包到集群上运行。
一. 测试成功的案例A.首先路径一定不要写本地的,应该试args[n]格式 //配置输入数据的路径 FileInputFormat.setInputPaths(job, new Path(args[0])); //配置输出的路径 FileOutputFormat.setOutputPath(job, new...原创 2019-11-01 18:29:22 · 1392 阅读 · 0 评论 -
hadoop自己开发了一套序列化机制(Writable),精简、高效
1.为什么要序列化?“活的”对象只生存在内存里,关机断电就没有了且“活的”对象只能由本地的进程使用,不能被发送到网络上的另外一台计算机。 然而序列化可以存储“活的”对象,可以将“活的”对象发送到远程计算机。2 .什么是序列化?序列化就是把内存中的对象,转换成字节序列(或其他数据传输协议)以便于存储(持久化)和网络传输。反序列化就是将收到字节序列(或其他数据传输协议)或者是...原创 2019-10-31 22:05:04 · 343 阅读 · 0 评论 -
MapReduce编程规范
MapReduce编程规范用户编写的程序分成三个部分:Mapper,Reducer,Driver(提交运行mr程序的客户端)1)Mapper阶段 (1)用户自定义的Mapper要继承自己的父类 (继承) (2)Mapper的输入数据是KV对的形式(KV...原创 2019-10-31 20:52:00 · 775 阅读 · 0 评论 -
MapReduce核心思想
一.MapReduce核心思想流程:1)分布式的运算程序往往需要分成至少2个阶段。2)第一个阶段的maptask并发实例,完全并行运行,互不相干。3)第二个阶段的reduce task并发实例互不相干,但是他们的数据依赖于上一个阶段的所有maptask并发实例的输出。4)MapReduce编程模型只能包含一个map阶段和一个reduce阶段,如果用户的业务逻辑非常复...原创 2019-10-31 15:55:26 · 2250 阅读 · 0 评论 -
用本地的mapreduce测试单词计数
在自己的家路径下创建一个文件xxx(为名字) pwd的结果:/root 3.从本地上传到HDFS中:格式是hdfs dfs -put [本地的文件路径] [上传到HDFS路径] 例子:如下 4.查看HDFS根目录的结果: 例子:如下 5.然后到/liqing目录下查看,是否上传成功...原创 2019-10-28 17:59:18 · 231 阅读 · 0 评论 -
MapReduce入门
1.1 MapReduce定义Mapreduce是一个分布式运算程序的编程框架,是用户开发“基于hadoop的数据分析应用”的核心框架。Mapreduce核心功能是将用户编写的业务逻辑代码和自带默认组件整合成一个完整的分布式运算程序,并发运行在一个hadoop集群上。1.2 MapReduce优缺点1.2.1 优点1)MapReduce易于编程。它简单的实现一些接口,就可以完...原创 2019-10-30 14:35:29 · 190 阅读 · 0 评论