基于hbase的实时计算框架prom(20111114)

2,668 views

Published on

基于hbase的实时计算框架prom,支持对静态数据的多维度计算汇总。对hbase改造,支持本地计算

Published in: Technology
0 Comments
7 Likes
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total views
2,668
On SlideShare
0
From Embeds
0
Number of Embeds
4
Actions
Shares
0
Downloads
62
Comments
0
Likes
7
Embeds 0
No embeds

No notes for slide

基于hbase的实时计算框架prom(20111114)

  1. 1. prom- 实时计算架构 北疯 淘宝数据平台与产品部 -edp
  2. 2. 产品 <ul><li>数据魔方全属性查询 2010.12~ </li></ul><ul><li>淘词 2011.6~ </li></ul><ul><li>淘宝指数 ( 公测 ) shu.taobao.com </li></ul>
  3. 3. prom 特点 <ul><li>多维度 </li></ul><ul><li>实时性 / 性能 </li></ul><ul><li>无 join </li></ul><ul><li>计算规则自定义 </li></ul><ul><li>低成本 </li></ul>
  4. 4. 考虑因素 <ul><li>数据 </li></ul><ul><li>储存 </li></ul><ul><li>计算 </li></ul>
  5. 5. 数据特征 <ul><li>T 级数据量 </li></ul><ul><li>百万级记录实时计算分析 </li></ul><ul><li>每天新增 100G 数据 </li></ul><ul><li>数据不修改 </li></ul>
  6. 6. DB 选型 <ul><li>海量数据 </li></ul><ul><li>查询快,不因数据量而改变 </li></ul><ul><li>易扩容,避免分库分表 </li></ul><ul><li>高可用 </li></ul><ul><li>灵活的数据模型 </li></ul><ul><li>成本低,钱 & 精力 </li></ul>
  7. 7. 技术要点 <ul><li>倒排索引 </li></ul><ul><li>HBbase 本地计算 </li></ul><ul><li>明细数据冗余 </li></ul>
  8. 8. 表无 join 设计 <ul><li>NoSQL </li></ul><ul><li>一张表,两列族 </li></ul><ul><li>冗余 </li></ul><ul><li>数据自动扩容,无需 DBA </li></ul>
  9. 9. 数据格式 数据格式详情
  10. 10. 角色 <ul><li>HBase 端 </li></ul><ul><ul><li>存储数据, 本地计算 </li></ul></ul><ul><ul><li>有状态,有限扩容 </li></ul></ul><ul><li>Server 端 </li></ul><ul><ul><li>http 服务, 求交 ,缓存 </li></ul></ul><ul><ul><li>无状态,无线扩展 </li></ul></ul>
  11. 11. 拓扑图 云梯 server server server Hbase Hbase Hbase ……
  12. 12. 计算流程 rowkey: 商务定位 [0,1] regionserver 求 SUM(alipay) 属性 属性值 笔记本尺寸 13 寸 笔记本定位 商务定位 查索引 节点 1 1, 2, 3, 4, 5, 6, 7, 8, 9 节点 2 1, 2, 4, 5, 6, 7 节点 2 1, 2, 4 , 6, 7 本地 SUM 运算( Hbase 扩展 ) 汇总计算 写入缓存
  13. 13. HBase 本地计算 <ul><li>概念: HBase 的存储过程 ? </li></ul><ul><li>利用 HBase 做分布式实时计算 </li></ul><ul><li>优点: </li></ul><ul><ul><li>降低网络的通信量 </li></ul></ul><ul><ul><li>数据安全 </li></ul></ul><ul><ul><li>提高 HBase 集群机器的资源利用率 </li></ul></ul><ul><ul><li>减少响应时间和提高吞吐量 </li></ul></ul>
  14. 14. HBase 本地计算改造 <ul><li>1 、继承 HRegionServer , HRegionInterface ,定义自己的 RegionServer 类和 RegionInterface 接口。 </li></ul><ul><li>2 、继承 Get ,实现 Writable 接口的自定义 Get 类 (Put 同理 ) </li></ul><ul><li>3 、继承 Result ,实现 Writable 接口的自定义 Result 类 </li></ul><ul><li>4 、 region 端启动时实例化自定义的 RegionServer 对象, client 端通过自定义的 RegionInterface 接口做反射代理。 </li></ul>
  15. 15. HBase 本地计算注意点 <ul><li>Writable 接口的 write 、 readFields 方法序列化和反序列化要完全对应 ( 出现 bug 的主要原因 ) </li></ul><ul><li>基于最小 rowkey 定位 regionServer 。 </li></ul><ul><li>避免相对路径 </li></ul><ul><li>HBase region 端参数可变性 </li></ul>
  16. 16. 数据难点 <ul><li>单条数据过大 ( 上 G) </li></ul><ul><ul><li>- 添加中间表保存取模数,拆分大数据 </li></ul></ul><ul><li>非定长数据 </li></ul><ul><ul><li>变长不明显:转成定长 -> 牺牲空间 </li></ul></ul><ul><ul><li>变长明显:分隔符 -> 性能低,不稳定 </li></ul></ul><ul><li>没有 id 的数据记录 (query 记录 ) </li></ul><ul><ul><li>每天自增 id ,多天归并抛弃 id </li></ul></ul>
  17. 17. 实时计算平台化难点 <ul><li>数据冗余难以控制 </li></ul><ul><li>数据多样性,通用性 VS 性能 </li></ul><ul><li>自定义计算规则 </li></ul><ul><li>和 hadoop 离线计算平台打通 </li></ul>
  18. 18. 提高性能的几个点 <ul><li>减少随机读 </li></ul><ul><li>不做 join </li></ul><ul><li>数据定长、 byte[] </li></ul><ul><li>减少网络传输量 </li></ul><ul><li>合理的缓存 </li></ul><ul><li>更大的内存 </li></ul>
  19. 19. Q&A <ul><li>thanks </li></ul>blog : www.yiihsia.com weibo : http://weibo.com/neihan e-mail : [email_address]

×