您的位置:首页 > 其它

hbase和hive的一些调优心得

2016-11-20 16:01 176 查看
Hive优化:

1、开启limit,防止过多的数据查询造成时延

2、开启严格模式,禁止三种模式的查询(查询全部分区而没有where限制、使用order by查询而没有limit限制,表联结使用on以限制笛卡儿积的查询)

3、合理的设置map reduce的个数,不能过多或者过少

4、使用本地模式,对于一些数据量小的查询,减少开启job的时间

5、使用map端jion,将数据量小的表,放在join的左边,直接加入内存

6、推测执行,这是对MR的优化,防止出现木桶效应

7、设置并行度,让一些不相关的stage能够并行运行,加速任务的完成

8、JVM重用,通过在配置文件中设置一些参数,来配置某些task的stage重用JVM,减少任务的开启时间

9、建立索引,加快查询

10、调整动态分区的数量,尽量高,不能太高,1000个左右最好

11、设置中间和reduce结果进行压缩,减少占用空间

HBase优化:

1、hbase查询优化

1> 设置scan缓存,定义服务端到客户端的数据条数

2> 显示指定查询列,避免太多的数据传输造成网络压力

3 >设置过滤,只查询需要的数据,比如行键

4 >使用HTablePool,解决HTable线程不安全的情况

5 >关闭ResultScanner,保证连接不会一直占用
2、hbase写入优化

1 >关闭WAL,避免每次写入数据都要先写入日志文件

2 >关闭AutoFlush,避免用户每次提交数据都直接发送到了服务器端,可以在客户端进行缓存

3 >预创建Region,使用自带的分区工具或者自定义分区算法都行

4 >延迟日志flush的时间,默认值为1秒,可以增大该值,将数据在内存中少留一会,较少WAL日志到HDFS的次数

5 >使用批量写,通过put方法,指定多个行键,批量写入
3、hbase配置参数优化

1 >设置RegionServer的handler数量,默认为10,适当的增大,可以提高服务端同时接收请求的线程数量,一般为10 的整数倍

2 >合理的设置MemStore的上下限

3 >调整影响合并的文件数,就是调整触发StoreFile进行合并的文件数量

4 >合理的设置MemStore的flush因子,也就是触发memstore进行flush的内存大小

5 >调整zookeeper的会话时间,避免HMaster察觉某个RS宕机的时间太长
4、表设计优化

1 >开启布隆过滤器

2 >调整列簇块的大小,也就是HFile的大小

3 >设置列簇的最大版本数,避免一些更新非常频繁的应用效率低下

4 >设置TTL,让过期的数据自动删除

5 >设置In Memory属性,就放在In Memory队列中
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  hive hbase 性能调优