教学文库网 - 权威文档分享云平台
您的当前位置:首页 > 精品文档 > 基础教育 >

开发和优化高效的Hadoop & Hive 程序

来源:网络收集 时间:2026-09-09
导读: 开发和优化高效的MapReduce key.set(…); value.set(); value.s et(); output.collect(key, output.collect(key, value):使用StringBuilder 不要使用Formatter 不要使用Formatter 不要使用StringBuffer 不要使用StringBuffer 不要介意使用 + 通过Distributed

开发和优化高效的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字,全部文档内容请下载后查看。喜欢就下载吧 ……

开发和优化高效的Hadoop & Hive 程序.doc 将本文的Word文档下载到电脑,方便复制、编辑、收藏和打印
本文链接:https://www.jiaowen.net/wendang/338839.html(转载请注明文章来源)
Copyright © 2020-2025 教文网 版权所有
声明 :本网站尊重并保护知识产权,根据《信息网络传播权保护条例》,如果我们转载的作品侵犯了您的权利,请在一个月内通知我们,我们会及时删除。
客服QQ:78024566 邮箱:78024566@qq.com
苏ICP备19068818号-2
Top
× 游客快捷下载通道(下载后可以自由复制和排版)
VIP包月下载
特价:29 元/月 原价:99元
低至 0.3 元/份 每月下载150
全站内容免费自由复制
VIP包月下载
特价:29 元/月 原价:99元
低至 0.3 元/份 每月下载150
全站内容免费自由复制
注:下载文档有可能出现无法下载或内容有问题,请联系客服协助您处理。
× 常见问题(客服时间:周一到周五 9:30-18:00)