hbase优化

1.高可用,hbase支持对Hmaster的高可用配置,下面都是在主节点执行的

关闭Hbase集群(没启动,就跳过这步)
bin/stop-hbase.sh

在conf目录下创建backup-masters文件
touch conf/backup-masters

在backup-masters文件中配置高可用Hmaster节点
echo hadoop103 > conf/backup-masters //hadoop是从节点

将整个conf目录scp到其他节点
scp -r conf/ hadoop103:/opt/hbase/
scp -r conf/ hadoop104:/opt/hbase/

打开页面测试查看
http://hadoop102:16010

2.预分区

手动添加预分区
create ‘staff1’,‘info’,‘partition1’,SPLITS => [‘1000’,‘2000’,‘3000’,‘4000’]

生产16进制序列预分区
create ‘staff2’,‘info’,‘partition2’,{NUMERGIONS => 15,SPLITALGO => ‘HexStringSplit’}

按照文件中设置的规则预分区
创建splits.txt文件内容如下
aaaa
bbbb
cccc
dddd
然后执行
create ‘staff3’,‘partition3’,SPLITS_FILE => ‘splits.txt’

使用javaAPI创建预分区
//自定义算法,产生一系列Hash散列值存储在二维数组中
byte[] [] splitKeys = 某个散列值函数
//创建HBaseAdmin实例
HBaseAdmin hAdmin = new HBaseAdmin(HBaseConfiguration.create());
//创建HTableDescriptor实例
HTableDescriptor tableDesc = new HTableDescriptor(tableName);
//通过HTableDescriptor实例和散列值二维数组创建带有预分区的HBase表
hAdmin.createTable(tableDesc,splitKeys);

3.RowKey设计

生成随机数、hash、散列值
如:原本 rowkey 为 1001 的,SHAL后变成,dd2651651132s13…等一串字符

字符串反转
20171234 转成 43217102
这样也可以在一定程度上散列逐步put进来的数据

字符串拼接
20171234_a12w

4.内存优化
一般分配整个可用内存的70%给hbase的java堆,内存一般16-48G

5.基础优化
(1)允许在hdfs的文件中追加内容
hdfs-site.xml,hbase-site.xml
属性:dfs.support.append=true
(2)优化datanode允许的最大文件打开数
hdfs-site.xml
属性:dfs.datanode.max.transfer.threads=4096
(3)优化延迟高的数据操作的等待时间
hdfs-site.xml
dfs.image.transfer.timeout 调大,防止把socket干掉了
(4)优化数据的写入效率
mapred-site.xml
mapreduce.map.output.compress=true
mapreduce.map.output.compress.codec 改为其他压缩方式
(5)设置RPC监听数量
hbase-site.xml
hbase.regionserver.handle.count 适当调整(默认30)
(6)优化HStore文件大小
hbase-site.xml
hbase.hregion.max.filesize
如果运行mr程序,可以减小该值(默认10GB),达到该值,region切分为2
(7)优化hbase客户端缓存
hbase-site.xml
hbase.client.write.buffer
增大该值可以减小RPC调用次数,一般设定该值,以达到减少RPC次数母的
(8)指定scan.next扫描HBase所获取的行数
hbase-site.xml
hbase.client.scanner.caching
用于指定scan.next方法获取的默认行数,值越大,消耗内存越大
(9)flush,compact,split机制
当MemStore达到阈值,将MemStore中的数据Flush进Storefile;compact机制则是把flush
出来的小文件合并成大的Storefile文件,split则是当Region达到阈值,会把过大的Region一分为二
128M是MemStore的默认阈值
hbase.hregion.memstore.flush.size:134217728

hbase.regionserver.global.memstore.upperLimit:0.4
hbase.regionserver.global.memstore.lowerLimit:0.38

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值