Your SlideShare is downloading. ×
0
HBase  原理及应用 刘景龙  [email_address] 2011-08-23
Outline <ul><ul><li>HBase 实现原理 </li></ul></ul><ul><ul><li>HBase 是什么? </li></ul></ul><ul><ul><li>HBase 不是什么! </li></ul></ul...
HBase 实现原理  -  HBase 是什么? <ul><ul><li>分布式大规模存储引擎 </li></ul></ul><ul><ul><li>针对吞吐量进行优化 </li></ul></ul><ul><ul><li>不错的随机读写性能...
HBase feature  (1) <ul><li>强一致性 </li></ul><ul><ul><li>同一行数据的读写只在同一台 regionserver 上进行; </li></ul></ul><ul><li>水平伸缩 </li></u...
HBase feature  (2) s(Cont.) <ul><li>行事务 </li></ul><ul><ul><li>同一行的列的写入是原子的; </li></ul></ul><ul><li>Column Oriented +  三维有序...
HBase feature  (3) t.)
HBase feature  (4) <ul><li>和 Hadoop 无缝集成 </li></ul><ul><ul><li>Hbase 使用 hdfs 作为持久化存储 </li></ul></ul><ul><ul><li>Hadoop 分析后...
HBase 不是什么! <ul><ul><li>不是一个关系型 SQL 数据库! </li></ul></ul><ul><ul><li>没有 join 操作,没有查询引擎,数据没有类型,没有 SQL </li></ul></ul><ul><ul...
数据模型 <ul><ul><li>HBase Table :  一个 分布式 的多维稀疏 Map </li></ul></ul><ul><ul><li>(row * column-family:qualifier * timestamp) ->...
数据模型 <ul><ul><li>Table 和 Region </li></ul></ul><ul><ul><li>Table 中的 row 按 byte 字典序存储 </li></ul></ul><ul><ul><li>按 rowkey 将...
体系结构
体系结构 <ul><li>HMaster </li></ul><ul><ul><li>Region 分配、负载均衡 </li></ul></ul><ul><ul><li>定期扫描 -ROOT- 、 .META. </li></ul></ul><...
数据索引 <ul><ul><li>三层 B+ 树 </li></ul></ul><ul><ul><li>ZooKeeper 的” -ROOT-”znode </li></ul></ul><ul><ul><li>-ROOT- region </l...
数据物理存储 <ul><li>size(rowKey) <= 32KB </li></ul><ul><li>size(column-family) <= 127B </li></ul><ul><li>size(rowKey + column-f...
HBase  性能 <ul><ul><li>测试环境 </li></ul></ul><ul><ul><li>Hbase-0.20.2 、 Hadoop-0.20.1 、 ZooKeeper-3.2.1 、   JVM 6u7 </li></ul...
HBase  性能 <ul><ul><li>测试环境 </li></ul></ul><ul><ul><li>Hbase-0.20.2 、 Hadoop-0.20.1 、 ZooKeeper-3.2.1 、   JVM 6u7 </li></ul...
HBase  性能 <ul><ul><li>测试环境 </li></ul></ul><ul><ul><li>Hbase-0.20.2 、 Hadoop-0.20.1 、 ZooKeeper-3.2.1 、   JVM 6u7 </li></ul...
[email_address] <ul><li>Facebook message  (titan) </li></ul><ul><li>Facebook insight  (puma) </li></ul><ul><li>Facebook me...
<ul><li>Use case 1: Facebook message  (titan) </li></ul>
什么是 message
业务特点
架构
send message
receive message
存储模式
为什么选择  HBase ? <ul><li>具有比 Cassandra 更简洁的一致性模型。 </li></ul><ul><li>对于他们的数据模式具有很好的扩展能力和处理能力。 </li></ul><ul><li>大多数功能能够满足他们的需...
<ul><li>Use case 2 : Facebook insight  (puma) </li></ul>
什么是 puma
什么是 puma <ul><li>实时分析平台 </li></ul><ul><li>Metrics </li></ul><ul><ul><li>count, sum, unique count, average, percentile </li...
Data Freeway System
业务特点
写流程
读流程
适合场景 <ul><li>应用: </li></ul><ul><ul><li>实时分析 </li></ul></ul><ul><ul><li>搜索 </li></ul></ul><ul><ul><li>垃圾检测  </li></ul></ul>
<ul><li>Use case 3 : </li></ul><ul><li>Facebook metrics system (ODS) </li></ul>
Facebook metrics system (ODS)
<ul><li>Q & A </li></ul>
Upcoming SlideShare
Loading in...5
×

Hbase

2,274

Published on

Published in: Technology, News & Politics
0 Comments
5 Likes
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total Views
2,274
On Slideshare
0
From Embeds
0
Number of Embeds
1
Actions
Shares
0
Downloads
140
Comments
0
Likes
5
Embeds 0
No embeds

No notes for slide
  • 概念视图: Table 稀疏:某个特定行关键字下的任意列可以没有值
  • 物理视图: Region 、 Group by Column-family 为了实现数据存储的可扩展性, Table-&gt;Regions 数据不仅在 Table 一级进行分割,在 Region 级以 column-family 为单位进行物理分割。同一 column-family 的数据作为一组,在物理上是相近的,应用设计人员应该将这一特性作为 schema 设计的重要考虑
  • HMaster 的职责: 分配 Region :在启动时分配 region ,在 region 创建、删除、增长、分裂时进行负载均衡 扫描 root/meta :确保 region 在线、删除没有引用的父 region 管理 schema 的修改、在线、离线 Admin :分发管理性的 close 、 flush 、 compact 消息 查看 ZK 中自己的 lease 和 regionserver ,以使自己清楚何时运行修复工作
  • HMaster 的职责: 分配 Region :在启动时分配 region ,在 region 创建、删除、增长、分裂时进行负载均衡 扫描 root/meta :确保 region 在线、删除没有引用的父 region 管理 schema 的修改、在线、离线 Admin :分发管理性的 close 、 flush 、 compact 消息 查看 ZK 中自己的 lease 和 regionserver ,以使自己清楚何时运行修复工作
  • Transcript of "Hbase"

    1. 1. HBase 原理及应用 刘景龙 [email_address] 2011-08-23
    2. 2. Outline <ul><ul><li>HBase 实现原理 </li></ul></ul><ul><ul><li>HBase 是什么? </li></ul></ul><ul><ul><li>HBase 不是什么! </li></ul></ul><ul><ul><li>数据模型、体系结构、实现 </li></ul></ul><ul><ul><li>HBase 性能指标 </li></ul></ul><ul><ul><li>HBase @ facebook </li></ul></ul><ul><ul><li>Facebook message (titan) </li></ul></ul><ul><ul><li>Facebook insight (puma) </li></ul></ul><ul><ul><li>Facebook metrics system (ODS) </li></ul></ul>
    3. 3. HBase 实现原理 - HBase 是什么? <ul><ul><li>分布式大规模存储引擎 </li></ul></ul><ul><ul><li>针对吞吐量进行优化 </li></ul></ul><ul><ul><li>不错的随机读写性能 </li></ul></ul><ul><ul><li>BigTable 的开源实现 ( apache ) </li></ul></ul><ul><ul><li>http://hadoop.apache.org/hbase/ </li></ul></ul><ul><ul><li>Bigtable: A Distributed Storage System for Structured Data by Chang et al. http://labs.google.com/papers/bigtable.html </li></ul></ul>
    4. 4. HBase feature (1) <ul><li>强一致性 </li></ul><ul><ul><li>同一行数据的读写只在同一台 regionserver 上进行; </li></ul></ul><ul><li>水平伸缩 </li></ul><ul><ul><li>region 的自动分裂以及 master 的 balance ; </li></ul></ul><ul><ul><li>只用增加 datanode 机器即可增加容量; </li></ul></ul><ul><ul><li>只用增加 regionserver 机器即可增加读写吞吐量; </li></ul></ul>
    5. 5. HBase feature (2) s(Cont.) <ul><li>行事务 </li></ul><ul><ul><li>同一行的列的写入是原子的; </li></ul></ul><ul><li>Column Oriented + 三维有序 </li></ul><ul><ul><li>SortedMap(RowKey, </li></ul></ul><ul><li> List(SortedMap(Column, </li></ul><ul><li> List(Value,Timestamp)) </li></ul><ul><li> ) </li></ul><ul><li>) </li></ul><ul><ul><li>rowKey (ASC) + columnLabel(ASC) + Version (DESC) --> value </li></ul></ul>
    6. 6. HBase feature (3) t.)
    7. 7. HBase feature (4) <ul><li>和 Hadoop 无缝集成 </li></ul><ul><ul><li>Hbase 使用 hdfs 作为持久化存储 </li></ul></ul><ul><ul><li>Hadoop 分析后的结果可直接写入 HBase ; </li></ul></ul><ul><ul><li>存放在 HBase 的数据可直接通过 Hadoop 来进行分析。 </li></ul></ul>
    8. 8. HBase 不是什么! <ul><ul><li>不是一个关系型 SQL 数据库! </li></ul></ul><ul><ul><li>没有 join 操作,没有查询引擎,数据没有类型,没有 SQL </li></ul></ul><ul><ul><li>有限的原子性和事务性支持 </li></ul></ul><ul><ul><li>只有一个主索引 - row key , n 索引自己解决 </li></ul></ul><ul><ul><li>不是为规范化的 Schema 而设计 </li></ul></ul><ul><ul><li>非规范化的数据 </li></ul></ul><ul><ul><li>巨大的稀疏填充的表 </li></ul></ul>
    9. 9. 数据模型 <ul><ul><li>HBase Table : 一个 分布式 的多维稀疏 Map </li></ul></ul><ul><ul><li>(row * column-family:qualifier * timestamp) -> value </li></ul></ul><ul><ul><li>所有 Key 都是 byte 数组 </li></ul></ul><ul><ul><li>Schema 只到 column-family , qualifier 任意多,使用时动态增加 </li></ul></ul><ul><ul><li>第三维 Timestamp 提供了多版本机制,并避免了并发编辑冲突 </li></ul></ul><ul><ul><li>原子性行访问 </li></ul></ul>
    10. 10. 数据模型 <ul><ul><li>Table 和 Region </li></ul></ul><ul><ul><li>Table 中的 row 按 byte 字典序存储 </li></ul></ul><ul><ul><li>按 rowkey 将 Table 动态分割为一个个 region ,每个 region 包含一个连续的行范围 [startkey,endkey) ,由 RegionServer 承载 </li></ul></ul><ul><ul><li>当 region 增长时会进行 split ,并在存储集群内分发以达到负载均衡 </li></ul></ul><ul><ul><li>数据按 column-family 分组 </li></ul></ul>
    11. 11. 体系结构
    12. 12. 体系结构 <ul><li>HMaster </li></ul><ul><ul><li>Region 分配、负载均衡 </li></ul></ul><ul><ul><li>定期扫描 -ROOT- 、 .META. </li></ul></ul><ul><ul><li>管理 Table Schema </li></ul></ul><ul><ul><li>分发 close 、 flush 、 compact 等管理消息 </li></ul></ul><ul><ul><li>集群管理:容错、扩容、日志分裂 </li></ul></ul><ul><li>HRegionServer </li></ul><ul><ul><li>处理 Client 读、写、扫描请求 </li></ul></ul><ul><ul><li>与 HMaster 通信,处理管理消息 </li></ul></ul><ul><ul><li>Region 的 open 、 close 、 compaction 、 split 、 flush </li></ul></ul><ul><li>Client </li></ul><ul><ul><li>索引查找 </li></ul></ul><ul><ul><li>数据增删改查操作 </li></ul></ul><ul><ul><li>管理操作 </li></ul></ul><ul><li>ZooKeeper </li></ul><ul><ul><li>一个维护配置信息、名字空间,提供分布式同步、组管理的中心化协调服务 </li></ul></ul><ul><ul><li>存储 master 、 regionserver 、 -ROOT- region 的服务器地址 </li></ul></ul>
    13. 13. 数据索引 <ul><ul><li>三层 B+ 树 </li></ul></ul><ul><ul><li>ZooKeeper 的” -ROOT-”znode </li></ul></ul><ul><ul><li>-ROOT- region </li></ul></ul><ul><ul><li>.META. regions </li></ul></ul>-ROOT- ZK-znode 在 -ROOT- 和 .META. region 中记录大小约 1KB , 按 region 默认大小 256MB 计算, 意味着 ROOT region 能映射 2.6 x 10 5 个 .META. region , 依次能映射总的 6.9 x 10 10   个 user region , 意味着大约是 1.8 x 10 19  (2 64 ) 字节用户数据(即 2 14 PB )
    14. 14. 数据物理存储 <ul><li>size(rowKey) <= 32KB </li></ul><ul><li>size(column-family) <= 127B </li></ul><ul><li>size(rowKey + column-family + qualifier) <= 2GB - 12B </li></ul><ul><ul><li>size(rowlength) = 2B </li></ul></ul><ul><ul><li>size(columnfamilylength) = 1B </li></ul></ul><ul><ul><li>size(timestamp) = 9B </li></ul></ul><ul><li>size(cell value) <= 2GB </li></ul><ul><li>面向列存储 </li></ul><ul><li>HBase 强一致性 </li></ul><ul><li>HBase 无副本机制 </li></ul><ul><li>由 HDFS 提供副本机制,保证可靠性 </li></ul>
    15. 15. HBase 性能 <ul><ul><li>测试环境 </li></ul></ul><ul><ul><li>Hbase-0.20.2 、 Hadoop-0.20.1 、 ZooKeeper-3.2.1 、 JVM 6u7 </li></ul></ul><ul><ul><li>Intel Xeon E5520 2.27GHz(8cores) , 1TB SATA * 12, 16GB RAM </li></ul></ul><ul><ul><li>(1000B value, 10B rowkey) * 1,000,000 </li></ul></ul>Experiment (client Buffer enable) # of Tablet Servers Region server: 4 Google(1) Google(50) 1 client 4 client Random Reads 1465 1848 1212 593 Random Reads (mem) Not yet implemented Not yet implemented 10811 3745 Random Writes 12646 4889 8850 3745 Sequential Reads 4374 3995 4425 2463 Sequential Writes 12682 7204 8547 3623 scan 18898 19979 15385 10526
    16. 16. HBase 性能 <ul><ul><li>测试环境 </li></ul></ul><ul><ul><li>Hbase-0.20.2 、 Hadoop-0.20.1 、 ZooKeeper-3.2.1 、 JVM 6u7 </li></ul></ul><ul><ul><li>Intel Xeon E5520 2.27GHz(8cores) , 1TB SATA * 12, 16GB RAM </li></ul></ul><ul><ul><li>(1000B value, 10B rowkey) * 1,000,000 </li></ul></ul>Experiment (client Buffer disable) # of Tablet Servers Region server: 4 Google(1) Google(50) 1 client 4 client Random Reads 1517 1822 1212 593 Random Reads (mem) Not yet implemented Not yet implemented 10811 3745 Random Writes 3929 1984 8850 3745 Sequential Reads 4789 4309 4425 2463 Sequential Writes 3495 2205 8547 3623 scan 24775 24855 15385 10526
    17. 17. HBase 性能 <ul><ul><li>测试环境 </li></ul></ul><ul><ul><li>Hbase-0.20.2 、 Hadoop-0.20.1 、 ZooKeeper-3.2.1 、 JVM 6u7 </li></ul></ul><ul><ul><li>Intel Xeon E5520 2.27GHz(8cores) , 1TB SATA * 12, 16GB RAM </li></ul></ul><ul><ul><li>(1000B value, 10B rowkey) * 1,000,000 </li></ul></ul>Experiment (client Buffer disable and batch operation) Region server:4 / 1 client / 1 thread row num per batch 5 10 15 20 25 30 45 100 Sequential Writes 5000 5882 10000 15384 13888 15000 21428 27272
    18. 18. [email_address] <ul><li>Facebook message (titan) </li></ul><ul><li>Facebook insight (puma) </li></ul><ul><li>Facebook metrics system (ODS) </li></ul>
    19. 19. <ul><li>Use case 1: Facebook message (titan) </li></ul>
    20. 20. 什么是 message
    21. 21. 业务特点
    22. 22. 架构
    23. 23. send message
    24. 24. receive message
    25. 25. 存储模式
    26. 26. 为什么选择 HBase ? <ul><li>具有比 Cassandra 更简洁的一致性模型。 </li></ul><ul><li>对于他们的数据模式具有很好的扩展能力和处理能力。 </li></ul><ul><li>大多数功能能够满足他们的需求:自动加载平衡和故障转移、压缩支持功能、单个服务器的多碎片功能等。 </li></ul><ul><li>HBase 所使用的文件系统 HDFS ,支持复制、端对端校验和,以及自动再次平衡。 </li></ul>
    27. 27. <ul><li>Use case 2 : Facebook insight (puma) </li></ul>
    28. 28. 什么是 puma
    29. 29. 什么是 puma <ul><li>实时分析平台 </li></ul><ul><li>Metrics </li></ul><ul><ul><li>count, sum, unique count, average, percentile </li></ul></ul><ul><li>为了容错,对计算结果做 check point </li></ul><ul><li>Check point 和数据在 hbase 中存储 </li></ul>
    30. 30. Data Freeway System
    31. 31. 业务特点
    32. 32. 写流程
    33. 33. 读流程
    34. 34. 适合场景 <ul><li>应用: </li></ul><ul><ul><li>实时分析 </li></ul></ul><ul><ul><li>搜索 </li></ul></ul><ul><ul><li>垃圾检测 </li></ul></ul>
    35. 35. <ul><li>Use case 3 : </li></ul><ul><li>Facebook metrics system (ODS) </li></ul>
    36. 36. Facebook metrics system (ODS)
    37. 37. <ul><li>Q & A </li></ul>
    1. A particular slide catching your eye?

      Clipping is a handy way to collect important slides you want to go back to later.

    ×