阿里HBase业务设计实践.

上传人:我** 文档编号:117886217 上传时间:2019-12-11 格式:PPTX 页数:34 大小:1.39MB
返回 下载 相关 举报
阿里HBase业务设计实践._第1页
第1页 / 共34页
阿里HBase业务设计实践._第2页
第2页 / 共34页
阿里HBase业务设计实践._第3页
第3页 / 共34页
阿里HBase业务设计实践._第4页
第4页 / 共34页
阿里HBase业务设计实践._第5页
第5页 / 共34页
点击查看更多>>
资源描述

《阿里HBase业务设计实践.》由会员分享,可在线阅读,更多相关《阿里HBase业务设计实践.(34页珍藏版)》请在金锄头文库上搜索。

1、阿里HBase业务设计实践 穆公(朱金清 suinking) 微博:淘穆公 2013.4.21 大纲 简介 数据模型 业务设计 产品线使用建议 监控 总结 简介 Nosql: column-based storage system Large volume of data High write (esp. random ) through-put / Good ramdon read performance Range query Row-base transaction Auto-sharding Compare to Bigtable Hbase Based on Hadoop HDFS

2、or other HDFS Bigtable based on GFS Large volume 三层索引结构 Region的大小默认最大是256M 按照平均128M算; 假设:一个rowkey 1KB 1. Root table: 128M=128*1024KB 即27 * 210 = 217 bucket 2. Meta table: (217)2 = 2 34 bucket 3. 记录数:251 条记录 其它特征 三层B+树的扩展LSMTree1 适合于范围查询 Rowkey的字母顺序来排序(byte数组存储) Row-base 事务级别仅限于rowkey级别 Auto-sharding

3、 Region的自动split/move 问题:牺牲了CAP中的? 1 Jim Gray and Franco Putzolu, The Five Minute Rule for Trading Memory for Disk Accesses and The 10 Byte Rule for Trading Memory for CPU Time, Proceedings of the 1987 ACM SIGMOD Conference, pp 395-398. 已有适合的使用场景 海量数据写入 历史数据 批量写入 消息类(类似Facebook的message) 消息类 Schema-fr

4、ee 业务监控 LOG-Append类的业务 全网HSF日志 全网每天上百亿 大表的复杂/多维度索引 检索索引,主数据在mysql 分析类 大批量读取 HBase+缓存TAIR 现有集群状况 集群名称TPS(avg ) 11.11最高QPS(a vg) 11.11最 高 版本 业务7k1.8w1.6w3.4w0.90.2 业务1.8w2w1.2w1.4w 业务7k3w2w5w 业务1k2k2k6k 业务2.5w5w2w6w 业务10w25w(最高50w)1w2w0.94 业务4w20w (压测)2k3w(压测)0.94 业务每天2- 3kw -RT在 ms级别 -0.90.2- 定制版 业务1

5、0w25w15w100w0.94 业务3k1.4w3k6k0.94 业务1.5w2w6k8k0.94 与MYSQL的对比 场景HBase优点HBase缺点MySQL优点MySQL缺点 业务表使用使用简单,一 张表即可 不过没有SQL有SQL;分库 分表,灵活 分库后 更新模式插入多的适合RKupdate差DML 二级索引策略需借助索引表强DDL问题 客户端接口灵活自己掌握无标准SQLSQL 写性能非常强顺序写入时瓶 颈在一台rs 较强几千tps/单套 库 读性能较强;支持 scan 依赖内存很强;支持 scan 依赖索引 可扩展性强借助愚公 /datax工具可 动态扩 展 弱 运维方便自己定制

6、不够成熟成熟 DDL时间短;92版 本可以在线 若有索引表, 需要自己填充 Create index 即可 时间长 ; block 读写 稳定性CAPCPAAPC NoSQL使用情况 TAOBAO OTS/HBase BAIDU BAILING/ARMOR/HYPERTABLE(HCE) TENCENT TDB/TSSD FACEBOOK HBASE 大纲 简介 数据模型 业务设计 产品线使用建议 监控 总结 Region Server Region Store memStore StoreFileStoreFile Store Region HDFS Zookeeper cluster Ma

7、ster Region Server Back up Master Back up Master Hbase Client Hbase Client NameNodeDataNode DataNode HDFS client 架构图 客户端 LSM C0树 同一机 器,目 的? LSM C1树 Q 写memstore成功立即返回 读blockcache、memstore、storefile 数据模型 table row row row Column- family column Column- family Column- family column cell cell K V cell ts

8、1 ts2 示例 消息表 表结构: message CF: message col: autoCommit, deviceUuid, status, type :8888/ message对应到RDBMS deviceUuidappidstartTimeexpiredtype 00001cc7d16 2302482b1cfff 35301183 92233706834 66836065 2012.11.212012.12.11系统消息 00001cc7d16 2302482b1cfff 35301183 92233706835 31713740 2012.11.212012.12.11系统消息

9、 表在hdfs的存储 结构 /hbase/Table目录/region目录 Region的具体存储 (/hbase/Table目录 /region目录/CF目录/具体文件) 大纲 简介 数据模型 业务设计 产品线使用建议 监控 总结 业务设计 适合场景 (综合考虑) 表数据量大(至少亿级别以上) 日志append型业务,(比如定期保留10天数据等) 原则上: 能分库分表来用mysql就用mysql来解决 mysql 单表一般500w,能使用mysql的场景 无跨行跨表事务要求 写入量大 (每天千万及以上) 读取量相对少 (读取:写入 = 1/10) 读取场景简单、不经常变化 无正序、逆序的排序

10、要求 类似dw等全量读取,不太合适。 Rowkey不经常更新 (必须先删除再添加) 业务设计 典型的设计 Rowkey非单一ID (单一ID可以用mysql解决) Rowkey为组合性 最终方案: 表名列名/读取写入rowkey无法覆盖的查询 lA scan() scan的时候进行前缀匹配, rowkey中的areaId是必须的 参数,设置startRow limit set()每天定时插入数据,数 据量在1000W,同时删除一个 月前的那一天的数据 业务查询基本上是对于 rowkey的查询,只有在 删除数据的时候,是根 据value中的date来进行的 表名CF属性(一行一个)rowkey的

11、信息 A address latlng date areaID_geohash_companyId 长度:6位数字 + 12位小写字母 + 小于5位数字 前面的6为数字穷举约在4000个左右 表名CF列表(一行一个)rowkey的信息 AInfo (address、latlng) areaID_geohash_companyId 长度:6位数字 + 12位小写字母 + 小于5位数字 前面的6为数字穷举约在4000个左右 适合场景 (综合考虑) 表数据量大(至少亿级别以上) 日志append型业务,(比如定期保留10天数据等) 无跨行跨表事务要求 写入量大 (每天千万及以上) 读取量相对少 (读

12、取:写入 = 1/10) 读取场景简单、不经常变化 无正序、逆序的排序要求 分库分表类似dw等全量读取,不太合适。 Rowkey不经常更新 (否则必须先删除再添加) 业务设计 典型的设计 交互性的应用消息 数据双写,当做索引(类似买卖家) 查找穆公最近一周发布的消息? 查找穆公最近一周发送给马云的消息? 发送给马云的消息? 适合场景 (综合考虑) 表数据量大(至少亿级别以上) 日志append型业务,(比如定期保留10天数据等) 无跨行跨表事务要求 写入量大 (每天千万及以上) 读取量相对少 (读取:写入 = 1/10) 读取场景简单、不经常变化 无正序、逆序的排序要求 分库分表类似dw等全量

13、读取,不太合适。 Rowkey不经常更新 (否则必须先删除再添加) RowkeyColumn Value fromID + timeToid: *;content:* 业务设计 表结构设计 id是订单ID,可以是业务主键 能否覆盖查询: 穆公一个星期内买的商品? 穆公 一个月买的书? RowkeyColumn Value IdvalueString ( 93 fields ) RowkeyColumn Value UId + time + idvalueString (32 fields ) 默认用户订单索引表 适合场景 (综合考虑) 表数据量大(至少亿级别以上) 日志append型业务 无跨

14、行跨表事务要求 写入量大 (每天千万及以上) 读取量相对少 (读取:写入 6CF Rowkey设计:写入要分散;如历史交易订单: biz_order_id做reverse后做rowkey 产品线、客户端使用建议(2) Autoflush参数设置为true;否则极端情况下会丢失数据 Hbase client的重试次数为3次以上。否则会由于split导致region not onle;从而导致写入失败(udc集群出现过)。 hbase.rpc.timeout一次rpc的timeout;默认60秒 hbase.client.pause客户端的一次操作失败,到下次重试之 间的等待时间 hbase.client.retries.number客户端重试的次数 hbase.regionserver.lease.period 客户端租期超时阀值;scan量 大时可以考虑增大

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 高等教育 > 大学课件

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号