▲2013中国数据库大会专题报道
自2010年以来,国内领先的IT专业网站IT168联合旗下ITPUB、ChinaUnix技术社区已经连续举办了三届数据库技术大会,每届大会超过千人规模,云集了国内技术水平最高的数据架构师、DBA、数据库开发工程师、研发总监、IT经理等,是目前国内最受欢迎的数据库技术盛会。
▲阿里数据平台开发工程师,HBase社区Committer:天梧(沈春辉)
HBase – Hadoop Database,是一个高可靠性、高性能、面向列、可伸缩的分布式存储系统,利用HBase技术可在廉价PC Server上搭建起大规模结构化存储集群。
特点:海量数据(TB以上)、很高的随机写能力、在海量数据中实现高效的读取、很好的伸缩能力、强一致性、能够同时处理结构化和非结构化的数据、动态列、不需要复杂的查询需求包括:SQL、事物、Join、多维索引等。
HBase的版本发展:
2007.4 第一个版本(HVASE-287 Mike Cafarella)
2010.10 0.89(Facebook的生产版本 based on)
2011.4 0.90.2(阿里HBASE的第一个版本 based on)
2012.1 0.92(Adds 安全,协处理器,HFile V2,分布式log-Splitting)
2012.5 0.94(Performance Release),目前是主流版本。
2013.4 0.95(0.96的预发版,Adds protobuf,Table Snapshot,PrefixTreeCompression等等)
Coming 0.96
HBase在阿里的发展:
2011.3月开始研究
2011.5月上线第一个应用
截止目前:以基于0.94的阿里HBase版本为主、稳定性达到在线应用的城池标准之上、近百个业务,特点多样化。
国内外应用发展HBase的公司:
Cloudera、Hortonworks、Salesforce等
faceboook、Yahoo、eBay、Twitter、Pinterest、Line等
Intel、IBM等
阿里巴巴、华为、小米、360等。
实践与改进--Bucket Cache(Allocate Block)
1、将整个逻辑上的存储块切割成一个个的Bucket。2、每一个Bucket都有相同的固定的容量,e.g.2MB as default;3、每一个bucket都拥有一个size tag,cache这个size以内的Block。4、对于完全空闲的Bucket,它的size tag可以被重新指定。5、每一个bucket与物理存储的位置有固定的映射关系,根据Block在Bucket中的偏移,则就可以计算出其在物理存储中的偏移。
实践与改进--优化Java的GC麻烦
1、Concurrent mode failure
原因:old区要分配内存了,但是old区空间不够,而此时CMS正在运行中
解决:降低YGC频率,降低CMS GC触发时机(降低 CMSInitiatingOccupancyFraction的值)
2、Promotion Failed(发生很多)
原因:old区要分配内存了,但是找不到空间分配,却还没达到CMS的触发值。
heap碎片+YGC晋升对象(Block,Memstore Chunk)过大
解决:聚合小数据:开启msalab(注意Region数目)
HBase自己管理(重用)内存对象:Bucket Cache(HBASE-7404)(使用Byte buffer作为IOEngine的存储介质)、Chunk Pool(HBASE-8163)。
YGC停顿过长
原因1:Young区活对象数目过多,old区脏页数目过多
原因2:MemStore中的Keyvalueset,开启WAL压缩后的字典map
解决:1、降低young区大小。2、减小-XX:Maxcache/ChunkPool,减少晋升对象,减少拷贝时间。
实践与改进--更高的服务可用性
服务单点
▲更多优化
HBase是Google Bigtable的开源实现,类似Google Bigtable利用GFS作为其文件存储系统,HBase利用Hadoop HDFS作为其文件存储系统;Google运行MapReduce来处理Bigtable中的海量数据,HBase同样利用Hadoop MapReduce来处理HBase中的海量数据;Google Bigtable利用 Chubby作为协同服务,HBase利用Zookeeper作为对应。
hbase是bigtable的开源山寨版本。是建立的hdfs之上,提供高可靠性、高性能、列存储、可伸缩、实时读写的数据库系统。
它介于nosql和RDBMS之间,仅能通过主键(row key)和主键的range来检索数据,仅支持单行事务(可通过hive支持来实现多表join等复杂操作)。主要用来存储非结构化和半结构化的松散数据。
与hadoop一样,Hbase目标主要依靠横向扩展,通过不断增加廉价的商用服务器,来增加计算和存储能力。
企业面临以下问题时,可以考虑选择HBase。如数据量急剧增加,需要TB级甚至PB级的在线服务;数据量增长速度快,对水平扩展能力有需求,前期少量投入,随着数据量的不断增加,后期可以不断追加;只是简单的kv读写,要求响应延时低;要求强一致性;每秒上万的写入,并且需要批量读取,大量的随机读取,需要大吞吐量;应用程序不断变更,导致schema多变;最后一个则是整个平台是一个Java平台,需要良好的Java接口等等。而HBase无疑很好地满足了这些特点。
Copyright © QY Network Company Ltd. All Rights Reserved. 2003-2018 群英 版权所有 茂名市群英网络有限公司
增值电信经营许可证 : B1.B2-20140078 粤ICP备09006778号-36 粤公网安备 44090202000006号 粤工商备P091701000595