- 1. 介绍
- 2. HBASE定位HBASE是存储
基于HDFS
实时随机读写
- 3. HBASE特性线性扩展
行操作的强一致性
自动分表
支持MapReduce
Java,Thrift,REST-ful接口
- 4. HBASE基本性能参数3台RegionServer.每台8G内存,8核
1亿行
Row/s
MB/sRow/s
Per nodeBigTable Row/s
per node随机写1478914.78949308850随机写(noLog)2218022.18073938850随机读19961.9966651212顺序读1067810.67835594425
- 5. 目录HBASE模型
架构设计
使用技巧
运维技巧
测试分析
- 6. HBASE模型
- 7. Hbase数据模型Table
Region
ColumnFamily
Row
Column
Version
ValueCELL
- 8. HBASE操作Put
Delete
原子操作
WAL
Scan
Get
Filter
Cache/Batch
批量操作
行锁
- 9. Hbase架构设计
- 10. 总体结构Master
Region之上的操作
Put/Get不经过Master
RegionServer
Region之下的操作
HDFS
HFile
HLog
ZooKeeper
状态信息
- 11. RegionServer结构
- 12. HFile结构DataBlock
存储Key-Value
MetaBlock(可选)
存储BloomFilter
DataBlockIndex
Key到Block Offset
Read
占用内存,加载缓慢
Write
- 13. Hfile性能测试nonegzlzoWrite207182388555147Full Scan4143694937100000Random Seek600989956Random Short Scan122412556825655
- 14. 存储分布寻找RegionServer
ZooKeeper
-ROOT-(单Region)
.META.
用户表
- 15. Put/Get操作PUT
DELETE
GET
SCAN
- 16. Region操作Flush MemStore
Compact
Major Compact
Split
- 17. 使用技巧
- 18. Schema设计Column Family的数量
最好为1
Key的设计
避免单调递增
最小化
最小化Column
- 19. Schema设计Column Family的数量
最好为1
Key的设计
避免单调递增
最小化
最小化Column
- 20. Schema设计Column Family的数量
最好为1
Key的设计
避免单调递增
最小化
最小化Column
- 21. MapReduce结合Mapper
Region数=Mapper数
Reducer
Region数=Reducer数
Reducer写Hfile,再 BulkLoad
Hive/Pig
- 22. 建立索引单列索引
组合索引
Join?
Key <=> Kind:IDIndexKeyColumn:ValueKey…IndexKeyColumn:Value/Column:ValueKey…单列索引组合索引
- 23. 开发调优Table属性
BlockSize
BloomFilter
BlockCache
InMemory
尽可能使用Bulk Load
Put使用客户端Cache
Scan使用Cache/Batch
- 24. 运维技巧
- 25. HBASE 部署Hadoop版本
Hadoop 0.20.x
Append补丁
ZooKeeper
Metric
内存
RegionServer 12GB
MemStore <=40%
HFile DataIndex
BlockCache <=20%
Master 4GB
ZooKeeper 1GB
- 26. Region管理预创建Region
Region的大小
hbase.hregion.max.filesize=256MB,1GB,4GB
手动Split,交错负载
Region合并
hbase.hstore.compactionThreshold=3
hbase.hstore.blockingStoreFiles=7(阻塞,超时)
hbase.hstore.compaction.max=10
hbase.hregion.majorcompaction=86400,0
MemStore Flush
hbase.regionserver.global.memstore.upperLimit
hbase.regionserver.global.memstore.lowerLimit
- 27. 运维调优Java GC
JVM GC调整(ParNewGC+CMS)
Full GC-10s/GB
MemStore本地分配(2MB,减少碎片)
LZO压缩
压缩单位为Block
提高性能
并发数调整
hbase.regionserver.handler.count
Cache设置
hfile.block.cache.size
- 28. 测试分析
- 29. 随机Get测试Get波动不是很大
- 30. Put测试Put有波动
Region操作导致阻塞
- 31. Put测试Client重试波动
HLog拖慢速度
Split波动
Compact波动