Hadoop MapReduce
文章平均质量分 50
Charles Gao
这个作者很懒,什么都没留下…
展开
-
HDFS处理小文件问题以及如何解决
哎,鹅厂面试问到这个题一时间没想出很好的答案,就说了运用CombineInputTextFormat的方法,其实还有别的方法,现在总结一下,纪念一下自己惨痛的经历1.最简单的是避免产生小文件,在数据采集的时候,就将小文件或小批数据合成大文件再上传HDFS。2.Hadoop Archive为了缓解大量小文件带给namenode内存的压力,Hadoop 0.18.0引入了Hadoop Archives(HAR files),其本质就是在HDFS之上构建一个分层文件系统。通过执行hadoop archive原创 2021-04-02 20:50:36 · 699 阅读 · 0 评论 -
MapReduce写WordCount案例:Map, Reduce, Driver
Map:import java.io.IOException;import org.apache.hadoop.io.IntWritable;import org.apache.hadoop.io.LongWritable;import org.apache.hadoop.io.Text;import org.apache.hadoop.mapreduce.Mapper;public class WordcountMapper extends Mapper<LongWritable, T原创 2021-03-14 01:25:36 · 282 阅读 · 0 评论 -
MapReduce案例:WordCount
注解:MapTask的两个分区里会有一次并归排序,然后将排好序的单词重新放到两个分区中。ReduceTask中也会有一次并归排序(有几个分区就有几个reduceTask),将排好序的单词按key分组,形成一个iterator,然后付给reduce()方法。1)分布式的运算程序往往需要分成至少2个阶段。2)第一个阶段的MapTask并发实例,完全并行运行,互不相干。3)第二个阶段的ReduceTask并发实例互不相干,但是他们的数据依赖于上一个阶段的所有MapTask并发实例的输出。4)MapR.原创 2021-03-14 01:02:39 · 180 阅读 · 0 评论 -
MapReduce跑得慢的原因
Mapreduce 程序效率的瓶颈在于两点:1)计算机性能CPU、内存、磁盘健康、网络(所以万一MR跑得慢了,最简单的方式是提高计算及性能,加内存等等!)2)I/O 操作优化(1)数据倾斜(2)map和reduce数设置不合理(切片问题)(3)reduce等待过久(4)小文件过多(5)大量的不可分块的超大文件(6)spill次数过多(磁盘溢写次数过多)(7)merge次数过多等(因为要对数据进行归并排序)mapreduce 优化方法1)数据输入:(1)合并小文件:在执行mr任务前原创 2021-02-23 19:55:18 · 2083 阅读 · 0 评论 -
MapReduce中切片、Map、Reduce的关系
转载于:https://blog.csdn.net/ancony_/article/details/81274624感谢楼主的文章!MapReduce运行流程1最先启动MRAppMaster,MRAppMaster根据job的描述信息,计算需要的maptask实例的数量,然后向集群申请机器,启动相应数量的maptask进程。2 maptask启动之后,根据给定的数据切片范围进行数据处理。A利用指定的inputformat来获取RecordReader对象读取数据,形成KV输入。B将输入的kv对传原创 2021-02-07 16:13:36 · 241 阅读 · 0 评论 -
Hadoop MapReduce序列化
序列化是干啥用的?序列化的原本意图是希望对一个Java对象作一下“变换”,变成字节序列,这样一来方便持久化存储到磁盘,避免程序运行结束后对象就从内存里消失,另外变换成字节序列也更便于网络运输和传播,所以概念上很好理解:序列化:把Java对象转换为字节序列。反序列化:把字节序列恢复为原先的Java对象。如果MapReduce是在集群上工作时,Map和Reduce可能在不同的服务器上,则从Map的服务器传数据到Reduce的服务器这一过程中,数据都是以字节为单位传输的,所以所有的数据都必须能够序列化原创 2021-02-06 14:50:34 · 269 阅读 · 0 评论 -
CombineTextInputFormat 切片机制以及实例
CombineTextInputFormat 切片机制 原理以及应用场景框架默认的 TextInputFormat 切片机制是对任务按文件规划切片,不管文件多小,都会是一个单独的切片,都会交给一个 MapTask,这样如果有大量小文件,就会产生大量的MapTask,处理效率极其地下。应用场景CombineTextInputFormat 用于小文件过多的场景,它可以将多个小文件从逻辑上规划到一个切片中,这样,多个小文件就可以交给一个 MapTask 处理。虚拟存储切片最大值设置CombineText原创 2021-02-06 10:52:46 · 432 阅读 · 1 评论 -
FileInputFormat切片机制和配置参数
1. FileInputFormat中默认的切片机制(1)简单地按照文件的内容长度进行切片 (2)切片大小,默认等于block大小 (本地模式块大小32M,yarn模式128M,老的版本64M)(3)切片时不考虑数据集整体,而是逐个针对每一个文件单独切片 比如待处理数据有两个文件: file1.txt 330M file2.txt 10M 经过FileInputFormat的切片机制运算后,形成的切片信息如下: file1.txt.s原创 2021-02-06 08:56:21 · 706 阅读 · 0 评论 -
Hadoop MapReduce Job提交流程解析
注释:job提交好后,stagingDir路径下会有三个文件,分别是job.split, job.xml, job.jar相应的代码可以表示为:waitForCompletion() submit(); // 1建立连接 connect(); // 1)创建提交Job的代理 new Cluster(getConfiguration()); // (1)判断是本地yarn还是远程 initialize(jobTrackAddr, conf); // 2 提交job.原创 2021-02-05 10:53:49 · 395 阅读 · 0 评论 -
FileInputFormat切片源码解析
FileInputFormat切片源码解析(input.getSplits(job))程序先找到数据存储的目录开始遍历处理(规划切片)目录下的每一个文件遍历第一个文件ss.txta) 获取文件大小fs.sizeOf(ss.txt)b)计算切片大小computeSpliteSize(Math.max(minSize, Math.min(maxSize, blocksize))) = blocksize = 128MminSize是1,blocksie是128M,maxSize是long的最大值原创 2021-02-05 10:24:56 · 417 阅读 · 0 评论 -
Hadoop MapReduce Job提交流程源码详解
文章转载于:并加了一些自己的理解和注释主要介绍的是写完mr(job) 如何提交到集群上,这一段过程它执行了哪些操作。写一个简单的的 WordCount ,通过调试来看程序是如何执行的。大体步骤:1. 写class WordcountMapper, 重写map方法2. 写class WordcountReducer, 重写reduce方法3. 写class WordcountDriver...原创 2021-02-05 00:32:47 · 380 阅读 · 0 评论 -
数据切片和MapTask并行度决定机制
数据切片和MapTask并行度决定机制数据块:Block是HDFS物理上把数据分成一块一块。数据切片:数据切片只是在逻辑上对输入进行分片,并不会在磁盘上将其切分成片进行存储。所以数据块和数据切片是两种程度上的概念。数据切片的数量 = MapTask的数量(也就是说,一个数据切片就产生一个MapTask)然而,如果数据切片和数据块大小不一致的话,MapTask在并行计算时,就可能要调用不同的DataNode来获取一个完整的MapTask,这是由于数据切片和数据块的大小不一致导致的。所以为了方便提高I原创 2021-02-03 22:21:54 · 321 阅读 · 0 评论