hbase优化

 
 hdfs的优化: 
 
 设置hdfs中data的存储路径为多路径 ----> 对IO进行了分摊,这样IO优化下,  一台主机上有多个挂载点,
修改hdfs-site.xml中的dfs.data.dir,

设置java垃圾回收时的heap
修改hbase-env.sh中的HBASE_HEAPSIZE=8000   单位是 MB 这里设置虚拟内存是8G ,这个设置需要根据集群和机器特性来反复调试

修改RegionServer与Zookeeper间的连接超时时间
zookeeper.session.timeout=180000   单位是s     如果启动超时 hmaster会挂掉

hbase客户端优化:
1 put积累到一定量才发送请求到服务端
AutoFlush
将HTable的setAutoFlush设为false,可以支持客户端批量更新。即当Put填满客户端flush缓存时,才发送到服务端。
默认是true。
hTable.setAutoFlush(false);

2 Scan Caching
scanner一次缓存多少数据来scan(从服务端一次抓多少数据回来scan)。
默认值是 1,一次只取一条。
scan.setCaching(1000);   测试下

Scan Attribute Selection
scan时建议指定需要的Column Family,减少通信量,否则scan操作默认会返回整个row的所有数据(所有Coulmn Family)
减少了整个IO通讯量。

机架感知:  机架之间通过知道有哪些文件存在,  就是进去小区后有地图,然后找这个房间能快一点。

预分区:
热点:很多数据都去一个地方

wal日志: hlog, 所有操作日志成功失败写删都有,因为这个日志是做灾难恢复用的,这个日志保存这个机器最近的操作,当进行一次大合并后会减少很多。
 当这个日志很大的时候 需要使用这个命令来进行分割:
 hbase org.apache.hadoop.hbase.regionserver.wal.HLog  --split /hbase/WALs/hadoop3,60020,1457256379217-splitting

相关推荐