




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
理解并熟记调优Hive方法理解并熟记调优Hive存储方法理解并熟记调优HiveQL方法
本任务以“学生信息系统”项目为实操载体,完成理解Hive参数调优的作用,能熟练调优常见的提升Hive性能的参数,熟记参数项及参数值等学习目标。任务1调优Hive参数Hive参数调优本任务实施以“学生信息系统”项目为实操载体,依次完成配置本地模式、配置strict模式、配置动态分区、配置并行执行、配置Fetch抓取和配置合并文件等操作,最终熟练掌握Hive参数调优方法。任务1调优Hive参数8.1.1
配置本地模式任务1调优Hive参数在大多数情况下,HadoopJob须使用分布式执行的方式来处理大数据集,但是当要处理的数据很小时,使用分布式执行的方式处理数据则会增长开销,因为完全分布式模式的启动时间较长,甚至比数据处理时间都长。Hive可以通过设置属性来将数据处理作业自动转换为本地模式,即使用单台机器处理所有的任务,这对于小数据集处理而言可以明显缩短其执行时间。8.1.1
配置本地模式任务1调优Hive参数配置本地模式相关的参数项及描述如下表所示:参数项参数描述默认值hive.exec.mode.local.auto设置是否开启Hive的本地模式falsehive.exec.mode.local.auto.inputbytes.max设置Job输入数据的最大值134217728hive.exec.mode.local.auto.input.files.max设置Job输入文件个数的最大值48.1.1
配置本地模式任务1调优Hive参数若使用Hive客户端临时配置本地模式,命令如下:sethive.exec.mode.local.auto=true;若需要永久配置本地模式,则需要在Hive配置文件中添加如下配置内容:
<property><name>hive.exec.mode.local.auto</name><value>true</value></property>8.1.2配置strict模式任务1调优Hive参数Hive中有严格模式,由参数项hive.mapred.mode控制,默认处于nostrict非严格模式。在严格模式下,主要体现在以下三个方面的限制,第一,对分区表的查询必须指定分区字段;第二,查询语句中ORDERBY必须指定LIMIT;第三,禁止执行笛卡尔积查询。8.1.2配置strict模式任务1调优Hive参数若使用Hive客户端临时配置严格模式,命令如下:sethive.mapred.mode=strict;若需要永久配置严格模式,则需要在Hive配置文件中添加如下配置内容:
<property><name>hive.mapred.mode</name><value>strict</value></property>关闭严格模式:sethive.mapred.mode=nostrict;8.1.3配置动态分区任务1调优Hive参数首先,动态分区插入数据时,将会产生大量小文件,map数据会增加,同时namenode也需要存储更多元数据信息,检索更多小文件。然后,可能引发数据倾斜问题。例如,AB俩表分区列一致,当将A表数据导入到B表,A表中分区很多,则需要复制粘贴修改很多次sql来执行数据插入B表,效率比较低。如果程序员选择使用动态分区方式插入数据到B表以减少自身工作量,则hadoop会生成虚假reduce个数,真实的reduce个数,也就是处理数据reduce节点和分区数一致,其他的reduce都是空跑。如果导入数据极大,redue个数很少,会产生严重的数据倾斜。因此,基于以上原因,如非必须,建议少用动态分区,或者关闭动态分区。8.1.3配置动态分区任务1调优Hive参数配置动态分区相关的参数项及描述如下表所示:参数项参数描述默认值hive.exec.dynamic.partition设置是否开启动态分区功能falsehive.exec.dynamic.partition.mode设置是否允许分区列全部为动态分区stricthive.exec.max.dynamic.partitions设置一个动态分区创建语句可以创建的最大动态分区个数1000hive.exec.max.dynamic.partitions.pernode设置每个mapper或reducer可以创建的最大动态分区个数1008.1.4配置并行执行任务1调优Hive参数Hive在执行复杂HiveQL语句时,会涉及多个任务,默认情况下每个任务时顺序执行的,如果每个任务没有前后依赖关系,那么可以通过并发执行的方式使多个任务同时执行,从而缩短HiveQL语句的执行时间,可以将参数hive.exec.parallel的参数值设置为true开启Hive并行执行。8.1.4配置并行执行任务1调优Hive参数配置并行执行相关的参数项及描述如下表所示:参数项参数描述默认值hive.exec.parallel设置是否开启并行执行功能falsehive.exec.parallel.thread.number设置并行运行的最大值88.1.4配置并行执行任务1调优Hive参数若使用Hive客户端临时配置并行执行,命令如下:sethive.exec.parallel=true;若需要永久配置并行执行,则需要在Hive配置文件中添加如下配置内容:<property><name>hive.exec.parallel</name><value>true</value></property>8.1.5配置Fetch抓取任务1调优Hive参数Fetch抓取是指,Hive中对某些简单查询不必使用MapReduce计算,因为启用MapReduceJob需要更多时间和更多系统开销,配置Fetch抓取相关的参数项及描述如下表所示:参数项参数描述默认值hive.fetch.task.conversion设置是否开启Fetch抓取,有以下三个取值:none:表示关闭Fetchtask优化;minimal:表示在SELECT*、使用分区列过滤、带有LIMIT的语句上执行Fetchtask优化;more:在minimal基础上更加强大,SELECT*外,还可以单独选择列,filter不再局限于分区字段,支持列别名。more8.1.5配置Fetch抓取任务1调优Hive参数若使用Hive客户端临时配置Fetch抓取,命令如下:sethive.fetch.task.conversion=more;若需要永久配置Fetch抓取,则需要在Hive配置文件中添加如下配置内容:<property><name>hive.fetch.task.conversion</name><value>more</value></property>8.1.6配置合并文件任务1调优Hive参数在执行包含MapReduce任务的HiveQL语句时,每个数据文件都会交给一个Map去处理,如果存在多个小数据文件,那么每个小数据文件都将启动一个Map,造成不必要的资源浪费,因此在Map执行之前应该将小数据文件进行合并,合并后的数据文件再根据分片规则进行切分,在Hive中可以通过参数hive.input.format设置Map执行前合并小文件。8.1.6配置合并文件任务1调优Hive参数配置合并文件相关的参数项及描述如下表所示:参数项参数描述默认值hive.input.format设置是否Map执行前合并小文件org.apache.hadoop.hive.ql.io.CombineHiveInputFormathive.merge.mapfiles设置是否合并map-only输出文件truehive.merge.mapredfiles设置是否合并map-reduce端输出文件falsehive.merge.size.per.task设置合并文件的大小256*1000*1000本任务的主要目标是理解为何能从存储及压缩方面调优Hive性能,熟记各文件存储格式区别及各压缩算法区别,能在建表时熟练设置文件存储格式及压缩算法。任务2调优Hive存储Hive存储调优本任务实施依次完成调优文件存储、调优数据压缩等操作,最终熟练掌握Hive存储调优方法。任务2调优Hive存储8.2.1调优文件存储Hive底层数据是以文件的形式存储在Hadoop的HDFS中,不同文件存储格式不仅对存储空间占用的大小有所不同,而且对HiveQL语句的执行性能也有所不同,因此根据实际应用场景选择合理的文件存储格式就变得尤为重要。Hive数据表支持多种类型的文件存储格式存储数据文件,如下表所示:任务2调优Hive存储文件存储格式存储方式自身支持压缩支持分片加载数据方式TextFile行式存储否否LOAD和INSERTSequenceFile列式存储是是INSERTORCFile行列存储是是INSERT8.2.1调优文件存储在实际生产环境中,通常使用ORCFile与Snappy相组合或ORCFile与ZLIB相组合的搭配方式设置Hive表的存储及压缩格式。若需要节省存储空间,对Hive语句执行速度不做太高要求,则使用ORCFile与ZLIB相组合的搭配方式。若需要Hive语句执行效率高效,对存储空间不做要求,则使用ORCFile与Snappy相组合的搭配方式。任务2调优Hive存储8.2.1调优文件存储【例】在创建Hive时指定存储格式为ORCFile并执行压缩格式为Snapp任务2调优Hive存储CREATETABLEstudentdb.class(cnameSTRINGCOMMENT'班级名称',cIDSTRINGCOMMENT'班级编号',majorSTRINGCOMMENT'专业')ROWFORMATDELIMITEDFIELDSTERMINATEDBY'\t'LINESTERMINATEDBY'\n'STOREDASORCTBLPROPERTIES('press'='SNAPPY');8.2.2调优数据压缩1、压缩原因HiveJob最终被转换成MapReduce任务来执行。MapReduceJob属于I/O密集型,即MapReduce的性能瓶颈主要在于网络I/O和磁盘I/O,尤其是在数据Shuffle的过程中,减少数据量的传输会极大提升MapReduce任务的性能。采用数据压缩是减少数据量的一个有效方式,虽然压缩会消耗CPU资源,但是在Hadoop集群中,性能瓶颈不是CPU所承担的计算压力,压缩可以充分利用空闲的CPU。任务2调优Hive存储8.2.2调优数据压缩2、常用压缩算法比较Hive支持的压缩算法包括Gzip、Snappy、LZO和Bzip2,CDH版本默认采用的是Snappy。上述几种压缩算法的对比如表所示。任务2调优Hive存储压缩算法支持拆分Hive自带压缩率压缩/解压缩速度Gzip否是很高比较快LZO是是比较高很快Snappy否是比较高很快Bzip2是否最高慢8.2.2调优数据压缩3、配置压缩Hive提供了两种配置压缩方式:中间数据压缩、最终数据压缩。(1)配置中间数据压缩中间数据压缩,即Hive的中间数据压缩功能,也就是在MapReduce的Shuffle阶段对Map端产生的中间结果数据进行压缩。中间数据压缩相关的参数项及描述如下表所示:任务2调优Hive存储参数项参数描述默认值ermediate设置是否开启中间数据压缩falsepression.codec设置中间数据压缩算法press.DefaultCodec8.2.2调优数据压缩(2)配置最终数据压缩最终压缩算法,顾名思义就是控制最终输出的内容是否压缩。最终数据压缩相关的参数项及描述如下表所示:任务2调优Hive存储参数项参数描述默认值press.output设置是否开启最终数据压缩falsepression.codec设置最终数据压缩算法press.DefaultCodec
本任务的主要目标是理解HiveQL中列裁剪、分区裁剪、MapJoin、GroupBy的调优原理,并能根据实际问题运用到HiveQL查询语句中,以提升Hive分析查询性能。任务3调优HiveQLHiveQL调优本任务实施依次完成配置列裁剪、配置分区裁剪、配置MapJoin、配置GROUPBY和调优表设计等操作,最终熟练掌握HiveQL调优方法。任务3调优HiveQL8.3.1配置列裁剪在利用HiveQL查询数据时,有的任务需要获取表内所有的数据,有的任务只需要读取某些列的数据。当只需要读取部分列时,可以通过列裁剪节省读取开销,中间表存储开销及数据整合开销。配置列裁剪相关的参数项及描述如下表所示:任务3调优HiveQL参数项参数描述默认值hive.optimize.cp设置是否开启Hive的列裁剪true8.3.1配置列裁剪若使用Hive客户端临时配置列裁剪,命令如下:sethive.optimize.cp=true;若需要永久配置列裁剪,则需要在Hive配置文件中添加如下配置内容:<property><name>hive.optimize.cp</name><value>true</value></property>任务3调优HiveQL8.3.2配置分区裁剪在Hive中,可以从多个维度对表进行分区,并且分区可以嵌套。当有需要对目标表的某一个区域内的数据进行分析而不需要涉及其他区域时,可以使用分区裁剪,将目标区域以条件的形式放在HiveQL中。配置分区裁剪相关的参数项及描述如下表所示:任务3调优HiveQL参数项参数描述默认值hive.optimize.pruner设置是否开启Hive的分区裁剪true8.3.2配置分区裁剪若使用Hive客户端临时配置分区裁剪,命令如下:sethive.optimize.pruner=true;若需要永久配置分区裁剪,则需要在Hive配置文件中添加如下配置内容:<property>
<name>hive.optimize.pruner</name><value>true</value></property>任务3调优HiveQL8.3.3配置MapJoinHive支持Join多表连接查询,如内连接、左外连接、右外连接、全外连接、半连接等。Join操作的基本原则是,将小表或子查询放在Join操作符的左边,因为在执行Join操作的Reduce阶段时,Join操作符左边的表会被加载进内存,此外将小表放在Join操作符的左边可以减少发生内存溢出错误的概率。如果一个表足够小,则可以使用MapJoin将其整体读入内存中。Join的操作会在Map阶段完成,即在Map阶段会直接将另外一张表的数据和内存中表的数据进行匹配,而不需要经过Shuffle阶段,这可以在一定程度上节省资源,提高Join操作的效率。任务3调优HiveQL8.3.3配置MapJoin配置分区裁剪相关的参数项及描述如下表所示:任务3调优HiveQL参数项参数描述默认值hive.auto.convert.join设置是否自动使用MapJoin优化truehive.mapjoin.smalltable.filesize设置MapJoin优化的表大小,如果表大小小于该设置值,则其就会被加载进内存中250000008.3.3配置MapJoin若使用Hive客户端临时配置启用MapJoin优化,命令如下:sethive.auto.convert.join=true;若需要永久配置启用MapJoin优化,则需要在Hive配置文件中添加如下配置内容:<property>
<name>hive.auto.convert.join</name><value>true</value></property>任务3调优HiveQL8.3.4配置GROUPBY默认情况下,Map阶段相同Key的数据分发给同一个Reduce,当某个Key数据量过大时就会发生数据倾斜。在进行GROUPBY操作时,并不是所有的聚合操作都只能在Reduce完成,很多聚合操作可以先在Map进行部分聚合,最后在Reduce端得出最终结果。配置聚合相关的参数项及描述如下表所示:任务3调优HiveQL参数项参数描述默认值hive.map.aggr设置是否在Map端进行聚合truehive.groupby.mapaggr.checkinterval设置在map端进行聚合的条目数100000hive.groupby.skewindata设置有数据倾斜时是否进行负载均衡false8.3.4配置GROUPBY若使用Hive客户端临时配置启用聚合优化,命令如下:sethive.map.aggr=true;若需要永久配置聚合优化,则需要在Hive配置文件中添加如下配置内容:<property>
<name>hive.map.aggr</name><value>true</value></property>任务3调优HiveQL8.3.5调优表设计1、优先
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- T-ZSM 0060-2024“领跑者”评价技术要求 微型往复活塞空气压缩机
- 二零二五年度竞业禁止期限及竞业限制解除后的竞业禁止责任及赔偿执行及监督合同
- 二零二五年度金融衍生品合同印花税税率变动与市场创新
- 二零二五年度手房过户二手房交易中介服务合同协议
- 二零二五年度智慧能源合伙经营股权协议书
- 二零二五年度文艺演出宣传推广合作协议
- 2025年度智能债权转让服务合同不可适用借款合同解析
- 2025年度生态鱼塘资源租赁管理合同
- 二零二五年度商铺租赁纠纷解决机制合同
- 二零二五年度跨区域集体合同-XX行业职工劳动条件提升协议
- 《抖音营销教程》课件
- 2025届山东核电校园招聘正式启动笔试参考题库附带答案详解
- 2025年湖南科技职业学院高职单招职业技能测试近5年常考版参考题库含答案解析
- 公路工程标准施工招标文件(2018年版)
- (正式版)SH∕T 3548-2024 石油化工涂料防腐蚀工程施工及验收规范
- (高清版)JTG 3370.1-2018 公路隧道设计规范 第一册 土建工程
- 小学科学冀人版六年级下册全册同步练习含答案
- 酒店前台绩效考核表
- 精神发育迟滞的护理查房
- 粤劳社[2002]246号关于职工在机关事业单位与企业之间流动时社会保险关系处理意见的通知
- 通信防雷与接地系统PPT学习教案
评论
0/150
提交评论