Hadoop优化
一、影响MR程序效率的因素
1.计算机性能:
CPU、内存、磁盘、网络,
计算机的性能会影响MR程序的速度与效率
2.I/O方面
1)数据倾斜(代码优化)
2)map和reduce数量设置不合理(通过配置文件后代码中设置)
3)map运行时间过长,导致reduce等待时间过长
4)小文件过多(浪费元数据资源,CombineTextInputFormat)
5)不可分快的超大文件(不断溢写)
6)多个溢写小文件需要多次合并。
二、MR的优化方法
MR优化的六个方面:数据输入、map阶段、reduce阶段、IO传输、数据倾斜、参数调优
1.数据输入
1)合并小文件:在执行mr任务前就进行小文件合并
2)采用CombineTextInputFormat来作为输入,解决输入端大量小文件的场景
MR程序不适合处理大量小文件
2.Map阶段
1)减少溢写次数:
//修改内存大小:mapreduce.task.io.sort.mb
//修改默认溢写百分百:mapreduce.mps.sort.spill.percent
2)减少合并次数
//mapreduce.task.io.sort.factor,将merge值增大
3)在shuffle阶段不影响业务逻辑情况下使用Combiner
3.Reduce阶段
1)设置合理的map与reduce个数
//map可以通过文件切块的大小,或小文件合并改变maptask数量
//reduce通过分区partitioner,setNumReduceTasks改变reducetask数量
2)设置map/reduce共存
//即map允许到一定程度后,启动reduce减少reduce的等待时间
//mapreduce.job.reduce.slowstart.completedfmaps(参数越小reduce等待时间越少)
//合理设置reduce端的buffer:mapreduce.reduce.markreset.buffer.percent
4.数据传输
1)数据压缩
2)使用SequenceFile,它是二进制文件,使字节之间紧密度更高,提高效率。
5.数据倾斜
1)进行范围分区
2)自定义分区
3)Combiner
4)能用map join坚决不用reduce join
6.参数调优
1)CPU
//程序map阶段默认使用cpu核心数量:mapreduce.map.cpu.vcores
//程序reduce阶段more使用cpu核心数量:mapreduce.reduce.cpu.vcores
2)内存
//一个maptask可以使用的最大内存:mapreduce.map.memory.mb
//一个reducetask可以使用的最大内存:mapredcue.reduce.memory.mb
3)并行度
//reduce去map端拿数据时的并行度:mapreduce.reduce.shuffle.parallelcopies
Hadoop优化的更多相关文章
- 学习笔记:Twitter核心数据类库团队的Hadoop优化经验
一.来源 Streaming Hadoop Performance Optimization at Scale, Lessons Learned at Twitter (Data platform @ ...
- 关注云端搜索技术:elasticsearch,nutch,hadoop,nosql,mongodb,hbase,cassandra 及Hadoop优化
http://www.searchtech.pro/ Hadoop添加或调整的参数: 一.hadoop-env.sh1.hadoop的heapsize的设置,默认1000 # The maximum ...
- Hadoop优化 第一篇 : HDFS/MapReduce
比较惭愧,博客很久(半年)没更新了.最近也自己搭了个博客,wordpress玩的还不是很熟,感兴趣的朋友可以多多交流哈!地址是:http://www.leocook.org/ 另外,我建了个QQ群:3 ...
- hadoop优化之拙见
map-reduce的优化: 需要内存的地方: map/reduce任务运行时内存.存放中间数据的内存缓存区.map输出数据排序内存, 需要操作磁盘的地方: map输出数据缓冲区达到阀值的溢出写文件 ...
- Hadoop(24)-Hadoop优化
1. MapReduce 跑得慢的原因 优化方法 MapReduce优化方法主要从六个方面考虑:数据输入.Map阶段.Reduce阶段.IO传输.数据倾斜问题和常用的调优参数. 数据输入 Map阶段 ...
- Hadoop优化 操作系统优化
1.优化文件系统,修改/etc/fstab 在defaults后面添加noatime,表示不记录文件的访问时间. 修改为: 如果不想重新启动操作系统使配置生效,那么应该执行: # mount -o r ...
- Hadoop优化之数据压缩
bBHadoop数据压缩 概述 运行hadoop程序时,I/O操作.网络数据传输.shuffle和merge要花大量的时间,尤其是数据规模很大和工作负载密集的情况下,这个时候,使用数据压缩可以提高效率 ...
- [大牛翻译系列]Hadoop(16)MapReduce 性能调优:优化数据序列化
6.4.6 优化数据序列化 如何存储和传输数据对性能有很大的影响.在这部分将介绍数据序列化的最佳实践,从Hadoop中榨出最大的性能. 压缩压缩是Hadoop优化的重要部分.通过压缩可以减少作业输出数 ...
- Hadoop! | 大数据百科 | 数据观 | 中国大数据产业观察_大数据门户
你正在使用过时的浏览器,Amaze UI 暂不支持. 请 升级浏览器 以获得更好的体验! 深度好文丨读完此文,就知道Hadoop了! 来源:BiThink 时间:2016-04-12 15:1 ...
随机推荐
- Kubernetes实战:目录
一.Docker实战 Docker: 基础介绍 [一] Docker:Docker 性质及版本选择 [三] Docker:网络及数据卷设置 [四] Docker:手动制作镜像 [五] Docker:d ...
- spring boot项目能启动打包失败
如题,项目本地可以正常启动.但是用 mvn clean package打包就失败! 事件原因如下: 一.pom.xml少packing元素 <groupId>com.sanyi</g ...
- HBase RowKey与索引设计
1. HBase的存储形式 hbase的内部使用KeyValue的形式存储,其key时rowKey:family:column:logTime,value是其存储的内容. 其在region内大多以升序 ...
- 汇编语言笔记v1.0
1.loop的用法 loop指令的格式是:loop标号,cpu执行loop指令的时候,要进行两步操作 1:(cx)=(cx)-1 2:判断cx中的值,不为零则转至标号处执行,如果为零,则向下执行 这里 ...
- 教你如何绘制数学函数图像——numpy和matplotlib的简单应用
numpy和matplotlib的简单应用 一.numpy库 1.什么是numpy NumPy系统是Python的一种开源的数值计算扩展.这种工具可用来存储和处理大型矩阵,比Python自身的嵌套列表 ...
- 乙方渗透测试之Fuzz爆破
前言 爆破在渗透测试中,对技术的要求不高,但是对技巧和字典的要求就很高了,本篇整理下平时学到的一些爆破思路和技巧(偏web渗透登陆),当你无措可施时,暴力破解是最好的方式. 世界上最可怕的事情是你的习 ...
- EasyUI整合篇
easy ui combobox getValue 获取不到值问题 必须设置属性showblank: true,否则只能从onSelect事件中获取 $("#ddlType").c ...
- input下拉带输入框
html5 自带的datalist实现 html代码: <input list="students"> <datalist id="students&q ...
- MySQL学习13 - 索引
一.索引的介绍 二 .索引的作用 三.常见的几种索引: 3.1 普通索引 3.2 唯一索引 3.3 主键索引 3.4 组合索引 四.索引名词 五.正确使用索引的情况 什么是最左前缀呢? 六.索引的注意 ...
- mysql Using filesort 索引不可用问题
今天上班发现线上机器CPU告警,看了一下发现是mysqld一直占用CPU处于满负荷状态,show processlist;一下,发现很多查询在排序状态,随便拿了一条sql explain看了一 ...