hbase和hive的一些调优心得

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队列中

你可能感兴趣的:(20161120)