开发和优化高效的Hadoop & Hive 程序
开发和优化高效的MapReduce & Hive 程序
数据平台和产品
明风 2011/08
主题
数据平台的历程 数据平台的历程
云梯与数据平台 MR与Hive
MapReduce的调优 MapReduce的调优
开发Tips Combiner,Partitioner,Comparator 关键参数的调节 影响云梯JOB的不良特征
Hive的调优 Hive的调优
适用场合 Hive开发技巧 高级特性的应用 数据倾斜的原因和特征 数据倾斜的解决方法 Hive的局限性
整体调优之道
业务优先级与调度 小文件合并与压缩 参数自动调优
海量数据处理的思路 海量数据处理的思路
瀑布型数据流 化整为零,合理调度 极限计算……
2
Taobao Confidential
数据平台业务组成
BI线 量子统 计 数据魔 方
广告线
搜索线
3
Taobao Confidential
数据平台的历程
2010年3月份
700台云梯 1000-作业(数据平台,搜索算法) 每天5T左右的原始数据 50%的MR,50%的Hive
目前
1500台机器 4000个作业(数据 平台) 每天15T原始数据 10%的MR,90%的Hive
4 Taobao Confidential
各条业务线的演变情况
BI线 搜索线 广告线 数据魔方 量子统计
?RAC和MR并存 ?RAC迁云梯,直接从Oracle SQL切换为Hive SQL ?MR改造为Hive,目前只有少数的剩余MR ?从搜索算法组接手,大量的MR,少数的Hive,后来基本全部切换为 Hive
?云梯最早的用户,经历多次重构,目前除了日志前期处理的少量MR,全 部为Hive
?1:9的MR和Hive比例 ?MR用于品牌库和型号库的处理
?1:9的MR和Hive比例 ?MR用于最后对数据进行分库分表
5
Taobao Confidential
Hadoop的场合
复杂的数据挖掘算法
Mahout
动态维度和动态SQL
业务逻辑完全一致,表名和字段名不同
Hive尚未实现得很好的特性
全局排序 …………
涉及到Hadoop底层文件操作的 工具程序
合并小文件 极限存储
6 Taobao Confidential
Hadoop的调优
从业务逻辑和数据结 构进行优化
?需要业务开发人员熟悉 Hadoop 和Hive,可以影响 一个业务线的整体效率
从应用程序角度进行 优化
?优点:不会影响其它作业, 优点: 优点 如果是关键路径上的作业, 能有显著作用 ?不足:影响范围有限,但 不足: 不足 是可以非常频繁的优化, 只要保证数据正确性
对Hadoop参数和存储 Hadoop参数和存储 进行调优
?优点:影响一批作业,效 优点: 优点 果显著 ?缺点:对大部分作业有优 缺点: 缺点 化的参数,可能对小部分 有反作用
从系统实现角度进行 优化
?优点:影响全部的作业, 优点: 优点 效果非凡 ?缺点:需要非常谨慎,不 缺点: 缺点 能太频繁
7
Taobao Confidential
MR程序的基本常识
重用Text 等Writable类型
不要用: output.collect(new output.collect(new Text(….), new Text(…)) 而是用: 而是用: key.set(…); key.set(…); value.set(); value.s
et(); output.collect(key, output.collect(key, value):
使用StringBuilder
不要使用Formatter 不要使用Formatter 不要使用StringBuffer 不要使用StringBuffer 不要介意使用 + 通过DistributedCache加载文件 通过DistributedCache加载文件 DistributedCache 适用场合: 适用场合:配置文件,词典 用法: 用法: 最佳用法: 最佳用法:
:
8
Taobao Confidential
高效MR的三个调节器
Combiner Partitioner Comparator 充分利用3者,实现高效灵活的排序
9
Taobao Confidential
Input和Output
充分利用标准的Hadoop类特性,产生灵活 的Map – Reduce结果
10
Taobao Confidential
MR中慎做之事
静态变量
Map或者Reduce中的static,不能用于整体计数 单个计数,存在风险
参数:
大对象
Map,List,倒排表…… 尽量做为Map和Reduce的成员变量
大循环
1亿的数据,每条循环3000次,3000亿的操作,类似于笛卡尔积
递归
一定要加深度控制 Reporter. progress()
超长正则表达式
正则匹配很消耗性能,长度超过100的正则很危险 在Map外对正则表达式进行编译,map中不编译
11
Taobao Confidential
MR中的慎做之事
创建本地文件
New File() 变相的将hdfs的数据,转移到TaskTracker,云梯表示压力山大 write, create mkdir
大量创建云梯目录和文件
大量打印日志
System.out.println System.err.println 可以打印,不要超过10g 可以用,但是不要超过100个
创建过多的自定义Counter 创建过多的自定义Counter
配置过大的内存 "mapred.child.java.opts","-Xmx2000m“ 不要超过3G,超过4G会被云梯Kill
12 Taobao Confidential
Map数 数
Map数过大 Map数过大
Map only的作业,输出文件太小,产生大量小文件 初始化和创建Map的开销比执行还大
Map数太小 Map数太小 单个Map时间过长,频繁推测执行 数据膨胀,内存不足 最佳方法 最佳方法 参数:mapred.map.tasks 从源头就一直保证数据出于合理大小: dfs.block.size=256m/512m
注意点: 注意点:
压缩的Text File,是不可分割的,一个1G的file,只会起一个Map,尽量使用 SequenceFile SequenceFile是可以切分的,所以Map数只会受文件大小影响,和文件数目没有必然联系 基于Splitable的文件格式,map数可以调大,但是不能调小
13 Taobao Confidential
Reduce数 Reduce
Reduce数过大 Reduce数过大
大量的小文件 耗费大量不必要的资源 数据倾斜——不能通过修改参数改变
Reduce数过低 Reduce数过低
最佳方法 参数:mapred.reduce.tasks 临时方案:-1 AutoReduce
注意点 注意点: Key的分布,某种程度上,决定了Reduce数目
14
Taobao Confidential
中间参数
Map端参数 Reduce端参数
? io.sort.mb ? 9e28b8a5f524ccbff1218431bine ? io.sort.factor ? io.sort.spill.percent ? io.sort.record.percent ? 9e28b8a5f524ccbff1218431press.map.output ? 9e28b8a5f524ccbff1218431pressio n.codec
?mapred.
reduce.parallel.copies ?mapred.reduce.copy.backoff ?io.sort.factor ?mapred.job.shuffle.input.buffer.percent ?mapred.job.shuffle.input.buffer.percent ?mapred.job.reduce.input.buffer.percent
9e28b8a5f524ccbff1218431/archives/1470
15 Taobao Confidential
Hive的特点
1. 数据以HDFS文件的形式存储,从而可以很方便的使用外部 文件 2. 元数据存储独立于数据存储之外,从而解耦合元数据和数据, 同样的数据,不同的用户可以有不同的元数据 3. 查询计划被分解为多个MapReduce Job,并按照依赖关系依 次执行,复用了MapReduce的执行架构 4. 灵活的存储格式,通过ObjectInspector将对数据列的访问与 数据的具体存储格式解耦合,同一行数据在同一个数据处理流 中可以以不同的格式出现 5. 基于规则的查询优化器,依次使用规则转换逻辑计划
16 Taobao Confidential
Hive的两个疑虑
Hive很难用,很麻烦
数据用^A分隔,列数固定 Create table,尽量用外部表 Add partition,添加分区
Hive很简单,性能不如自己写MR
Facebook的不停优化和提升 经典场景的优化
17
Taobao Confidential
Hive的优点和长处
95%的Facebook任务由Hive写成,开发周期通常十分 钟 Hive的所有执行,最终是转换为MapReduce Hive的长处,在于数据
…… 此处隐藏:5991字,全部文档内容请下载后查看。喜欢就下载吧 ……
相关推荐:
- [基础教育]2016-2022年中国钢芯铝绞线市场现状调
- [基础教育]语文部编版初一语文下册练习题 句式变
- [基础教育]南京继续教育参考答案--深入学习贯彻习
- [基础教育]国旗下讲话稿——珍惜时间好读书
- [基础教育]北师大版六年级数学下册圆锥的体积教学
- [基础教育]人教版-音乐-四年级下册-四年级下册音
- [基础教育]乔布斯2019年斯坦福大学毕业典礼致辞.d
- [基础教育]2015年加油站安全知识竞赛试题及答案
- [基础教育]2020年教师年度考核个人工作总结
- [基础教育]2019年中考历史试题-2019年大庆市初中
- [基础教育]初三仁爱英语第一轮总复习教案
- [基础教育]SG-A094电气配管安装工程隐蔽验收记录
- [基础教育]冀教版小学数学三年级下册第六单元教材
- [基础教育]青岛版(五制)小学科学二年级下册16《制
- [基础教育]2018-2019年初中科学初一中考真卷测试
- [基础教育]幼儿园大班期末简短评语精选
- [基础教育]2018云南临沧公务员考试申论技巧:这样
- [基础教育]学校食堂经营管理方案
- [基础教育]新中国砥砺奋进的七十年原文
- [基础教育]真空泵的选型及常用计算公式
- 高职田径课程教学现状与对策
- 全髋关节置换术在老年股骨颈骨折患者中
- 青人社厅函〔2016〕576号(附件)工资
- cp101-07砂子检验作业指导书 - secret
- 微观经济学 第八章 博弈论 习题
- 2014高考真题(词语运用)汇编及答案
- 2018年人教版七年级语文下册《第三单元
- 苏教版数学四年级上册第一单元试题 - M
- 四川大学新闻与传播考研2000-2010年真
- 浙江万里学院英语专业四年制本科教学计
- 最新2018马年事业祝福语-范文word版(2
- 最全模具行业术语英文翻译
- 皮亚杰的发展心理学理论
- 64篇高考情景式默写 练习题及答案
- 仿写(学生稿)
- 《SQL Server数据库技术》试卷A
- 第七章作业答案
- 江苏省赣榆县海头高级中学高中语文必修
- 浙江省2001年10月自考正常人体解剖学答
- 2012英语重点短语




