Hbase优化
2015-08-25 19:20
190 查看
1,预分区。因为第一次建表的时候会自动创建一个region分区.如果再倒入数据的话,因为一开始没有数据,不会split切分,这样会对单个region server造成比较大的io开销,所以需要预分区。预分区可以根据热点范围的rowkey来制定分区策略。
2,通过rowkey检索数据的时候,需要制定column,这个比较好理解,和关系型数据库的sql优化一样,select * from table 需要制定查询的column.
3,rowkey长度不要太长,太长会浪费空间。
4,现在HBase并不能很好的处理两个或者三个以上的列族,所以尽量让你的列族数量少一些。目前,flush和compaction操作是针对一个Region。所以当一个列族操作大量数据的时候会引发一个flush。那些不相关的列族也有进行flush操作,尽管他们没有操作多少数据。Compaction操作现在是根据一个列族下的全部文件的数量触发的,而不是根据文件大小触发的。当很多的列族在flush和compaction时,会造成很多没用的I/O负载(要想解决这个问题,需要将flush和compaction操作只针对一个列族)
。
5,Time To Live 可以用该参数设置hbase里面存储的日志的实效时间。
6,major compaction
与minor compaction:
关于major
compaction.1,关闭自动的major
compaction 2手动编程major
compaction.设置成晚上合并
一般不对minor
compaction进行设置修改。
7,对于不太重要的数据写入hbase,可以关闭HLog的写入
8,Memstore实现了写缓存,Blockcache实现了读缓存,如果读比较多的话,可以设置该参数,这个参数是在create表的时候设置的。
2,通过rowkey检索数据的时候,需要制定column,这个比较好理解,和关系型数据库的sql优化一样,select * from table 需要制定查询的column.
3,rowkey长度不要太长,太长会浪费空间。
4,现在HBase并不能很好的处理两个或者三个以上的列族,所以尽量让你的列族数量少一些。目前,flush和compaction操作是针对一个Region。所以当一个列族操作大量数据的时候会引发一个flush。那些不相关的列族也有进行flush操作,尽管他们没有操作多少数据。Compaction操作现在是根据一个列族下的全部文件的数量触发的,而不是根据文件大小触发的。当很多的列族在flush和compaction时,会造成很多没用的I/O负载(要想解决这个问题,需要将flush和compaction操作只针对一个列族)
。
5,Time To Live 可以用该参数设置hbase里面存储的日志的实效时间。
6,major compaction
与minor compaction:
关于major
compaction.1,关闭自动的major
compaction 2手动编程major
compaction.设置成晚上合并
一般不对minor
compaction进行设置修改。
7,对于不太重要的数据写入hbase,可以关闭HLog的写入
8,Memstore实现了写缓存,Blockcache实现了读缓存,如果读比较多的话,可以设置该参数,这个参数是在create表的时候设置的。
相关文章推荐
- ACMer
- UVALive 6657 GCD XOR 异或,因子筛法
- Android SharedPreferences复杂的存储
- 题目1110:小白鼠排队
- AFNetworking2.0源码解析-Multipart
- android代码重构用到的智能化工具
- GUI编程笔记(java)02:java.awt和java.swing包的区别
- main函数递归调用
- 编程之类 数字号码《-》单词之间的转换
- Android编译环境的搭建
- 记录几个Android开发相关的网站
- moments函数
- Eclipse+Maven创建webapp项目<一>
- 关闭mmu和cache
- 单元测试工具Nunit
- 股票价格指数+加权
- 切片A = 切片B
- JAVA的事件监听机制
- 解题报告排队
- The Log:每个程序员都应该知道有关实时数据的统一抽象(1)概念