| |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
-> 大数据 -> hive中的优化,只涉及参数 -> 正文阅读 |
|
[大数据]hive中的优化,只涉及参数 |
目录 一、大小表join开启MapJoin参数设置 (1)设置自动选择Mapjoin set hive.auto.convert.join = true; 默认为true (2)大表小表的阈值设置(默认25M一下认为是小表) set hive.mapjoin.smalltable.filesize=25000000; (3)小表在前 left join 大表在后; 二、group by的优化并不是所有的聚合操作都需要在Reduce端完成,很多聚合操作都可以先在Map端进行部分聚合,最后在Reduce端得出最终结果。 开启Map端聚合参数设置 (1)是否在Map端进行聚合,默认为True set hive.map.aggr = true (2)在Map端进行聚合操作的条目数目 set hive.groupby.mapaggr.checkinterval = 100000 (3)有数据倾斜的时候进行负载均衡(默认是false) set hive.groupby.skewindata = true 三、小文件进行合并(1)在map执行前合并小文件,减少map数:CombineHiveInputFormat具有对小文件进行合并的功能(系统默认的格式)。HiveInputFormat没有对小文件合并功能。 set hive.input.format= org.apache.hadoop.hive.ql.io.CombineHiveInputFormat; (2)在Map-Reduce的任务结束时合并小文件的设置: 在map-only任务结束时合并小文件,默认true SET hive.merge.mapfiles = true; 在map-reduce任务结束时合并小文件,默认false SET hive.merge.mapredfiles = true; 合并文件的大小,默认256M SET hive.merge.size.per.task = 268435456; 当输出文件的平均大小小于该值时,启动一个独立的map-reduce任务进行文件merge SET hive.merge.smallfiles.avgsize = 16777216; 当输出文件的平均大小小于该值时,启动一个独立的map-reduce任务进行文件merge 四、设置合理的reduce个数1)调整reduce个数方法一 (1)每个Reduce处理的数据量默认是256MB hive.exec.reducers.bytes.per.reducer=256000000 (2)每个任务最大的reduce数,默认为1009 hive.exec.reducers.max=1009 (3)计算reducer数的公式 N=min(参数2,总输入数据量/参数1) 2)调整reduce个数方法二 在hadoop的mapred-default.xml文件中修改 设置每个job的Reduce个数 set mapreduce.job.reduces = 15; 五.让复杂文件增加map数增加map的方法为: 根据computeSliteSize(Math.max(minSize,Math.min(maxSize,blocksize)))=blocksize=128M公式,调整maxSize最大值。让maxSize最大值低于blocksize就可以增加map的个数 设置如下:set mapreduce.input.fileinputformat.split.maxsize=100; 六、并行执行set hive.exec.parallel=true;????????????? //打开任务并行执行 ????????set hive.exec.parallel.thread.number=16;? //同一个sql允许最大并行度,默认为8 七、JVM重用使用场景:对于很难避免小文件的场景或task特别多的场景,这类场景大多数执行时间都很短 ?set? mapreduce.job.jvm.numtasks=10 JVM重用可以使得JVM实例在同一个job中重新使用N次 这个功能的缺点是,开启JVM重用将一直占用使用到的task插槽,以便进行重用,直到任务完成后才能释放 |
|
|
上一篇文章 下一篇文章 查看所有文章 |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 | -2024/11/24 2:42:57- |
|
网站联系: qq:121756557 email:121756557@qq.com IT数码 |