• 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波动