KEMBAR78
Hbase | PPT
HBase  原理及应用 刘景龙  [email_address] 2011-08-23
Outline HBase 实现原理 HBase 是什么? HBase 不是什么! 数据模型、体系结构、实现 HBase 性能指标 HBase @ facebook Facebook message  (titan) Facebook insight  (puma) Facebook metrics system (ODS)
HBase 实现原理  -  HBase 是什么? 分布式大规模存储引擎 针对吞吐量进行优化 不错的随机读写性能 BigTable 的开源实现 ( apache )  http://hadoop.apache.org/hbase/ Bigtable: A Distributed Storage System for Structured Data by  Chang et al.  http://labs.google.com/papers/bigtable.html
HBase feature  (1) 强一致性 同一行数据的读写只在同一台 regionserver 上进行; 水平伸缩 region 的自动分裂以及 master 的 balance ; 只用增加 datanode 机器即可增加容量; 只用增加 regionserver 机器即可增加读写吞吐量;
HBase feature  (2) s(Cont.) 行事务 同一行的列的写入是原子的; Column Oriented +  三维有序 SortedMap(RowKey,   List(SortedMap(Column,   List(Value,Timestamp))   ) ) rowKey (ASC) + columnLabel(ASC) + Version (DESC)  --> value
HBase feature  (3) t.)
HBase feature  (4) 和 Hadoop 无缝集成 Hbase 使用 hdfs 作为持久化存储 Hadoop 分析后的结果可直接写入 HBase ; 存放在 HBase 的数据可直接通过 Hadoop 来进行分析。
HBase 不是什么! 不是一个关系型 SQL 数据库! 没有 join 操作,没有查询引擎,数据没有类型,没有 SQL 有限的原子性和事务性支持 只有一个主索引  - row key , n 索引自己解决 不是为规范化的 Schema 而设计 非规范化的数据 巨大的稀疏填充的表
数据模型 HBase Table :  一个 分布式 的多维稀疏 Map (row * column-family:qualifier * timestamp) -> value 所有 Key 都是 byte 数组 Schema 只到 column-family , qualifier 任意多,使用时动态增加 第三维 Timestamp 提供了多版本机制,并避免了并发编辑冲突 原子性行访问
数据模型 Table 和 Region Table 中的 row 按 byte 字典序存储 按 rowkey 将 Table 动态分割为一个个 region ,每个 region 包含一个连续的行范围 [startkey,endkey) ,由 RegionServer 承载 当 region 增长时会进行 split ,并在存储集群内分发以达到负载均衡 数据按 column-family 分组
体系结构
体系结构 HMaster Region 分配、负载均衡 定期扫描 -ROOT- 、 .META. 管理 Table Schema 分发 close 、 flush 、 compact 等管理消息 集群管理:容错、扩容、日志分裂 HRegionServer 处理 Client 读、写、扫描请求 与 HMaster 通信,处理管理消息 Region 的 open 、 close 、 compaction 、 split 、 flush Client 索引查找 数据增删改查操作 管理操作 ZooKeeper 一个维护配置信息、名字空间,提供分布式同步、组管理的中心化协调服务 存储 master 、 regionserver 、 -ROOT- region 的服务器地址
数据索引 三层 B+ 树 ZooKeeper 的” -ROOT-”znode -ROOT- region .META. regions -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 )
数据物理存储 size(rowKey) <= 32KB size(column-family) <= 127B size(rowKey + column-family + qualifier) <= 2GB - 12B size(rowlength) = 2B size(columnfamilylength) = 1B size(timestamp) = 9B size(cell value) <= 2GB 面向列存储 HBase 强一致性 HBase 无副本机制 由 HDFS 提供副本机制,保证可靠性
HBase  性能 测试环境 Hbase-0.20.2 、 Hadoop-0.20.1 、 ZooKeeper-3.2.1 、   JVM 6u7 Intel Xeon E5520 2.27GHz(8cores) , 1TB SATA * 12, 16GB RAM (1000B value, 10B rowkey) * 1,000,000 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
HBase  性能 测试环境 Hbase-0.20.2 、 Hadoop-0.20.1 、 ZooKeeper-3.2.1 、   JVM 6u7 Intel Xeon E5520 2.27GHz(8cores) , 1TB SATA * 12, 16GB RAM (1000B value, 10B rowkey) * 1,000,000 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
HBase  性能 测试环境 Hbase-0.20.2 、 Hadoop-0.20.1 、 ZooKeeper-3.2.1 、   JVM 6u7 Intel Xeon E5520 2.27GHz(8cores) , 1TB SATA * 12, 16GB RAM (1000B value, 10B rowkey) * 1,000,000 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
[email_address] Facebook message  (titan) Facebook insight  (puma) Facebook metrics system (ODS)
Use case 1: Facebook message  (titan)
什么是 message
业务特点
架构
send message
receive message
存储模式
为什么选择  HBase ? 具有比 Cassandra 更简洁的一致性模型。 对于他们的数据模式具有很好的扩展能力和处理能力。 大多数功能能够满足他们的需求:自动加载平衡和故障转移、压缩支持功能、单个服务器的多碎片功能等。 HBase  所使用的文件系统 HDFS ,支持复制、端对端校验和,以及自动再次平衡。
Use case 2 : Facebook insight  (puma)
什么是 puma
什么是 puma 实时分析平台 Metrics count, sum, unique count, average, percentile 为了容错,对计算结果做 check point Check point 和数据在 hbase 中存储
Data Freeway System
业务特点
写流程
读流程
适合场景 应用: 实时分析 搜索 垃圾检测
Use case 3 : Facebook metrics system (ODS)
Facebook metrics system (ODS)
Q & A

Hbase

  • 1.
    HBase 原理及应用刘景龙 [email_address] 2011-08-23
  • 2.
    Outline HBase 实现原理HBase 是什么? HBase 不是什么! 数据模型、体系结构、实现 HBase 性能指标 HBase @ facebook Facebook message (titan) Facebook insight (puma) Facebook metrics system (ODS)
  • 3.
    HBase 实现原理 - HBase 是什么? 分布式大规模存储引擎 针对吞吐量进行优化 不错的随机读写性能 BigTable 的开源实现 ( apache ) http://hadoop.apache.org/hbase/ Bigtable: A Distributed Storage System for Structured Data by Chang et al. http://labs.google.com/papers/bigtable.html
  • 4.
    HBase feature (1) 强一致性 同一行数据的读写只在同一台 regionserver 上进行; 水平伸缩 region 的自动分裂以及 master 的 balance ; 只用增加 datanode 机器即可增加容量; 只用增加 regionserver 机器即可增加读写吞吐量;
  • 5.
    HBase feature (2) s(Cont.) 行事务 同一行的列的写入是原子的; Column Oriented + 三维有序 SortedMap(RowKey, List(SortedMap(Column, List(Value,Timestamp)) ) ) rowKey (ASC) + columnLabel(ASC) + Version (DESC) --> value
  • 6.
  • 7.
    HBase feature (4) 和 Hadoop 无缝集成 Hbase 使用 hdfs 作为持久化存储 Hadoop 分析后的结果可直接写入 HBase ; 存放在 HBase 的数据可直接通过 Hadoop 来进行分析。
  • 8.
    HBase 不是什么! 不是一个关系型SQL 数据库! 没有 join 操作,没有查询引擎,数据没有类型,没有 SQL 有限的原子性和事务性支持 只有一个主索引 - row key , n 索引自己解决 不是为规范化的 Schema 而设计 非规范化的数据 巨大的稀疏填充的表
  • 9.
    数据模型 HBase Table: 一个 分布式 的多维稀疏 Map (row * column-family:qualifier * timestamp) -> value 所有 Key 都是 byte 数组 Schema 只到 column-family , qualifier 任意多,使用时动态增加 第三维 Timestamp 提供了多版本机制,并避免了并发编辑冲突 原子性行访问
  • 10.
    数据模型 Table 和Region Table 中的 row 按 byte 字典序存储 按 rowkey 将 Table 动态分割为一个个 region ,每个 region 包含一个连续的行范围 [startkey,endkey) ,由 RegionServer 承载 当 region 增长时会进行 split ,并在存储集群内分发以达到负载均衡 数据按 column-family 分组
  • 11.
  • 12.
    体系结构 HMaster Region分配、负载均衡 定期扫描 -ROOT- 、 .META. 管理 Table Schema 分发 close 、 flush 、 compact 等管理消息 集群管理:容错、扩容、日志分裂 HRegionServer 处理 Client 读、写、扫描请求 与 HMaster 通信,处理管理消息 Region 的 open 、 close 、 compaction 、 split 、 flush Client 索引查找 数据增删改查操作 管理操作 ZooKeeper 一个维护配置信息、名字空间,提供分布式同步、组管理的中心化协调服务 存储 master 、 regionserver 、 -ROOT- region 的服务器地址
  • 13.
    数据索引 三层 B+树 ZooKeeper 的” -ROOT-”znode -ROOT- region .META. regions -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.
    数据物理存储 size(rowKey) <=32KB size(column-family) <= 127B size(rowKey + column-family + qualifier) <= 2GB - 12B size(rowlength) = 2B size(columnfamilylength) = 1B size(timestamp) = 9B size(cell value) <= 2GB 面向列存储 HBase 强一致性 HBase 无副本机制 由 HDFS 提供副本机制,保证可靠性
  • 15.
    HBase 性能测试环境 Hbase-0.20.2 、 Hadoop-0.20.1 、 ZooKeeper-3.2.1 、 JVM 6u7 Intel Xeon E5520 2.27GHz(8cores) , 1TB SATA * 12, 16GB RAM (1000B value, 10B rowkey) * 1,000,000 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.
    HBase 性能测试环境 Hbase-0.20.2 、 Hadoop-0.20.1 、 ZooKeeper-3.2.1 、 JVM 6u7 Intel Xeon E5520 2.27GHz(8cores) , 1TB SATA * 12, 16GB RAM (1000B value, 10B rowkey) * 1,000,000 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.
    HBase 性能测试环境 Hbase-0.20.2 、 Hadoop-0.20.1 、 ZooKeeper-3.2.1 、 JVM 6u7 Intel Xeon E5520 2.27GHz(8cores) , 1TB SATA * 12, 16GB RAM (1000B value, 10B rowkey) * 1,000,000 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.
    [email_address] Facebook message (titan) Facebook insight (puma) Facebook metrics system (ODS)
  • 19.
    Use case 1:Facebook message (titan)
  • 20.
  • 21.
  • 22.
  • 23.
  • 24.
  • 25.
  • 26.
    为什么选择 HBase? 具有比 Cassandra 更简洁的一致性模型。 对于他们的数据模式具有很好的扩展能力和处理能力。 大多数功能能够满足他们的需求:自动加载平衡和故障转移、压缩支持功能、单个服务器的多碎片功能等。 HBase 所使用的文件系统 HDFS ,支持复制、端对端校验和,以及自动再次平衡。
  • 27.
    Use case 2: Facebook insight (puma)
  • 28.
  • 29.
    什么是 puma 实时分析平台Metrics count, sum, unique count, average, percentile 为了容错,对计算结果做 check point Check point 和数据在 hbase 中存储
  • 30.
  • 31.
  • 32.
  • 33.
  • 34.
  • 35.
    Use case 3: Facebook metrics system (ODS)
  • 36.
  • 37.

Editor's Notes

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