首页
学习
活动
专区
圈层
工具
发布
社区首页 >专栏 >大数据集群基本调优总结03

大数据集群基本调优总结03

原创
作者头像
Bob hadoop
修改2021-04-27 10:27:42
修改2021-04-27 10:27:42
7350
举报
文章被收录于专栏:日常杂记日常杂记

一、hive配置优化

今天从新复习下hive,同样是Clouderamanager 的hive的配置页面,进入hive的配置选项

1、hive的仓库目录

cdh集群默认的仓库目录位置,当然可以自己定义。

2、zookeeper服务选择

yarn与hdfs对接的这个

3、权限控制

建议cdh就不用提什么权限控制了,客户端越权操作基本上大家都知道了,反正个人觉得没啥软用。

4、继承权限

启用了hdfs的acl后这里就要启用,这样有一定的权限控制作用。

因为我不是大数据开发,所以基本不会碰数据,只是偶尔的功能测试或者hive程序问题处理,所以下面总结了一些hive的job参数基本都是平时大数据开发的同事总结的,仅供参考。

二、hive job优化

1、解决数据倾斜,负载均衡 如果没有数据倾斜不要加浪费资源,比如groupby

代码语言:javascript
复制
set hive.groupby.skewindata=true;

2、设置reduce最大个数 (reduce端数据量大可以不加,比如最终结果在600g以上,通过 hive.exec.reducers.bytes.per.reducer 限制reduce个数)

代码语言:javascript
复制
set hive.exec.reducers.max=300;

3、job名

代码语言:javascript
复制
set mapreduce.job.name=whx_test;

4、队列名

代码语言:javascript
复制
set mapreduce.job.queuename=ia;

5、cli窗口带scheme

代码语言:javascript
复制
set hive.cli.print.header=true; 

6、map预聚合

代码语言:javascript
复制
set hive.map.aggr=true;

7、map内存

代码语言:javascript
复制
set mapreduce.map.memory.mb=2048;

8、reduce

代码语言:javascript
复制
set mapreduce.reduce.memory.mb=4096;

9、根据map端shuffle输出数据量 判断多大数据量启用一个reduce,而且reduce个数决定输出数据的文件数

代码语言:javascript
复制
set hive.exec.reducers.bytes.per.reducer=2147483648;

10、是否对最终输出数据压缩

代码语言:javascript
复制
set hive.exec.compress.output=true;

11、最终输出数据压缩方式 压缩方式根据需求改变 snappy gz lz4 org.apache.hadoop.io.compress.SnappyCodec

代码语言:javascript
复制
set mapred.output.compression.codec=org.apache.hadoop.io.compress.GzipCodec;

12、最终输出数据压缩类型

代码语言:javascript
复制
set mapred.output.compression.type=BLOCK;

13、中间shuffle数据是否压缩

代码语言:javascript
复制
set hive.exec.compress.intermediate=true;

14、中间shuffle数据压缩方式

代码语言:javascript
复制
set hive.intermediate.compression.codec=org.apache.hadoop.io.compress.SnappyCodec;

15、中间shuffle数据压缩类型

代码语言:javascript
复制
set hive.intermediate.compression.type=BLOCK;

16、在Map-only的任务结束时合并小文件

代码语言:javascript
复制
set hive.merge.mapfiles=true;

17、在Map-Reduce的任务结束时合并小文件

代码语言:javascript
复制
set hive.merge.mapredfiles=true;

18、当输出文件的平均大小小于该值时,启动一个独立的map-reduce任务进行文件merge

代码语言:javascript
复制
set hive.merge.smallfiles.avgsize=134217728;

19、合并文件的大小

代码语言:javascript
复制
set hive.merge.size.per.task=536870912;

20、决定每个map处理的最大文件大小(结合CombineHiveInputFormat可以合并小文件)

代码语言:javascript
复制
set mapred.max.split.size=1073741824;
set mapred.min.split.size.per.node=1073741824;
set mapred.min.split.size.per.rack=1073741824;

21、决定输入格式 合并小文件(或者block)

代码语言:javascript
复制
set hive.input.format=org.apache.hadoop.hive.ql.io.CombineHiveInputFormat;

22、是否支持可切分的CombineInputFormat 合并输入小文件此参数必须加否则不生效

代码语言:javascript
复制
set hive.hadoop.supports.splittable.combineinputformat=true;

23、具体小文件问题参数归类

代码语言:javascript
复制
set hive.merge.mapfiles=true;
set hive.merge.mapredfiles=true;
set hive.merge.size.per.task=1073741824;
set hive.merge.smallfiles.avgsize=1073741824;
set hive.exec.compress.output=true;
set mapred.output.compression.codec=org.apache.hadoop.io.compress.SnappyCodec;
set mapred.output.compression.type=BLOCK;

关于小文件的问题,以前有写过fsimage解析,具体的集群治理操作后续会看时间写出来,大家有兴趣可以留言交流。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 一、hive配置优化
    • 1、hive的仓库目录
    • 2、zookeeper服务选择
    • 3、权限控制
    • 4、继承权限
  • 二、hive job优化
    • 1、解决数据倾斜,负载均衡 如果没有数据倾斜不要加浪费资源,比如groupby
    • 2、设置reduce最大个数 (reduce端数据量大可以不加,比如最终结果在600g以上,通过 hive.exec.reducers.bytes.per.reducer 限制reduce个数)
    • 3、job名
    • 4、队列名
    • 5、cli窗口带scheme
    • 6、map预聚合
    • 7、map内存
    • 8、reduce
    • 9、根据map端shuffle输出数据量 判断多大数据量启用一个reduce,而且reduce个数决定输出数据的文件数
    • 10、是否对最终输出数据压缩
    • 11、最终输出数据压缩方式 压缩方式根据需求改变 snappy gz lz4 org.apache.hadoop.io.compress.SnappyCodec
    • 12、最终输出数据压缩类型
    • 13、中间shuffle数据是否压缩
    • 14、中间shuffle数据压缩方式
    • 15、中间shuffle数据压缩类型
    • 16、在Map-only的任务结束时合并小文件
    • 17、在Map-Reduce的任务结束时合并小文件
    • 18、当输出文件的平均大小小于该值时,启动一个独立的map-reduce任务进行文件merge
    • 19、合并文件的大小
    • 20、决定每个map处理的最大文件大小(结合CombineHiveInputFormat可以合并小文件)
    • 21、决定输入格式 合并小文件(或者block)
    • 22、是否支持可切分的CombineInputFormat 合并输入小文件此参数必须加否则不生效
    • 23、具体小文件问题参数归类
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档