"HBase_介绍和HBase云存储"分享总结
- - ITeye博客此分享包括:HBase_介绍和HBase云存储的汇总. HBASE基于HDFS存储;
Hbase实时随机读写;
Hbase是线性扩展,自动分表,支持MapReduce
Hbase Client使用HBase的RPC机制与Master和RegionServer进行通信,对于管理类操作,Client与Master进行RPC;对于数据读写类操作,Client与RegionServer进行RPC.
概述:
此分享包括:HBase_介绍和HBase云存储的汇总
汇总点:
HBASE基于HDFS存储; Hbase实时随机读写; Hbase是线性扩展,自动分表,支持MapReduce Hbase Client使用HBase的RPC机制与Master和RegionServer进行通信,对于管理类操作,Client与Master进行RPC;对于数据读写类操作,Client与RegionServer进行RPC。 Client工作过程:从ZooKeeper上获取元数据和ROOT信息;在元数据中查找Region信息;与Region获取数据;缓存元数据相关信息; Hbase的Master非单节点的,利用选举机制保证一个主Master; Hbase的Master在功能上主要负责Table和Region的管理工作; RegionServer主要负责响应用户I/O请求,向HDFS文件系统中读写数据同时向主服务器(Master Server)上报自己的状; HRegion对应了Table中的一个Region,HRegion中由多个HStore组成。每个HStore对应了Table中的一个Column Family的存储; HBase存储的核心Store由两部分组成:一部分是MemStore,另一部分是StoreFiles; MemStore->StoreFile(Compact)->StoreFile->Region Split; Master通过分发遗留HLog,然后RegionServer通过感知HLog并Replay HLog来保障数据不丢失; Hbase的行的写操作是始终是“原子”的,只对一行上“锁”; Hbase适用场景:储海量数据(TB级以上);对大数据集合进行高效的随机访问(主键查询);对于结构化和非结构化的数据存储同时不涉及jion操作; Hbase的Cell为:Row,Column,Version和Value; Hbase的操作:PUT,DELETE,GET和SCAN; Region操作:Flush MemStore,Compact,Major Compact和split; 使用技巧:Column Family的数量最好为1;Key的设计避免单调递增,最小化;最小化Column; MR操作时:Region数=Mapper数;Region数=Reducer数和Reducer写Hfile,再 BulkLoad; Hbase开发调优:尽可能是使用Bulk Load;Put使用客户端Cache和Scan使用Cache/Batch; HBASE部署中内存分配:RegionServer 12GB(MemStore <=40%,HFile DataIndex 和BlockCache <=20%),Master 4GB和ZooKeeper 1GB; 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;
运维调优:
Java GC: JVM GC调整(ParNewGC+CMS) Full GC-10s/GB MemStore本地分配(2MB,减少碎片) LZO压缩: 压缩单位为Block 提高性能 并发数调整: hbase.regionserver.handler.count Cache设置: hfile.block.cache.size
更多详情参见附件