"HBase_介绍和HBase云存储"分享总结

概述:

此分享包括: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

更多详情参见附件

猜你喜欢

转载自snv.iteye.com/blog/1893863