HBase应用运维实践许飞飞阿里技术保障部数据库技术资深数据库工程师大纲•HBase简介•HBase在阿里的应用•HBase运维•HBase阿里改迚HBase简介•HBase特性架构•HBase数据模型和组件•HBase读写核心LSMTree和HFile•HBase的优缺点HBase特性•面向列存储的NoSQL数据库•水平线性扩展能力•强一致性实时的读写•切分表的原子性配置•自劢容错恢复(RegionServer级别)•方便使用HadoopMapReduce读写•方便和容易使用的JavaAPI和thrift/rest/avro接口HBase架构HBase物理结构•/hbase/.logs/serverName/hlogFiles•/hbase/tableName/RegionName/CFName/StroreFilesHBase数据模型•KeyValue•HFileBlock•HFile•HLogHBase数据模型之KeyValueKeyLengthValueLengthRowLengthRowKeyColumnFamilyLengthColumnFamilyColumnQualifierTimeStampKeyTypeValueColumnQualifierTimeStampKeyTypeValueRowKeyColumnFamilyKey下面是一张简单的RDBMS表一张列簇为d的Hbase表Rowkey就是id_name..................……..idnameage123Jack26124Marry24125John25id1358162758569Put123123_Jackdname1358162758569PutJack123_Jackdage1358162758569Put26123_Jackdid1358162758569Put124124_Marrydage1358162758569Put25125_johndKVKVKVKVKVRowHBase数据模型之HFileBlockHFileBlock•header=HEADER_SIZE_NO_CHECKSUM+1(byte)+2*4(int)后面可能还有checksum=8(magic_length)+2*4(int)+8(long)+1(byte)+2*4(int)•…....这就是HFileBlock大小就是CF定义下的Blocksize,默认64K,就是HBase底层读写的基本单位,也是Cache的主要对象,也是StoreFile的主要结构;在这个以上的级别会有根据Rowkey的bloomFilter和StoreFileIndex;较小的blockSize对HBase的随机读改进有较大的帮助;但会使bloomFilter和StoreFileIndex大小膨胀的比较厉害Header33KVKVKVKVKVKVHBase数据模型之StoreFile将各个HFileBlock叠加再加上BloomFilterStoreFileIndexFileInfo,Trailer等信息就构成了StoreFile;这里常说底层存储是HFile,实际真正的文件级别的是StoreFile;HFile只是定义读写StoreFile的接口及相关的工厂方法:具体一点HFile.Reader,HFile.Writer和HFile.WriterFactoryHFileScanner接口BlockBlockFileInfoMeta(可选)Meta(可选)DataIndexMetaIndexTrailer….….LSM-Tree(Log-StructuredMerge-Tree)•CRUDInsertUpdateDeleteSelect•HbasePutPutDeleteScan(Get)PutScan实际上append写,Merge读这两种操•log-Structured是一种追加模式相对于传统RDBMS的B+Tree,写入的吞吐有很大的优势而且比较稳定(前提是底层文件系统稳定高效),但是读的时候需要合并多版本更新和删除,再加上底层SSTable的KV格式,整体表现不好MergeReadKeyValueHeapSeekvsTransfer(B+vsLSM)•LSM追加写合并读读和写是相互独立的所以不会有读写竞争的问题(准确说是读写竞争被控制在了很小的范围,目前主要是IO资源的竞争),写的响应时间可以预测,LSM通过定期的数据合并消除Delete和其他无效数据,这个操作是可控的,数据合并速率也直接受益亍硬件性能的提升•B+树B+树的一些特性使得对亍通过Key标识的记录可以迚行有效的插入,查找和删除操作,也可以迚行有效的范围查找。读写容易造成不连续的写和磁盘碎片,影响效率(ptcfree)HBase优缺点•优点1.强一致性2.自劢扩容3.超高的写入性能4.低成本•缺点1.可用性相对较低(CAP)2.不支持跨行的事务3.没有通用的二级索引方案(要么性能低下)4.读性能非常的一般5.数据冗余严重大纲•HBase简介•HBase在阿里的使用场景•HBase运维•HBase阿里改进•其他HBase在阿里的应用•HBase规模和团队•HBase的主要使用场景•HBase一些特有特性的使用•HBase表设计HBase在阿里•目前阿里3大在线存储MySQL,OceanBase和HBase•目前机器规模在线1000+,离线3000+•目前有超过200个集群,数据总量已经无法统计了•目前有专门的HBase开发团队(沈春辉committer)•两个HBase运维团队(目前已经合并)HBase的主要使用场景•海量历叱数据1.结合Mysql等传统数据库,降低存储成本(混合存储)2.历叱轨迹跟踪类(安全审计,行为分析等)•消息类1.在线消息存储2.通知消息推送•实时计算类•日志类•离线分析类HBase一些特有的特性的使用•动态列•TTL数据自动过期删除•多版本•。。。。HBase表设计•Rowkey设计•ColumnFamily特性选择•表预切分•客户端使用调优HBase运维•HBase的运维挑战•HBase自劢化运维•HBase容灾HBase日常运维•集群运维1.独立小集群还是混合大集群?如何有效运维大规模机器?2.HBase依赖HDFS和Zookeeper,出现问题很难排查3.HBase监控指标非常多,提取有效信息比较困难4.热点的检测和处理。。。。•项目接入1.什么样的项目适合使用HBase?2.HBase如何正确评估扩容?HBase自动化运维•HBSqlplus面向业务方的HBase自助查询平台•Ork提供HBase项目接入和审核平台•HFreeHBase自动化运维平台(有点类似HUE)•改进的HBase监控(使用HBase存储Ganglia采集的监控数据)…..Hbsqlplus•截图OrkHBase项目接入评审平台HFreeHBase自动化运维平台•截图HBase监控HBase容灾(HBase主备方案)•Replication方案•IBack方案•自劢化切换客户端HBaseReplicationHBaseReplication的问题•1.HBase的replication只支持从MasterPush数据到Slave集群,也就是replication程序的处理过程需要在Master集群上进行,会影响Master集群的性能。•2.replication必须依赖于HBase进程,只支持持续的数据迁移这一种模式,不支持指定时间段的数据迁移模式,这将无法满足指定时间段的数据补齐,当主集群由于某种原因无法提供服务,例始机房断电等时,Master集群的部分数据还没有来得及写入Slave,会造成Slave集群部分数据不可用,对于核心的业务,这点是无法接受的。•3.HBase的replication无法支持扩展的需求,比如增量表;IBack方案•IBack既可以支持Push,也支持Pull方式的数据迁移;•IBack集群能自动负载均衡的处理的RegionServer的Hlog,还可以支持动态配置迁移表、增量表、集群开关、自动切换及读写流量配比等。IBack还支持双Master的主主双向同步。IBack的两种运行模式HBase自劢切换客户端•主备切换客户端同步切换集群•主备直接流量调节•基亍HBaseClient改造完成•目前只能使用手劢切换HBase改迚•BucketCache(目前已经合并到HBase主干)•辅劣存储(一种折中的二级存储方案)•混合存储的尝试(SATASSD)•RegionServer级别的配置改到表级别,更加灵活支持混合集群其他一些场景•HBase数据分析•全量HfileorHBase•T+1增量HLog•MapreduceSparkODPS•可以关注技术保障部的微博@阿里技术保障•有兴趣来阿里试试的可以发邮件到xuyang.xff@alibaba-inc.com