HBase简介与实践分享 剑英
About me 剑英(谭颖亮) 就职于淘宝网 目前负责淘宝数据平台与产品部--基础研发,专注于分布式数据存储计算同步平台的建设
Simple Introduce Yet Another NoSQL Bigtable implementation Primary Contributors: Yahoo!,Facebook,Cloudera
Basic Concepts Table in HBase Example Schema: TableName & Column Family Name ; value is stored in column with version as byte[]; Example Column Family Column Label Column Qualifier CL // Schema name contact // CL firstname lastname nickname email phone bixuan hao lin bluedavy **@gmail 186****** 158******
Basic Concepts Table in HBase 以Region为单位管理region(startKey,endKey); 每个Column Family单独存储:storeFile; 当某个Column Family累积的大小 > 某阈值时,自动分裂成两个Region; 如何找到某行属于哪个region呢? -ROOT- & .META.
Basic Concepts RegionServer Master Region读写操作的场所; 管理Region的分配; 基于zookeeper来保证HA;
HBase Architecture 图来源于: http://goo.gl/d1T3Q
HBase Features 强一致性 水平伸缩 同一行数据的读写只在同一台regionserver上进行; region的自动分裂以及master的balance; 只用增加datanode机器即可增加容量; 只用增加regionserver机器即可增加读写吞吐量;
HBase Features(Cont.) 行事务 Column Oriented + 三维有序 同一行的列的写入是原子的; Column Oriented + 三维有序 SortedMap(RowKey, List(SortedMap(Column, List(Value,Timestamp)) ) rowKey (ASC) + columnLabel(ASC) + Version (DESC) --> value
HBase Features(Cont.) 支持范围查询 高性能随机写 Scan scan=new Scan(Bytes.toBytes("0"), Bytes.toBytes("20")); 高性能随机写 WAL (Write Ahead Log)
HBase Features(Cont.) 和Hadoop无缝集成 Hadoop分析后的结果可直接写入HBase; 存放在HBase的数据可直接通过Hadoop来进行分析。
Why not? just see users and performance HBase能用于Online场景吗?
HBase Users Facebook Trend Micro Adobe Twitter Yahoo! Messages Realtime analytics for Big Data Trend Micro Adobe Twitter Yahoo!
HBase性能 随机写(K: 200 byte V: 1024 byte) region server机器:12块1T的SATA盘7200rpm,No Raid,24G,Xeon5620 2.4GHz,千兆网卡; Java Heap: 12G
HBase性能(Cont.) 随机写(K: 200 byte V: 1024 byte) avg: 3ms,吞吐量:1w tps/rs
HBase性能(Cont.) 10亿key(1T数据量)随机读,12台rs,cache: 4g/台;
HBase性能(Cont.) 之前的场景,cache全命中的状况: avg: <1ms
HBase不支持的 二级索引; sql/join/跨行跨表等RDBMS特性;
HBase适用场景 摘自:HBase @ Facebook The Technology Behind Messages (and more...)
HBase @ Taobao 已上线的online项目 即将上线的online项目 4个,数据量为70T;
我们的HBase 自动的测试体系 more powerful then YCSB!
我们的HBase(Cont.) 运维体系 运行指标; 快速判断集群健康状况; 帮助分析集群性能。
我们的HBase(Cont.) 改进HBase Table Balance Client put bug Compact优化 Master恢复时间过长
我们的HBase(Cont.) 扩展HBase 支持Server端计算 按Group资源隔离 和优先级控制 group by,avg,sum等 按Group资源隔离 和优先级控制
HBase实践经验 合理设计rowKey & Pre-Sharding 避免仅操作集群中的少数几台机器; 根据数据量、region server数合理pre-sharding。
HBase实践经验(Cont.) 容量影响因素 开启压缩 lzo create table ‘t1’,{NAME => ‘cf1’, COMPRESSION => ‘lzo’}
HBase实践经验(Cont.) 写速度关键因素 Table region分布均衡; 单台region server的region数; hbase.regionserver.handler.count hbase.regionserver.global.memstore.upperLimit hbase.hregion.memstore.block.multiplier hbase.hstore.blockingStoreFiles hbase.hregion.max.filesize
HBase实践经验(Cont.) 读速度关键因素 单台Region Server上的Region数; StoreFile数; bloomfilter; in-memory flag; blockcache设置; hfile.block.cache.size;
HBase实践经验(Cont.) 二级索引 合理使用三维有序 More details pls attend 技术沙龙 冗余 离线
Any Questions