SlideShare une entreprise Scribd logo
1  sur  80
Télécharger pour lire hors ligne
NoSQL 概述           HBase 和 Cassandra      什么时候使用 HBase         技术原理       HBase 特点总结       应用情况
............                                                   .....................................




.
                                            HBase 杂谈
                              NoSQL, BigTable, HBase, Cassandra
.


                                          潘伟洲1         林泽殷1
                                             1 Master Candidate

                                            School of Computer
                                       South China Normal University


                                              April, 2012



                                                                   .    .    .     .         .     .

    Joseph Pan, Zeyin Lin (SCNU)                 HBase 杂谈                              2012-4-23   1 / 74
NoSQL 概述         HBase 和 Cassandra           什么时候使用 HBase                  技术原理       HBase 特点总结       应用情况
............                                                               .....................................



心智图

                                      5. HBase
                                      特点总结                           6. 应用情况
                                       (2 min)                        (1 min)


                       技术细节




                                                                 .
                                                 .
                                                                                                              NoSQL
                              .
                         .




           API
                                                                                                  .
                  .

                      4. HBase                                                        1. NoSQL
                      技术原理             .             HBase. 杂谈              .            概述
                      (25 min)                                                         (10 min)           .      NoSQL
                  .                                                                                               V.S.
                                                                                                                  SQL
           架构
                          .




                                                 .




                       数据模型
                                                                 .


                                     3. 什么时候                         2. HBase 和
                                     使用 HBase                         Cassandra
                                       (1 min)                         (2 min)




                                                                                  .       .           .               .         .     .

  Joseph Pan, Zeyin Lin (SCNU)                         HBase 杂谈                                                           2012-4-23   2 / 74
NoSQL 概述         HBase 和 Cassandra           什么时候使用 HBase                  技术原理       HBase 特点总结       应用情况
............                                                               .....................................



NoSQL 概述

                                      5. HBase
                                      特点总结                           6. 应用情况
                                       (2 min)                        (1 min)


                       技术细节




                                                                 .
                                                 .
                                                                                                              NoSQL
                              .
                         .




           API
                                                                                                  .
                  .

                      4. HBase                                                        1. NoSQL
                      技术原理             .             HBase. 杂谈              .            概述
                      (25 min)                                                         (10 min)           .      NoSQL
                  .                                                                                               V.S.
                                                                                                                  SQL
           架构
                          .




                                                 .




                       数据模型
                                                                 .


                                     3. 什么时候                         2. HBase 和
                                     使用 HBase                         Cassandra
                                       (1 min)                         (2 min)




                                                                                  .       .           .               .         .     .

  Joseph Pan, Zeyin Lin (SCNU)                         HBase 杂谈                                                           2012-4-23   3 / 74
NoSQL 概述         HBase 和 Cassandra           什么时候使用 HBase                  技术原理       HBase 特点总结       应用情况
............                                                               .....................................



NoSQL

                                      5. HBase
                                      特点总结                           6. 应用情况
                                       (2 min)                        (1 min)


                       技术细节




                                                                 .
                                                 .
                                                                                                              NoSQL
                              .
                         .




           API
                                                                                                  .
                  .

                      4. HBase                                                        1. NoSQL
                      技术原理             .             HBase. 杂谈              .            概述
                      (25 min)                                                         (10 min)           .      NoSQL
                  .                                                                                               V.S.
                                                                                                                  SQL
           架构
                          .




                                                 .




                       数据模型
                                                                 .


                                     3. 什么时候                         2. HBase 和
                                     使用 HBase                         Cassandra
                                       (1 min)                         (2 min)




                                                                                  .       .           .               .         .     .

  Joseph Pan, Zeyin Lin (SCNU)                         HBase 杂谈                                                           2012-4-23   4 / 74
NoSQL 概述           HBase 和 Cassandra                什么时候使用 HBase    技术原理       HBase 特点总结       应用情况
............                                                        .....................................
NoSQL: Why


数据存储的趋势

                                                                                                                                                Giant
                                                                                                                                                Global
                                                                                                                                                Graph
                                                                                                                                                (GGG)
                                                                                                                               Ontologies

                                                                                                                         RDF
                                                                                                                                      Folksonomies
                                                                                                                     Tagging
                                                                                                     Wikis
                                                                                                                           User-
                                                                                                             Blogs       generated
                                                                                                                          Content
                                                                                                 RSS

                                                                                     Hypertext
                                                                       Text
                                                                    documents
                                                                         1990                    2000                          2010                      2020
          2002   2004   2006   2008   2010   2012                                   Web 1.0              Web 2.0                       Web 3.0



                        数据增长                                                                  信息连接




                        并发性                                                            结构多样性
                                                                                .                .                   .                      .                   .   .

  Joseph Pan, Zeyin Lin (SCNU)                           HBase 杂谈                                                                               2012-4-23           5 / 74
NoSQL 概述         HBase 和 Cassandra   什么时候使用 HBase    技术原理       HBase 特点总结       应用情况
............                                         .....................................
NoSQL: Why


关系型数据库的不足




关系型数据库:管理结构化数据
     复杂导致不确定性
     有些问题不适合采用关联型的
     数据模型
     当数据量增长到一台机器已经
     不能容纳, 我们需要将不同的数
     据表分布到不同的机器
                                              Figure 1: 数据量增长对性能的消极影响



                                                        .     .    .     .         .     .

  Joseph Pan, Zeyin Lin (SCNU)            HBase 杂谈                           2012-4-23   6 / 74
NoSQL 概述         HBase 和 Cassandra   什么时候使用 HBase    技术原理       HBase 特点总结       应用情况
............                                         .....................................
NoSQL: Why


Help!




                                                        .     .    .     .         .     .

  Joseph Pan, Zeyin Lin (SCNU)            HBase 杂谈                           2012-4-23   7 / 74
NoSQL 概述         HBase 和 Cassandra   什么时候使用 HBase    技术原理       HBase 特点总结       应用情况
............                                         .....................................
NoSQL: What


NoSQL 的定义




                  No to SQL                                 No Only SQL




                                                        .     .    .     .         .     .

  Joseph Pan, Zeyin Lin (SCNU)            HBase 杂谈                           2012-4-23   8 / 74
NoSQL 概述           HBase 和 Cassandra   什么时候使用 HBase    技术原理       HBase 特点总结       应用情况
............                                           .....................................
NoSQL: What


Martin Fowler 的定义

.
NosqlDefinition
.
“Some characteristics are common amongst
these databases, but none are definitional.
       Not using the relational model (nor the
       SQL language)
       Open source
       Designed to run on large clusters
       Based on the needs of 21st century web
       properties
       No schema, allowing fields to be added                  Figure 2: Martin Fowler
       to any record without controls ”
.
                                                          .      .    .    .         .     .

    Joseph Pan, Zeyin Lin (SCNU)            HBase 杂谈                           2012-4-23   9 / 74
NoSQL 概述         HBase 和 Cassandra   什么时候使用 HBase    技术原理       HBase 特点总结       应用情况
............                                         .....................................
NoSQL 的特点


NoSQL 的特点

      简单灵活
             复杂的操作交给应用层
             使用 NoSQL 数据模型,通常需要你对存储的内部结构和实现算法有
             一定的了解
             使用 NoSQL 数据库,通常要自己处理数据结构解析和数据的冗余复
             制问题
             需要预先考虑数据的分级处理
      牺牲稳定,换取性能
      可能不具备关系数据库的 ACID 特性的一种或几种:
             Atomic:原子性
             Consistency:一致性
             Isolation:隔离性
             Durability:持久性

                                                        .     .    .     .     .    .

  Joseph Pan, Zeyin Lin (SCNU)            HBase 杂谈                      2012-4-23   10 / 74
NoSQL 概述         HBase 和 Cassandra                  什么时候使用 HBase                        技术原理       HBase 特点总结       应用情况
............                                                                            .....................................
NoSQL 的特点


数据模型进化论
SQL→NoSQL,进步 or 倒退?


                           Key-Value                                 Document,
                                       OrderKey-Value   BigTable                      Graph       SQL
                                                                     Full-TextSearch




                                           Figure 3: 数据模型进化论                                    .   .     .   .      .    .

  Joseph Pan, Zeyin Lin (SCNU)                                  HBase 杂谈                                      2012-4-23   11 / 74
NoSQL 概述         HBase 和 Cassandra   什么时候使用 HBase    技术原理       HBase 特点总结       应用情况
............                                         .....................................
NoSQL 的特点


NoSQL 族谱


目前简单将 NoSQL 几个分类的代表产品列举如下:
      Key-Value 存储: Amazon Dynamo, Voldemort, BDB, Kyoto Cabinet
      Key 结构化数据存储:Redis
      类 BigTable 存储: Google BigTable, Apache HBase, Apache
      Cassandra
      文档数据库: MongoDB, CouchDB
      全文索引: Apache Lucene, Apache Solr
      图数据库: neo4j, HyperGraphDB, FlockDB



                                                        .     .    .     .     .    .

  Joseph Pan, Zeyin Lin (SCNU)            HBase 杂谈                      2012-4-23   12 / 74
NoSQL 概述         HBase 和 Cassandra    什么时候使用 HBase    技术原理       HBase 特点总结       应用情况
............                                          .....................................
NoSQL 的特点


NoSQL 族谱




                                     Figure 4: NoSQL 族谱
                                                          .    .    .     .     .    .

  Joseph Pan, Zeyin Lin (SCNU)             HBase 杂谈                      2012-4-23   13 / 74
NoSQL 概述         HBase 和 Cassandra           什么时候使用 HBase                  技术原理       HBase 特点总结       应用情况
............                                                               .....................................
NoSQL 的特点


NoSQL V.S. SQL

                                      5. HBase
                                      特点总结                           6. 应用情况
                                       (2 min)                        (1 min)


                       技术细节




                                                                 .
                                                 .
                                                                                                              NoSQL
                              .
                         .




           API
                                                                                                  .
                  .

                      4. HBase                                                        1. NoSQL
                      技术原理             .             HBase. 杂谈              .            概述
                      (25 min)                                                         (10 min)           .      NoSQL
                  .                                                                                               V.S.
                                                                                                                  SQL
           架构
                          .




                                                 .




                       数据模型
                                                                 .


                                     3. 什么时候                         2. HBase 和
                                     使用 HBase                         Cassandra
                                       (1 min)                         (2 min)




                                                                                  .       .           .               .      .    .

  Joseph Pan, Zeyin Lin (SCNU)                         HBase 杂谈                                                       2012-4-23   14 / 74
NoSQL 概述         HBase 和 Cassandra       什么时候使用 HBase    技术原理       HBase 特点总结       应用情况
............                                             .....................................
NoSQL V.S. SQL


当 SQL 遇见 NoSQL




                                     Figure 5: NoSQL Meets SQL


                                                            .     .    .     .     .    .

  Joseph Pan, Zeyin Lin (SCNU)                HBase 杂谈                      2012-4-23   15 / 74
NoSQL 概述         HBase 和 Cassandra      什么时候使用 HBase    技术原理       HBase 特点总结       应用情况
............                                            .....................................
NoSQL V.S. SQL


SQL 还是 NoSQL?




                                     Figure 6: SQL 还是 NoSQL?
                                                           .     .    .     .     .    .

  Joseph Pan, Zeyin Lin (SCNU)               HBase 杂谈                      2012-4-23   16 / 74
NoSQL 概述         HBase 和 Cassandra           什么时候使用 HBase                  技术原理       HBase 特点总结       应用情况
............                                                               .....................................



HBase 和 Cassandra

                                      5. HBase
                                      特点总结                           6. 应用情况
                                       (2 min)                        (1 min)


                       技术细节




                                                                 .
                                                 .
                                                                                                              NoSQL
                              .
                         .




           API
                                                                                                  .
                  .

                      4. HBase                                                        1. NoSQL
                      技术原理             .             HBase. 杂谈              .            概述
                      (25 min)                                                         (10 min)           .      NoSQL
                  .                                                                                               V.S.
                                                                                                                  SQL
           架构
                          .




                                                 .




                       数据模型
                                                                 .


                                     3. 什么时候                         2. HBase 和
                                     使用 HBase                         Cassandra
                                       (1 min)                         (2 min)




                                                                                  .       .           .               .      .    .

  Joseph Pan, Zeyin Lin (SCNU)                         HBase 杂谈                                                       2012-4-23   17 / 74
NoSQL 概述         HBase 和 Cassandra   什么时候使用 HBase    技术原理       HBase 特点总结       应用情况
............                                         .....................................



HBase 和 Cassandra




         Hadoop Database                                    Cassandra




                                                        .     .    .     .     .    .

  Joseph Pan, Zeyin Lin (SCNU)            HBase 杂谈                      2012-4-23   18 / 74
NoSQL 概述         HBase 和 Cassandra            什么时候使用 HBase          技术原理       HBase 特点总结       应用情况
............                                                        .....................................



HBase: What



      一个高可靠性、高性能、面向列、可伸缩的分布式存储系统
      Google BigTable 的开源山寨版本
       Bigtable: A distributed storage system for structured data
       .

      利用 HBase 技术可在廉价 PC Server 上搭建起大规模结构化存储集
      群
      实时随机读写补充 HDFS 的不足
      主要贡献者: Yahoo!, Facebook, Cloudera




                                                                       .     .    .     .     .    .

  Joseph Pan, Zeyin Lin (SCNU)                         HBase 杂谈                        2012-4-23   19 / 74
NoSQL 概述         HBase 和 Cassandra     什么时候使用 HBase    技术原理       HBase 特点总结       应用情况
............                                           .....................................



Hadoop 生态系统




                                     Figure 7: Hadoop 生态图 .     .    .     .     .    .

  Joseph Pan, Zeyin Lin (SCNU)              HBase 杂谈                      2012-4-23   20 / 74
NoSQL 概述         HBase 和 Cassandra   什么时候使用 HBase    技术原理       HBase 特点总结       应用情况
............                                         .....................................



Cassandra: What



    Cassandra 是一套开源分布式 NoSQL 数据库系统。它最初
由Facebook开发,用于储存收件箱等简单格式数据,是 Facebook 数据
库系统的开源分支。集 Google BigTable 的数据模型与 Amazon Dynamo
的完全分布式的架构于一身。Facebook 于 2008 将 Cassandra 开源,此
后,由于 Cassandra 良好的可扩放性,被 Digg、Twitter 等知名 Web 2.0
网站所采纳,成为了一种流行的分布式结构化数据存储方案。
    实际上,Cassandra 的最初开发工作就是由两位从 Amazon 跳槽到
Facebook 的 Dynamo 工程师 Avinash Lakshman 和 Prashant Malik 完成
的。



                                                        .     .    .     .     .    .

  Joseph Pan, Zeyin Lin (SCNU)            HBase 杂谈                      2012-4-23   21 / 74
NoSQL 概述         HBase 和 Cassandra           什么时候使用 HBase                  技术原理       HBase 特点总结       应用情况
............                                                               .....................................



什么时候使用 HBase

                                      5. HBase
                                      特点总结                           6. 应用情况
                                       (2 min)                        (1 min)


                       技术细节




                                                                 .
                                                 .
                                                                                                              NoSQL
                              .
                         .




           API
                                                                                                  .
                  .

                      4. HBase                                                        1. NoSQL
                      技术原理             .             HBase. 杂谈              .            概述
                      (25 min)                                                         (10 min)           .      NoSQL
                  .                                                                                               V.S.
                                                                                                                  SQL
           架构
                          .




                                                 .




                       数据模型
                                                                 .


                                     3. 什么时候                         2. HBase 和
                                     使用 HBase                         Cassandra
                                       (1 min)                         (2 min)




                                                                                  .       .           .               .      .    .

  Joseph Pan, Zeyin Lin (SCNU)                         HBase 杂谈                                                       2012-4-23   22 / 74
NoSQL 概述         HBase 和 Cassandra   什么时候使用 HBase    技术原理       HBase 特点总结       应用情况
............                                         .....................................



HBase: When



      海量数据(上百个 TB 或更多)
      需要很高的吞吐量
      需要在海量数据中实现高效的随机读取
      需要很好的伸缩能力
      能够同时处理结构化和非结构化的数据
      不需要完全拥有 RDMS 所具备的 ACID 特性




                                                        .     .    .     .     .    .

  Joseph Pan, Zeyin Lin (SCNU)            HBase 杂谈                      2012-4-23   23 / 74
NoSQL 概述         HBase 和 Cassandra           什么时候使用 HBase                  技术原理       HBase 特点总结       应用情况
............                                                               .....................................



技术原理

                                      5. HBase
                                      特点总结                           6. 应用情况
                                       (2 min)                        (1 min)


                       技术细节




                                                                 .
                                                 .
                                                                                                              NoSQL
                              .
                         .




           API
                                                                                                  .
                  .

                      4. HBase                                                        1. NoSQL
                      技术原理             .             HBase. 杂谈              .            概述
                      (25 min)                                                         (10 min)           .      NoSQL
                  .                                                                                               V.S.
                                                                                                                  SQL
           架构
                          .




                                                 .




                       数据模型
                                                                 .


                                     3. 什么时候                         2. HBase 和
                                     使用 HBase                         Cassandra
                                       (1 min)                         (2 min)




                                                                                  .       .           .               .      .    .

  Joseph Pan, Zeyin Lin (SCNU)                         HBase 杂谈                                                       2012-4-23   24 / 74
NoSQL 概述         HBase 和 Cassandra           什么时候使用 HBase                  技术原理       HBase 特点总结       应用情况
............                                                               .....................................
数据模型


数据模型

                                      5. HBase
                                      特点总结                           6. 应用情况
                                       (2 min)                        (1 min)


                       技术细节




                                                                 .
                                                 .
                                                                                                              NoSQL
                              .
                         .




           API
                                                                                                  .
                  .

                      4. HBase                                                        1. NoSQL
                      技术原理             .             HBase. 杂谈              .            概述
                      (25 min)                                                         (10 min)           .      NoSQL
                  .                                                                                               V.S.
                                                                                                                  SQL
           架构
                          .




                                                 .




                       数据模型
                                                                 .


                                     3. 什么时候                         2. HBase 和
                                     使用 HBase                         Cassandra
                                       (1 min)                         (2 min)




                                                                                  .       .           .               .      .    .

  Joseph Pan, Zeyin Lin (SCNU)                         HBase 杂谈                                                       2012-4-23   25 / 74
NoSQL 概述         HBase 和 Cassandra       什么时候使用 HBase           技术原理       HBase 特点总结       应用情况
............                                                    .....................................
数据模型


逻辑视图
      Table
             稀疏的、面向列的多维度排序 Map
             Map 的索引是行关键字、列关键字以及时间戳,Map 中的每个 value
             都是一个未经解析的 byte 数组
      Row:原子访问,字典序排序
      Column:column family + qualifier
      Cell:(row:string, column:string,time:int64)→string
      Time Stamp:版本
                             "conte nts :"        "a nchor:cnns i.com"          "a nchor:my.look.ca "


                                "<html>..."       t3
"com.cnn.www"                 "<html>..."      t5       "CNN"          t9          "CNN.com"           t8
                            "<html>..."     t6



                                 Figure 8: 数据模型示例:webtable         .        .        .     .      .         .

  Joseph Pan, Zeyin Lin (SCNU)                  HBase 杂谈                                   2012-4-23        26 / 74
NoSQL 概述         HBase 和 Cassandra        什么时候使用 HBase          技术原理       HBase 特点总结       应用情况
............                                                    .....................................
数据模型


逻辑视图



                                          Table 1: 表 webtable
             Row Key                 Time       ColumnFamily             ColumnFamily an-
                                     Stamp      contents                 chor
             “com.cnn.www”           t9                                  anchor:cnnsi.com
                                                                         = “CNN”
             “com.cnn.www”           t8                                  anchor:my.look.ca
                                                                         = “CNN.com”
             “com.cnn.www”           t6         contents:html    =
                                                “<html>...”
             “com.cnn.www”           t5         contents:html    =
                                                “<html>...”
             “com.cnn.www”           t3         contents:html    =
                                                “<html>...”



                                                                     .      .    .     .      .    .

  Joseph Pan, Zeyin Lin (SCNU)                  HBase 杂谈                               2012-4-23   27 / 74
NoSQL 概述           HBase 和 Cassandra       什么时候使用 HBase              技术原理       HBase 特点总结       应用情况
............                                                         .....................................
数据模型


构造函数
./src/main/java/org/apache/hadoop/hbase/keyvalue.java:
§
p u b l i c KeyValue ( f i n a l b y t e [ ] row , f i n a l b y t e [ ] f a m i l y , f i n a l by t e [ ]
        q u a l i f i e r , f i n a l l o n g timestamp , f i n a l b y t e [ ] v a l u e )
{
        t h i s ( row , f a m i l y , q u a l i f i e r , timestamp , Type . Put , v a l u e ) ;
}

p u b l i c KeyValue ( f i n a l b y t e [ ] row , f i n a l i n t r o f f s e t , f i n a l i n t r l e n g t h
        , f i n a l by t e [ ] f a m i l y , f i n a l i n t f o f f s e t , f i n a l i n t f l e n g t h ,
        f i n a l by t e [ ] q u a l i f i e r , f i n a l i n t q o f f s e t , f i n a l i n t q l e n g t h ,
            f i n a l l o n g timestamp , f i n a l Type type ,
            f i n a l byte [ ] value , f i n a l i n t v o f f s e t , f i n a l i n t vlength ) {
        t h i s . b y t e s = c r e a t e B y t e A r r a y ( row , r o f f s e t , r l e n g t h ,
                family , f o f f s e t , flength , q u a l i f i e r , q o f f s e t , qlength ,
                timestamp , type , v a l u e , v o f f s e t , v l e n g t h ) ;
        t h i s . length = bytes . length ;
        this . o f f s e t = 0;
   }
                                                                                                                    ¥
                                                                                                                    
                                                                          .       .      .      .      .      .

    Joseph Pan, Zeyin Lin (SCNU)                    HBase 杂谈                                    2012-4-23     28 / 74
NoSQL 概述         HBase 和 Cassandra        什么时候使用 HBase      技术原理       HBase 特点总结       应用情况
............                                                .....................................
物理存储


物理视图
  尽管在概念视图里,表可以被看成是一个稀疏的行的集合。但在物
理上,它是区分 column family 存储的。新的 columns 可以不经过声明
直接加入一个 column family。
  另外值得注意的是概念视图中的空白 cell 在物理上是不存储的。

                                 Table 2: ColumnFamily anchor
             Row Key                 Time Stamp   Column Family anchor
             ”com.cnn.www”           t9           anchor:cnnsi.com = ”CNN”
             ”com.cnn.www”           t8           anchor:my.look.ca = ”CNN.com”


                                 Table 3: ColumnFamily contents
             Row Key                 Time Stamp   ColumnFamily ”contents:”
             ”com.cnn.www”           t6           contents:html = ”html...”
             ”com.cnn.www”           t5           contents:html = ”html...”
             ”com.cnn.www”           t3           contents:html = ”html...”
                                                                .    .       .    .     .    .

  Joseph Pan, Zeyin Lin (SCNU)                 HBase 杂谈                          2012-4-23   29 / 74
NoSQL 概述         HBase 和 Cassandra                    什么时候使用 HBase      技术原理       HBase 特点总结       应用情况
............                                                            .....................................
物理存储


分片:Region
      按 rowkey 将 Table 动态分割为一个个 region,每个 region 包含一个
      连续的行范围 [startkey,endkey)
                                                               Table


                                                               Region

                                       按照Row Key字典序

                                                               Region



                                                               Region

                                                                 …


                                                               Region


                                     Figure 9: 表格分割成 region
                                                                           .     .    .     .     .    .

  Joseph Pan, Zeyin Lin (SCNU)                             HBase 杂谈                        2012-4-23   30 / 74
NoSQL 概述         HBase 和 Cassandra         什么时候使用 HBase    技术原理       HBase 特点总结       应用情况
............                                               .....................................
物理存储


Region
      region 按大小分割的,每个表一开始只有一个 region,随着数据不断插入
      表,region 不断增大,当增大到一个阀值的时候,region 就会等分为个新
      的 region。当 table 中的行不断增多,就会有越来越多的 region,并在存
      储集群内分发以达到负载均衡。
                                 Table                       Table


                                 Region                     Region



                                                            Region

                                 Region

                                                            Region

                                     …                        …


                                 Region                     Region


                                         Figure 10: Region 的分割 .     .   .     .     .    .

  Joseph Pan, Zeyin Lin (SCNU)                  HBase 杂谈                      2012-4-23   31 / 74
NoSQL 概述         HBase 和 Cassandra     什么时候使用 HBase     技术原理       HBase 特点总结       应用情况
............                                            .....................................
物理存储


RegionServer
HRegion 是 Hbase 中分布式存储和负载均衡的最小单元。最小单元就表
示不同的 HRegion 可以分布在不同的 HRegion server 上,但一个
HRegion 不会拆分到多个 server 上。




                                     Figure 11: RegionServer
                                                               .   .   .    .     .    .

  Joseph Pan, Zeyin Lin (SCNU)              HBase 杂谈                       2012-4-23   32 / 74
NoSQL 概述         HBase 和 Cassandra   什么时候使用 HBase        技术原理       HBase 特点总结       应用情况
............                                             .....................................
物理存储


Store
HRegion 虽然是分布式存储的最小单元,但并不是存储的最小单元。
事实上,HRegion 由一个或者多个 Store 组成,每个 Store 保存一个
columns family。每个 Strore 又由一个 memStore 和 0 至多个 StoreFile
组成。
StoreFile 以 HFile 格式保存在 HDFS 上。




                                      Figure 12: Store
                                                            .     .    .     .     .    .

  Joseph Pan, Zeyin Lin (SCNU)            HBase 杂谈                          2012-4-23   33 / 74
NoSQL 概述         HBase 和 Cassandra   什么时候使用 HBase    技术原理       HBase 特点总结       应用情况
............                                         .....................................
物理存储


HFile 的格式
HFile 分为 6 个部分:
   . Data Block 段:保存表中的数据,这部分可以被压缩;
   1

   .
   2 Meta Block 段 (可选):保存用户自定义的元信息,可以被压缩;

   . File Info 段:Hfile 的元信息,不被压缩,用户也可以在这一部分添加自己
   3

     的元信息;
   .
   4 Data Block Index 段:Data Block 的索引。每条索引的 key 是被索引的

     block 的第一条记录的 key;
   .
   5 Meta Block Index 段 (可选的):Meta Block 的索引;

   . Trailer:这一段是定长的。保存了每一段的偏移量,读取一个 HFile 时,
   6

     会首先读取 Trailer,Trailer 保存了每个段的起始位置 (段的 Magic Number
     用来做安全 check),然后,DataBlock Index 会被读取到内存中,这样,当
     检索某个 key 时,不需要扫描整个 HFile,而只需从内存中找到 key 所在
     的 block,通过一次磁盘 io 将整个 block 读取到内存中,再找到需要的
     key。DataBlock Index 采用 LRU 机制淘汰。
                                                        .     .    .     .     .    .

  Joseph Pan, Zeyin Lin (SCNU)            HBase 杂谈                      2012-4-23   34 / 74
NoSQL 概述                      HBase 和 Cassandra                                                                 什么时候使用 HBase    技术原理       HBase 特点总结       应用情况
............                                                                                                                    .....................................
物理存储


HFile 的格式

              KeyLen (int)             ValLen (int)            Key (byte[])                Value (byte[])




                Data Block 0
                                                                   DATA BLOCK MAGIC (8B)




                Data Block 1

                                                                                                                                                                    TRAILER BLOCK MAGIC (8B)

                Data Block 2                                                                                                                                             File Info Offset (long)
                                                 KeyLen        Key            id         ValLen        Val
                                                  (vint)      (byte[])      (1B)         (vint)      (byte[])                   Trailer                                 Data Index Offset (long)
                Meta Block 0
                 (Optional)                     User Defined Metadata,                                                                                                  Data Index Count (int)
                                                start with METABLOCKMAGIC

                Meta Block 1                                                                                                                                           Meta Index Offset (long)
                 (Optional)
                                                                                                                                                                        Meta Index Count (int)
                   File Info
                                                                                                                                                                 Total Uncompressed Data Bytes (long)

                                                                                                                                                                  Entry Count or Data K-V Count (int)
                                                                             User Defined

                                                                                                                                                                       Compression Codec (int)

                 Meta Index                                                                                                                                                  Version (int)
                 (Optional)

                                                                                                                                     Total Size of Trailer: 4xLong + 5xInt + 8Bytes = 60 Bytes
                    Trailer

                                                                         Index of Meta Block 0

                                                                                     …



                                                                                                                                          Figure 14: Trailer
            Offset(long)       MetaSize (int)      MetaNameLen (vint)              MetaName (byte[])


            Offset(long)       DataSize (int)         KeyLen (vint)                   Key (byte[])




         Figure 13: HFile 的格式                                                                                   3




                                                                                                                                          .           .            .               .               .    .

  Joseph Pan, Zeyin Lin (SCNU)                                                                                       HBase 杂谈                                                     2012-4-23             35 / 74
NoSQL 概述         HBase 和 Cassandra           什么时候使用 HBase                  技术原理       HBase 特点总结       应用情况
............                                                               .....................................
架构


架构

                                      5. HBase
                                      特点总结                           6. 应用情况
                                       (2 min)                        (1 min)


                       技术细节




                                                                 .
                                                 .
                                                                                                              NoSQL
                              .
                         .




           API
                                                                                                  .
                  .

                      4. HBase                                                        1. NoSQL
                      技术原理             .             HBase. 杂谈              .            概述
                      (25 min)                                                         (10 min)           .      NoSQL
                  .                                                                                               V.S.
                                                                                                                  SQL
           架构
                          .




                                                 .




                       数据模型
                                                                 .


                                     3. 什么时候                         2. HBase 和
                                     使用 HBase                         Cassandra
                                       (1 min)                         (2 min)




                                                                                  .       .           .               .      .    .

  Joseph Pan, Zeyin Lin (SCNU)                         HBase 杂谈                                                       2012-4-23   36 / 74
NoSQL 概述         HBase 和 Cassandra   什么时候使用 HBase    技术原理       HBase 特点总结       应用情况
............                                         .....................................
架构


HBase 架构




                                                        .     .    .     .     .    .

  Joseph Pan, Zeyin Lin (SCNU)            HBase 杂谈                      2012-4-23   37 / 74
NoSQL 概述         HBase 和 Cassandra   什么时候使用 HBase        技术原理       HBase 特点总结       应用情况
............                                             .....................................
架构


HBase 架构
                                                     •   Region分配、负载均衡
                                                     •   定期扫描-ROOT-、.META.
                                                     •   管理Table Schema
                                                     •   分发close、flush、compact等管理消息
                                                     •   集群管理:容错、扩容、日志分裂




                                                            .     .     .     .       .   .

  Joseph Pan, Zeyin Lin (SCNU)            HBase 杂谈                            2012-4-23   38 / 74
NoSQL 概述         HBase 和 Cassandra      什么时候使用 HBase     技术原理       HBase 特点总结       应用情况
............                                             .....................................
架构


HBase 架构
                                 • 索引查找
                                 • 数据增删改查操作
                                 • 管理操作




                                                            .     .    .     .     .    .

  Joseph Pan, Zeyin Lin (SCNU)                HBase 杂谈                      2012-4-23   39 / 74
NoSQL 概述         HBase 和 Cassandra   什么时候使用 HBase    技术原理       HBase 特点总结       应用情况
............                                         .....................................
架构


HBase 架构
                                                            • 处理Client读、写、扫描请求
                                                            • 与HMaster通信,处理管理消
                                                              息
                                                            • Region的open、close、
                                                              compaction、split、flush




                                                        .       .      .     .         .   .

  Joseph Pan, Zeyin Lin (SCNU)            HBase 杂谈                           2012-4-23     40 / 74
NoSQL 概述         HBase 和 Cassandra   什么时候使用 HBase     技术原理       HBase 特点总结       应用情况
............                                          .....................................
架构


HBase 架构
                                                     • 一个维护配置信息、          空间,
                                                       提供分布式 步、组管理的中
                                                       心化协调服务
                                                     •   储master、regionserver、
                                                       -ROOT- region的服务器地址




                                                           .      .     .        .      .    .

  Joseph Pan, Zeyin Lin (SCNU)            HBase 杂谈                               2012-4-23   41 / 74
NoSQL 概述         HBase 和 Cassandra           什么时候使用 HBase                  技术原理       HBase 特点总结       应用情况
............                                                               .....................................
技术细节


技术细节

                                      5. HBase
                                      特点总结                           6. 应用情况
                                       (2 min)                        (1 min)


                       技术细节




                                                                 .
                                                 .
                                                                                                              NoSQL
                              .
                         .




           API
                                                                                                  .
                  .

                      4. HBase                                                        1. NoSQL
                      技术原理             .             HBase. 杂谈              .            概述
                      (25 min)                                                         (10 min)           .      NoSQL
                  .                                                                                               V.S.
                                                                                                                  SQL
           架构
                          .




                                                 .




                       数据模型
                                                                 .


                                     3. 什么时候                         2. HBase 和
                                     使用 HBase                         Cassandra
                                       (1 min)                         (2 min)




                                                                                  .       .           .               .      .    .

  Joseph Pan, Zeyin Lin (SCNU)                         HBase 杂谈                                                       2012-4-23   42 / 74
NoSQL 概述         HBase 和 Cassandra           什么时候使用 HBase            技术原理       HBase 特点总结       应用情况
............                                                         .....................................
技术细节


索引方式:三层 B+ 树
      ZooKeeper 的”-ROOT-”znode
      -ROOT- region
      .META. regions                                                               User Region1
                                                       Meta Region1                   user row1

                                                        user region1 key              user row2
                                                         user region2 key                  ...
                                                               ...
                                 Root Region                                       User Region2
                                                       Meta Region2
           ZK-znode              meta region1 key
                                                               ...                         ...
             -ROOT-              meta region2 key
                                                                                           ...
                                                         user regionN key
                                                                                           ...
                                       ...                     ...
                                                                                            .
                                                                                            .
                                                                                            .
                                                                                   User RegionN
                                                                .
                                                                .
                                                                .
                                                                                           ...
                                                                                           ...
                                                                                           ...
                                       Figure 20: 三层 B+ 树                  .   .       .         .      .    .

  Joseph Pan, Zeyin Lin (SCNU)                      HBase 杂谈                                     2012-4-23   43 / 74
NoSQL 概述         HBase 和 Cassandra      什么时候使用 HBase       技术原理       HBase 特点总结       应用情况
............                                               .....................................
技术细节


索引方式:三层 B+ 树
                        华南师范大学计算机学院102室108座
                                                                        座位
                                                                             ...
                                                                         107
                                                        房号
                                                        101房             108
                                                        102房
                                      学院                 ...

                                     计算机学院
          华南师范大学                 教育科学学院
                                   ...




                                      Figure 21: 怎么找座位?        .    .    .         .      .    .

  Joseph Pan, Zeyin Lin (SCNU)               HBase 杂谈                              2012-4-23   44 / 74
NoSQL 概述         HBase 和 Cassandra      什么时候使用 HBase            技术原理       HBase 特点总结       应用情况
............                                                    .....................................
技术细节


索引方式:三层 B+ 树

                                                                             User Region
                                                900?
                                                                                     ...
                                                       Meta Region              899
                                                                                900
                                                             ...
                                                           850-950
                                 Root Region                 ...

                                      0-499
             -ROOT-                  500-1500
                                       ...




                 Figure 22: 在三层 B+ 树中找 Region 号为 900 的数据             .   .       .         .      .    .

  Joseph Pan, Zeyin Lin (SCNU)                  HBase 杂谈                                   2012-4-23   45 / 74
NoSQL 概述         HBase 和 Cassandra   什么时候使用 HBase    技术原理       HBase 特点总结       应用情况
............                                         .....................................
技术细节


问题



.
算一下
.
在 -ROOT- 和.META. 的 region 中记录大小约 1KB,按 region 默认大小
256MB 计算,能够映射多少用户数据?
.
ROOT region 能映射 2.6 × 105 个.META. region,
依次能映射总的 6.9x1010 个 user region,
意味着大约是 1.8x1019 (264 ) 字节用户数据(即 214 PB)




                                                        .     .    .     .     .    .

  Joseph Pan, Zeyin Lin (SCNU)            HBase 杂谈                      2012-4-23   46 / 74
NoSQL 概述         HBase 和 Cassandra   什么时候使用 HBase    技术原理       HBase 特点总结       应用情况
............                                         .....................................
技术细节


问题



.
算一下
.
在 -ROOT- 和.META. 的 region 中记录大小约 1KB,按 region 默认大小
256MB 计算,能够映射多少用户数据?
.
ROOT region 能映射 2.6 × 105 个.META. region,
依次能映射总的 6.9x1010 个 user region,
意味着大约是 1.8x1019 (264 ) 字节用户数据(即 214 PB)




                                                        .     .    .     .     .    .

  Joseph Pan, Zeyin Lin (SCNU)            HBase 杂谈                      2012-4-23   46 / 74
NoSQL 概述         HBase 和 Cassandra   什么时候使用 HBase    技术原理       HBase 特点总结       应用情况
............                                         .....................................
技术细节


Client Cache




client 会将查询过的位置信息保存缓存起来,缓存不会主动失效,因此
如果 client 上的缓存全部失效,则需要进行 6 次网络来回,才能定位到
正确的 region(其中三次用来发现缓存失效,另外三次用来获取位置信
息)。




                                                        .     .    .     .     .    .

  Joseph Pan, Zeyin Lin (SCNU)            HBase 杂谈                      2012-4-23   47 / 74
NoSQL 概述         HBase 和 Cassandra   什么时候使用 HBase    技术原理       HBase 特点总结       应用情况
............                                         .....................................
技术细节


读写过程
  “RAM 是硬盘,硬盘是磁带” — Jim Gray
.
对于随机访问,硬盘慢得不可忍受,但如果你把硬盘当成磁带来用,它
吞吐连续数据的速率令人震惊;它天生适合用来给以 RAM 为主的应用
做日志。
.




     使用缓存来实现顺序写!
     使用日志来实现数据恢复!



                                                            Figure 23: Jim Gray
                                                        .     .    .     .     .    .

  Joseph Pan, Zeyin Lin (SCNU)            HBase 杂谈                      2012-4-23   48 / 74
NoSQL 概述         HBase 和 Cassandra   什么时候使用 HBase    技术原理       HBase 特点总结       应用情况
............                                         .....................................
技术细节


MemStore+WAL

MemStore 中的数据是排序的,当 MemStore 累计到一定阈值时,就会
创建一个新的 MemStore,并且将老的 MemStore 添加到 flush 队列,由
单独的线程 flush 到磁盘上,成为一个 StoreFile。于此同时,系统会在
zookeeper 中记录一个 redo point,表示这个时刻之前的变更已经持久化
了。(Minor Compact)
当系统出现意外时,可能导致内存 (MemStore) 中的数据丢失,此时使
用 Log(WAL log) 来恢复 checkpoint 之后的数据。
前面提到过 StoreFile 是只读的,一旦创建后就不可以再修改。因此
Hbase 的更新其实是不断追加的操作。当一个 Store 中的 StoreFile 达到
一定的阈值后,就会进行一次合并 (major compact),将对同一个 key 的
修改合并到一起,形成一个大的 StoreFile,当 StoreFile 的大小达到一定
阈值后,又会对 StoreFile 进行 split,等分为两个 StoreFile。

                                                        .     .    .     .     .    .

  Joseph Pan, Zeyin Lin (SCNU)            HBase 杂谈                      2012-4-23   49 / 74
NoSQL 概述         HBase 和 Cassandra      什么时候使用 HBase             技术原理       HBase 特点总结       应用情况
............                                                     .....................................
技术细节


MemStore+WAL



                         MemStore
                                                                  flush
          writer
                         HLog
                          Seq#1,Table13,Region11,…
                                                     StoreFile       StoreFile   StoreFile
                          Seq#2,Table5,Region2,…




                                     Figure 24: MemStore+WAL

                                                                     .      .    .      .      .    .

  Joseph Pan, Zeyin Lin (SCNU)                 HBase 杂谈                                 2012-4-23   50 / 74
NoSQL 概述         HBase 和 Cassandra   什么时候使用 HBase    技术原理       HBase 特点总结       应用情况
............                                         .....................................
技术细节


版本更新 I




                                     Figure 25: 版本更新    .     .    .     .     .    .

  Joseph Pan, Zeyin Lin (SCNU)            HBase 杂谈                      2012-4-23   51 / 74
NoSQL 概述         HBase 和 Cassandra   什么时候使用 HBase    技术原理       HBase 特点总结       应用情况
............                                         .....................................
技术细节


版本更新 II




                                     Figure 26: 版本更新    .     .    .     .     .    .

  Joseph Pan, Zeyin Lin (SCNU)            HBase 杂谈                      2012-4-23   52 / 74
NoSQL 概述         HBase 和 Cassandra   什么时候使用 HBase    技术原理       HBase 特点总结       应用情况
............                                         .....................................
技术细节


版本更新 III




                                     Figure 27: 版本更新    .     .    .     .     .    .

  Joseph Pan, Zeyin Lin (SCNU)            HBase 杂谈                      2012-4-23   53 / 74
NoSQL 概述         HBase 和 Cassandra   什么时候使用 HBase    技术原理       HBase 特点总结       应用情况
............                                         .....................................
技术细节


版本更新 IV




                                     Figure 28: 版本更新    .     .    .     .     .    .

  Joseph Pan, Zeyin Lin (SCNU)            HBase 杂谈                      2012-4-23   54 / 74
NoSQL 概述         HBase 和 Cassandra   什么时候使用 HBase    技术原理       HBase 特点总结       应用情况
............                                         .....................................
技术细节


版本更新 V




                                     Figure 29: 版本更新    .     .    .     .     .    .

  Joseph Pan, Zeyin Lin (SCNU)            HBase 杂谈                      2012-4-23   55 / 74
NoSQL 概述         HBase 和 Cassandra   什么时候使用 HBase      技术原理       HBase 特点总结       应用情况
............                                           .....................................
技术细节


CAP 理论

  10 年前,Eric Brewer 教授指出了著名的 CAP 理论,CAP 理论告诉
我们, 一个分布式系统不可能满足一致性,可用性和分区容错性这三个
需求,最多只能同时满足两个。




                                      Figure 30: CAP


                                                          .     .    .     .     .    .

  Joseph Pan, Zeyin Lin (SCNU)            HBase 杂谈                        2012-4-23   56 / 74
NoSQL 概述         HBase 和 Cassandra   什么时候使用 HBase    技术原理       HBase 特点总结       应用情况
............                                         .....................................
技术细节


CAP 理论




不同于传统的 RDBMS 的 “ACID” 特性,分布式数据库通常需要具备的
基本特性称为 “BASE”:
      Basically Availble — 基本可用
      Soft-state — 软状态/柔性事务
      Eventual Consistency — 最终一致性




                                                        .     .    .     .     .    .

  Joseph Pan, Zeyin Lin (SCNU)            HBase 杂谈                      2012-4-23   57 / 74
NoSQL 概述         HBase 和 Cassandra   什么时候使用 HBase    技术原理       HBase 特点总结       应用情况
............                                         .....................................
技术细节


CAP 理论




  因此系统的关注点不同, 相应的采用的策略也是不一样的, 只有真正
的理解了系统的需求, 才有可能利用好 CAP 理论。
  HBase 选择了 CP,即一致性和分区容错性,能够表现出强一致性
以及很高的分区容错性。




                                                        .     .    .     .     .    .

  Joseph Pan, Zeyin Lin (SCNU)            HBase 杂谈                      2012-4-23   58 / 74
NoSQL 概述         HBase 和 Cassandra   什么时候使用 HBase    技术原理       HBase 特点总结       应用情况
............                                         .....................................
技术细节


一致性




同一行数据的读写只在同一台 regionserver 上进行,因此 HBase 具有强
一致性。




                                                        .     .    .     .     .    .

  Joseph Pan, Zeyin Lin (SCNU)            HBase 杂谈                      2012-4-23   59 / 74
NoSQL 概述         HBase 和 Cassandra   什么时候使用 HBase    技术原理       HBase 特点总结       应用情况
............                                         .....................................
技术细节


可靠性



  . 存在单点故障,Region Server 宕机后,短时间内该 server 维护的
  1

    region 无法访问,等待 failover 生效。
  . 通过 Master 维护各 Region Server 健康状况和 Region 分布。
  2

  . 多个 Master,Master 宕机有 zookeeper 的 paxos 投票机制选取下一
  3

    任 Master。Master 就算全宕机,也不影响 Region 读写。Master 仅
    充当一个自动运维角色。
  . HDFS 为分布式存储引擎,一备三,高可靠,0 数据丢失。
  4

  5. HDFS 的 NameNode 是一个 SPOF。




                                                        .     .    .     .     .    .

  Joseph Pan, Zeyin Lin (SCNU)            HBase 杂谈                      2012-4-23   60 / 74
NoSQL 概述         HBase 和 Cassandra   什么时候使用 HBase    技术原理       HBase 特点总结       应用情况
............                                         .....................................
技术细节


读写性能

      Read
             Key/Value
             客户端 Cache
             数据读写定位可能要通过最多 6 次的网络 RPC,性能较低。
             如果 client 上的缓存全部失效,则需要进行 6 次网络来回,才能定位
             到正确的 region(其中三次用来发现缓存失效,另外三次用来获取位
             置信息)
             BloomFilter(用于检索一个元素是否在一个集合中,速度快,但有一
             定的误识别率)
      Write
             使用日志型的数据结构 (WAL,Write-Ahead Logging)
             Cache(MemStore)
             合并写操作 group commit

                                                        .     .    .     .     .    .

  Joseph Pan, Zeyin Lin (SCNU)            HBase 杂谈                      2012-4-23   61 / 74
NoSQL 概述         HBase 和 Cassandra   什么时候使用 HBase    技术原理       HBase 特点总结       应用情况
............                                         .....................................
技术细节


伸缩性




  1. 扩容:直接新增机器
             region 的自动分裂以及 master 的 balance;
             只用增加 datanode 机器即可增加容量;
             只用增加 regionserver 机器即可增加读写吞吐量;
             regionserver 扩容,通过将自身发布到 Master,Master 均匀分布。
  2. Schema 变化:动态增删列 (族)




                                                        .     .    .     .     .    .

  Joseph Pan, Zeyin Lin (SCNU)            HBase 杂谈                      2012-4-23   62 / 74
NoSQL 概述          HBase 和 Cassandra           什么时候使用 HBase                  技术原理       HBase 特点总结       应用情况
............                                                                .....................................
HBase API


HBase API

                                       5. HBase
                                       特点总结                           6. 应用情况
                                        (2 min)                        (1 min)


                       技术细节




                                                                  .
                                                  .
                                                                                                               NoSQL
                              .
                         .




            API
                                                                                                   .
                   .

                       4. HBase                                                        1. NoSQL
                       技术原理             .             HBase. 杂谈              .            概述
                       (25 min)                                                         (10 min)           .      NoSQL
                   .                                                                                               V.S.
                                                                                                                   SQL
            架构
                          .




                                                  .




                       数据模型
                                                                  .


                                      3. 什么时候                         2. HBase 和
                                      使用 HBase                         Cassandra
                                        (1 min)                         (2 min)




                                                                                   .       .           .               .      .    .

  Joseph Pan, Zeyin Lin (SCNU)                          HBase 杂谈                                                       2012-4-23   63 / 74
NoSQL 概述         HBase 和 Cassandra   什么时候使用 HBase    技术原理       HBase 特点总结       应用情况
............                                         .....................................
HBase API


HBase API


       Java API
             Get
             Put
             Delete
             Scan
             HBaseAdmin
             MapReduce
       HBase shell (like mysql/hive)
       Thrift
       REST
       Jython,Scala,Groovy DSL, Cascading, Pig, Hive...


                                                        .     .    .     .     .    .

  Joseph Pan, Zeyin Lin (SCNU)            HBase 杂谈                      2012-4-23   64 / 74
NoSQL 概述            HBase 和 Cassandra           什么时候使用 HBase                技术原理       HBase 特点总结       应用情况
............                                                                .....................................
HBase API


Get/Scan
Gets 是在 Scan 的基础上实现的。下面的讨论 Get 同样可以用 Scan 来
描述。
  .
  1 默认 Get 例子
       §
            Get g e t = new Get ( Bytes . t o B y t e s ( ”row1” ) ) ;
            Result r = htable . get ( get ) ;
            b y t e [ ] b = r . g e t V a l u e ( Bytes . t o B y t e s ( ” c f ” ) , Bytes . t o B y t e s ( ” a t t r ” ) )
                    ; // r e t u r n s c u r r e n t v e r s i o n o f v a l u e
                                                                                                                                ¥
                                                                                                                                
   2. 含有版本的 Get 例子
       §
            Get g e t = new Get ( Bytes . t o B y t e s ( ”row1” ) ) ;
            g e t . s e t M a x V e r s i o n s ( 3 ) ; // w i l l r e t u r n l a s t 3 v e r s i o n s o f row
            Result r = htable . get ( get ) ;
            b y t e [ ] b = r . g e t V a l u e ( Bytes . t o B y t e s ( ” c f ” ) , Bytes . t o B y t e s ( ” a t t r ” ) )
                    ; // r e t u r n s c u r r e n t v e r s i o n o f v a l u e
            L i s t KeyValue kv = r . getColumn ( Bytes . t o B y t e s ( ” c f ” ) , Bytes .
                    t o B y t e s ( ” a t t r ” ) ) ; // r e t u r n s a l l v e r s i o n s o f t h i s column
                                                                                                                                ¥
                                                                                                                                
                                                                                 .       .       .       .       .      .

  Joseph Pan, Zeyin Lin (SCNU)                           HBase 杂谈                                        2012-4-23     65 / 74
NoSQL 概述            HBase 和 Cassandra          什么时候使用 HBase                技术原理       HBase 特点总结       应用情况
............                                                               .....................................
HBase API


Put
   一个 Put 操作会给一个 cell, 创建一个版本,默认使用当前时间戳,
当然你也可以自己设置时间戳。这就意味着你可以把时间设置在过去或
者未来,或者随意使用一个 Long 值。要想覆盖一个现有的值,就意味
着你的 row,column 和版本必须完全相等。
 .
 1 不指明版本的例子(Hbase 会用当前时间作为版本)
   §
            Put put = new Put ( Bytes . t o B y t e s ( row ) ) ;
            put . add ( Bytes . t o B y t e s ( ” c f ” ) , Bytes . t o B y t e s ( ” a t t r 1 ” ) , Bytes .
                    t o B y t e s ( data ) ) ;
            h t a b l e . put ( put ) ;
                                                                                                                          ¥
                                                                                                                          
   2. 指明版本的例子
     §
            Put put = new Put ( Bytes . t o B y t e s ( row ) ) ;
            l o n g e x p l i c i t T i m e I n M s = 5 5 5 ; // j u s t an example
            put . add ( Bytes . t o B y t e s ( ” c f ” ) , Bytes . t o B y t e s ( ” a t t r 1 ” ) ,
                    e x p l i c i t T i m e I n M s , Bytes . t o B y t e s ( data ) ) ;
            h t a b l e . put ( put ) ;
                                                                                                                          ¥
                                                                                                                          
                                                                                .       .       .       .      .    .

  Joseph Pan, Zeyin Lin (SCNU)                          HBase 杂谈                                        2012-4-23   66 / 74
NoSQL 概述         HBase 和 Cassandra   什么时候使用 HBase    技术原理       HBase 特点总结       应用情况
............                                         .....................................
HBase API


Delete



       有两种方式来确定要删除的版本。
       删除所有比当前早的版本。
       删除指定的版本。
  一个删除操作可以删除一行,也可以是一个 column family,或者仅
仅删除一个 column。你也可以删除指明的一个版本。若你没有指明,默
认情况下是删除比当前时间早的版本。
  删除操作的实现是创建一个删除标记。当写下一个删除标记后,只
有下一个 major compaction 操作发起之后,这个删除标记才会消失。



                                                        .     .    .     .     .    .

  Joseph Pan, Zeyin Lin (SCNU)            HBase 杂谈                      2012-4-23   67 / 74
NoSQL 概述         HBase 和 Cassandra           什么时候使用 HBase                  技术原理       HBase 特点总结       应用情况
............                                                               .....................................



HBase 特点总结

                                      5. HBase
                                      特点总结                           6. 应用情况
                                       (2 min)                        (1 min)


                       技术细节




                                                                 .
                                                 .
                                                                                                              NoSQL
                              .
                         .




           API
                                                                                                  .
                  .

                      4. HBase                                                        1. NoSQL
                      技术原理             .             HBase. 杂谈              .            概述
                      (25 min)                                                         (10 min)           .      NoSQL
                  .                                                                                               V.S.
                                                                                                                  SQL
           架构
                          .




                                                 .




                       数据模型
                                                                 .


                                     3. 什么时候                         2. HBase 和
                                     使用 HBase                         Cassandra
                                       (1 min)                         (2 min)




                                                                                  .       .           .               .      .    .

  Joseph Pan, Zeyin Lin (SCNU)                         HBase 杂谈                                                       2012-4-23   68 / 74
NoSQL 概述         HBase 和 Cassandra   什么时候使用 HBase    技术原理       HBase 特点总结       应用情况
............                                         .....................................



HBase 特点总结



      行操作的强一致性
      线性扩展,自动分表
      支持 RegionServers 间的自动故障转移
      和 Hadoop 无缝集成,支持 MapReduce
      高性能随机写
      丰富的 API 接口




                                                        .     .    .     .     .    .

  Joseph Pan, Zeyin Lin (SCNU)            HBase 杂谈                      2012-4-23   69 / 74
NoSQL 概述         HBase 和 Cassandra   什么时候使用 HBase    技术原理       HBase 特点总结       应用情况
............                                         .....................................



HBase 特点总结



      行操作的强一致性
      线性扩展,自动分表
      支持 RegionServers 间的自动故障转移
      和 Hadoop 无缝集成,支持 MapReduce
      高性能随机写
      丰富的 API 接口




                                                        .     .    .     .     .    .

  Joseph Pan, Zeyin Lin (SCNU)            HBase 杂谈                      2012-4-23   69 / 74
NoSQL 概述         HBase 和 Cassandra   什么时候使用 HBase    技术原理       HBase 特点总结       应用情况
............                                         .....................................



HBase 特点总结



      行操作的强一致性
      线性扩展,自动分表
      支持 RegionServers 间的自动故障转移
      和 Hadoop 无缝集成,支持 MapReduce
      高性能随机写
      丰富的 API 接口




                                                        .     .    .     .     .    .

  Joseph Pan, Zeyin Lin (SCNU)            HBase 杂谈                      2012-4-23   69 / 74
NoSQL 概述         HBase 和 Cassandra   什么时候使用 HBase    技术原理       HBase 特点总结       应用情况
............                                         .....................................



HBase 特点总结



      行操作的强一致性
      线性扩展,自动分表
      支持 RegionServers 间的自动故障转移
      和 Hadoop 无缝集成,支持 MapReduce
      高性能随机写
      丰富的 API 接口




                                                        .     .    .     .     .    .

  Joseph Pan, Zeyin Lin (SCNU)            HBase 杂谈                      2012-4-23   69 / 74
NoSQL 概述         HBase 和 Cassandra   什么时候使用 HBase    技术原理       HBase 特点总结       应用情况
............                                         .....................................



HBase 特点总结



      行操作的强一致性
      线性扩展,自动分表
      支持 RegionServers 间的自动故障转移
      和 Hadoop 无缝集成,支持 MapReduce
      高性能随机写
      丰富的 API 接口




                                                        .     .    .     .     .    .

  Joseph Pan, Zeyin Lin (SCNU)            HBase 杂谈                      2012-4-23   69 / 74
NoSQL 概述         HBase 和 Cassandra   什么时候使用 HBase    技术原理       HBase 特点总结       应用情况
............                                         .....................................



HBase 特点总结



      行操作的强一致性
      线性扩展,自动分表
      支持 RegionServers 间的自动故障转移
      和 Hadoop 无缝集成,支持 MapReduce
      高性能随机写
      丰富的 API 接口




                                                        .     .    .     .     .    .

  Joseph Pan, Zeyin Lin (SCNU)            HBase 杂谈                      2012-4-23   69 / 74
NoSQL 概述         HBase 和 Cassandra   什么时候使用 HBase    技术原理       HBase 特点总结       应用情况
............                                         .....................................



HBase V.S. Cassandra


      Cassandra 只有一种节点,而 HBase 有多种不同角色,又架构在
      Hadoop 底层平台之上,部署上 Cassandra 更简单;
      Cassandra 的数据一致性策略是可配置的;
      HBase 提供了 Cassandra 没有的行锁机制,Cassandra 要想使用锁需
      要配合其他系统,如 Hadoop Zookeeper;
      HBase 提供更好的 MapReduce 并行计算支持,Cassandra 在 0.6 版
      本也提供了这个功能,但还需要有一个 Hadoop 集群来运行它. 需
      要将数据从 Cassandra 集群迁移到 Hadoop 集群. 不适合对大型数据
      运行 MapReduce 任务.;
      Cassandra 的读写性能和可扩展性更好,但不擅长区间扫描。


                                                        .     .    .     .     .    .

  Joseph Pan, Zeyin Lin (SCNU)            HBase 杂谈                      2012-4-23   70 / 74
NoSQL 概述         HBase 和 Cassandra   什么时候使用 HBase    技术原理       HBase 特点总结       应用情况
............                                         .....................................



My point of view




      HBase 更成熟,Cassandra 更有活力;
      HBase 更加适合于数据仓库、大型数据的处理和分析(如进行 Web
      页面的索引等)  ,而 Cassandra 更适合于实时事务处理和提供交互型
      数据。
更多比较:              Cassandra 和 HBase 主要设计思路对比
                   .




                                                        .     .    .     .     .    .

  Joseph Pan, Zeyin Lin (SCNU)            HBase 杂谈                      2012-4-23   71 / 74
NoSQL 概述         HBase 和 Cassandra           什么时候使用 HBase                  技术原理       HBase 特点总结       应用情况
............                                                               .....................................



应用情况

                                      5. HBase
                                      特点总结                           6. 应用情况
                                       (2 min)                        (1 min)


                       技术细节




                                                                 .
                                                 .
                                                                                                              NoSQL
                              .
                         .




           API
                                                                                                  .
                  .

                      4. HBase                                                        1. NoSQL
                      技术原理             .             HBase. 杂谈              .            概述
                      (25 min)                                                         (10 min)           .      NoSQL
                  .                                                                                               V.S.
                                                                                                                  SQL
           架构
                          .




                                                 .




                       数据模型
                                                                 .


                                     3. 什么时候                         2. HBase 和
                                     使用 HBase                         Cassandra
                                       (1 min)                         (2 min)




                                                                                  .       .           .               .      .    .

  Joseph Pan, Zeyin Lin (SCNU)                         HBase 杂谈                                                       2012-4-23   72 / 74
NoSQL 概述         HBase 和 Cassandra   什么时候使用 HBase    技术原理       HBase 特点总结       应用情况
............                                         .....................................



谁在用 HBase?


      Yahoo!
      Facebook
      Hulu
      LinkedIn
      Last.fm
      百度
      阿里巴巴
      中国移动
      ...


                                                        .     .    .     .     .    .

  Joseph Pan, Zeyin Lin (SCNU)            HBase 杂谈                      2012-4-23   73 / 74
NoSQL 概述         HBase 和 Cassandra    什么时候使用 HBase    技术原理       HBase 特点总结       应用情况
............                                          .....................................




                                     Thank You!



                                                         .     .    .     .     .    .

  Joseph Pan, Zeyin Lin (SCNU)             HBase 杂谈                      2012-4-23   74 / 74

Contenu connexe

En vedette

Cassandra vs. MongoDB
Cassandra vs. MongoDBCassandra vs. MongoDB
Cassandra vs. MongoDBScaleGrid.io
 
Cours HBase et Base de Données Orientées Colonnes (HBase, Column Oriented Dat...
Cours HBase et Base de Données Orientées Colonnes (HBase, Column Oriented Dat...Cours HBase et Base de Données Orientées Colonnes (HBase, Column Oriented Dat...
Cours HBase et Base de Données Orientées Colonnes (HBase, Column Oriented Dat...Hatim CHAHDI
 
Sept 17 2013 - THUG - HBase a Technical Introduction
Sept 17 2013 - THUG - HBase a Technical IntroductionSept 17 2013 - THUG - HBase a Technical Introduction
Sept 17 2013 - THUG - HBase a Technical IntroductionAdam Muise
 
Hadoop World 2011: Advanced HBase Schema Design
Hadoop World 2011: Advanced HBase Schema DesignHadoop World 2011: Advanced HBase Schema Design
Hadoop World 2011: Advanced HBase Schema DesignCloudera, Inc.
 
Apache Phoenix: Transforming HBase into a SQL Database
Apache Phoenix: Transforming HBase into a SQL DatabaseApache Phoenix: Transforming HBase into a SQL Database
Apache Phoenix: Transforming HBase into a SQL DatabaseDataWorks Summit
 
Hadoop Hbase - Introduction
Hadoop Hbase - IntroductionHadoop Hbase - Introduction
Hadoop Hbase - IntroductionBlandine Larbret
 
Tokyo HBase Meetup - Realtime Big Data at Facebook with Hadoop and HBase (ja)
Tokyo HBase Meetup - Realtime Big Data at Facebook with Hadoop and HBase (ja)Tokyo HBase Meetup - Realtime Big Data at Facebook with Hadoop and HBase (ja)
Tokyo HBase Meetup - Realtime Big Data at Facebook with Hadoop and HBase (ja)tatsuya6502
 
Apache Hadoop and HBase
Apache Hadoop and HBaseApache Hadoop and HBase
Apache Hadoop and HBaseCloudera, Inc.
 
Taming HBase with Apache Phoenix and SQL
Taming HBase with Apache Phoenix and SQLTaming HBase with Apache Phoenix and SQL
Taming HBase with Apache Phoenix and SQLHBaseCon
 
Apache HBase - Introduction & Use Cases
Apache HBase - Introduction & Use CasesApache HBase - Introduction & Use Cases
Apache HBase - Introduction & Use CasesData Con LA
 
How To Analyze Geolocation Data with Hive and Hadoop
How To Analyze Geolocation Data with Hive and HadoopHow To Analyze Geolocation Data with Hive and Hadoop
How To Analyze Geolocation Data with Hive and HadoopHortonworks
 
Apache HBase for Architects
Apache HBase for ArchitectsApache HBase for Architects
Apache HBase for ArchitectsNick Dimiduk
 
Introduction To HBase
Introduction To HBaseIntroduction To HBase
Introduction To HBaseAnil Gupta
 
Apache Phoenix and Apache HBase: An Enterprise Grade Data Warehouse
Apache Phoenix and Apache HBase: An Enterprise Grade Data WarehouseApache Phoenix and Apache HBase: An Enterprise Grade Data Warehouse
Apache Phoenix and Apache HBase: An Enterprise Grade Data WarehouseJosh Elser
 
HBase Vs Cassandra Vs MongoDB - Choosing the right NoSQL database
HBase Vs Cassandra Vs MongoDB - Choosing the right NoSQL databaseHBase Vs Cassandra Vs MongoDB - Choosing the right NoSQL database
HBase Vs Cassandra Vs MongoDB - Choosing the right NoSQL databaseEdureka!
 
Intro to HBase Internals & Schema Design (for HBase users)
Intro to HBase Internals & Schema Design (for HBase users)Intro to HBase Internals & Schema Design (for HBase users)
Intro to HBase Internals & Schema Design (for HBase users)alexbaranau
 
Hw09 Practical HBase Getting The Most From Your H Base Install
Hw09   Practical HBase  Getting The Most From Your H Base InstallHw09   Practical HBase  Getting The Most From Your H Base Install
Hw09 Practical HBase Getting The Most From Your H Base InstallCloudera, Inc.
 
Analyser sa maison à l’aide de Apache Storm (Big Data en Temps Réel)
Analyser sa maison à l’aide de Apache Storm (Big Data en Temps Réel)Analyser sa maison à l’aide de Apache Storm (Big Data en Temps Réel)
Analyser sa maison à l’aide de Apache Storm (Big Data en Temps Réel)Microsoft Décideurs IT
 

En vedette (20)

Cassandra vs. MongoDB
Cassandra vs. MongoDBCassandra vs. MongoDB
Cassandra vs. MongoDB
 
Hbase Nosql
Hbase NosqlHbase Nosql
Hbase Nosql
 
Cours HBase et Base de Données Orientées Colonnes (HBase, Column Oriented Dat...
Cours HBase et Base de Données Orientées Colonnes (HBase, Column Oriented Dat...Cours HBase et Base de Données Orientées Colonnes (HBase, Column Oriented Dat...
Cours HBase et Base de Données Orientées Colonnes (HBase, Column Oriented Dat...
 
Sept 17 2013 - THUG - HBase a Technical Introduction
Sept 17 2013 - THUG - HBase a Technical IntroductionSept 17 2013 - THUG - HBase a Technical Introduction
Sept 17 2013 - THUG - HBase a Technical Introduction
 
Hadoop World 2011: Advanced HBase Schema Design
Hadoop World 2011: Advanced HBase Schema DesignHadoop World 2011: Advanced HBase Schema Design
Hadoop World 2011: Advanced HBase Schema Design
 
Apache Phoenix: Transforming HBase into a SQL Database
Apache Phoenix: Transforming HBase into a SQL DatabaseApache Phoenix: Transforming HBase into a SQL Database
Apache Phoenix: Transforming HBase into a SQL Database
 
Hadoop Hbase - Introduction
Hadoop Hbase - IntroductionHadoop Hbase - Introduction
Hadoop Hbase - Introduction
 
Tokyo HBase Meetup - Realtime Big Data at Facebook with Hadoop and HBase (ja)
Tokyo HBase Meetup - Realtime Big Data at Facebook with Hadoop and HBase (ja)Tokyo HBase Meetup - Realtime Big Data at Facebook with Hadoop and HBase (ja)
Tokyo HBase Meetup - Realtime Big Data at Facebook with Hadoop and HBase (ja)
 
Apache Hadoop and HBase
Apache Hadoop and HBaseApache Hadoop and HBase
Apache Hadoop and HBase
 
Taming HBase with Apache Phoenix and SQL
Taming HBase with Apache Phoenix and SQLTaming HBase with Apache Phoenix and SQL
Taming HBase with Apache Phoenix and SQL
 
Apache HBase - Introduction & Use Cases
Apache HBase - Introduction & Use CasesApache HBase - Introduction & Use Cases
Apache HBase - Introduction & Use Cases
 
How To Analyze Geolocation Data with Hive and Hadoop
How To Analyze Geolocation Data with Hive and HadoopHow To Analyze Geolocation Data with Hive and Hadoop
How To Analyze Geolocation Data with Hive and Hadoop
 
Apache HBase for Architects
Apache HBase for ArchitectsApache HBase for Architects
Apache HBase for Architects
 
Introduction To HBase
Introduction To HBaseIntroduction To HBase
Introduction To HBase
 
Apache Phoenix and Apache HBase: An Enterprise Grade Data Warehouse
Apache Phoenix and Apache HBase: An Enterprise Grade Data WarehouseApache Phoenix and Apache HBase: An Enterprise Grade Data Warehouse
Apache Phoenix and Apache HBase: An Enterprise Grade Data Warehouse
 
HBase Vs Cassandra Vs MongoDB - Choosing the right NoSQL database
HBase Vs Cassandra Vs MongoDB - Choosing the right NoSQL databaseHBase Vs Cassandra Vs MongoDB - Choosing the right NoSQL database
HBase Vs Cassandra Vs MongoDB - Choosing the right NoSQL database
 
Intro to HBase Internals & Schema Design (for HBase users)
Intro to HBase Internals & Schema Design (for HBase users)Intro to HBase Internals & Schema Design (for HBase users)
Intro to HBase Internals & Schema Design (for HBase users)
 
Hw09 Practical HBase Getting The Most From Your H Base Install
Hw09   Practical HBase  Getting The Most From Your H Base InstallHw09   Practical HBase  Getting The Most From Your H Base Install
Hw09 Practical HBase Getting The Most From Your H Base Install
 
Intro to HBase
Intro to HBaseIntro to HBase
Intro to HBase
 
Analyser sa maison à l’aide de Apache Storm (Big Data en Temps Réel)
Analyser sa maison à l’aide de Apache Storm (Big Data en Temps Réel)Analyser sa maison à l’aide de Apache Storm (Big Data en Temps Réel)
Analyser sa maison à l’aide de Apache Storm (Big Data en Temps Réel)
 

HBase杂谈

  • 1. NoSQL 概述 HBase 和 Cassandra 什么时候使用 HBase 技术原理 HBase 特点总结 应用情况 ............ ..................................... . HBase 杂谈 NoSQL, BigTable, HBase, Cassandra . 潘伟洲1 林泽殷1 1 Master Candidate School of Computer South China Normal University April, 2012 . . . . . . Joseph Pan, Zeyin Lin (SCNU) HBase 杂谈 2012-4-23 1 / 74
  • 2. NoSQL 概述 HBase 和 Cassandra 什么时候使用 HBase 技术原理 HBase 特点总结 应用情况 ............ ..................................... 心智图 5. HBase 特点总结 6. 应用情况 (2 min) (1 min) 技术细节 . . NoSQL . . API . . 4. HBase 1. NoSQL 技术原理 . HBase. 杂谈 . 概述 (25 min) (10 min) . NoSQL . V.S. SQL 架构 . . 数据模型 . 3. 什么时候 2. HBase 和 使用 HBase Cassandra (1 min) (2 min) . . . . . . Joseph Pan, Zeyin Lin (SCNU) HBase 杂谈 2012-4-23 2 / 74
  • 3. NoSQL 概述 HBase 和 Cassandra 什么时候使用 HBase 技术原理 HBase 特点总结 应用情况 ............ ..................................... NoSQL 概述 5. HBase 特点总结 6. 应用情况 (2 min) (1 min) 技术细节 . . NoSQL . . API . . 4. HBase 1. NoSQL 技术原理 . HBase. 杂谈 . 概述 (25 min) (10 min) . NoSQL . V.S. SQL 架构 . . 数据模型 . 3. 什么时候 2. HBase 和 使用 HBase Cassandra (1 min) (2 min) . . . . . . Joseph Pan, Zeyin Lin (SCNU) HBase 杂谈 2012-4-23 3 / 74
  • 4. NoSQL 概述 HBase 和 Cassandra 什么时候使用 HBase 技术原理 HBase 特点总结 应用情况 ............ ..................................... NoSQL 5. HBase 特点总结 6. 应用情况 (2 min) (1 min) 技术细节 . . NoSQL . . API . . 4. HBase 1. NoSQL 技术原理 . HBase. 杂谈 . 概述 (25 min) (10 min) . NoSQL . V.S. SQL 架构 . . 数据模型 . 3. 什么时候 2. HBase 和 使用 HBase Cassandra (1 min) (2 min) . . . . . . Joseph Pan, Zeyin Lin (SCNU) HBase 杂谈 2012-4-23 4 / 74
  • 5. NoSQL 概述 HBase 和 Cassandra 什么时候使用 HBase 技术原理 HBase 特点总结 应用情况 ............ ..................................... NoSQL: Why 数据存储的趋势 Giant Global Graph (GGG) Ontologies RDF Folksonomies Tagging Wikis User- Blogs generated Content RSS Hypertext Text documents 1990 2000 2010 2020 2002 2004 2006 2008 2010 2012 Web 1.0 Web 2.0 Web 3.0 数据增长 信息连接 并发性 结构多样性 . . . . . . Joseph Pan, Zeyin Lin (SCNU) HBase 杂谈 2012-4-23 5 / 74
  • 6. NoSQL 概述 HBase 和 Cassandra 什么时候使用 HBase 技术原理 HBase 特点总结 应用情况 ............ ..................................... NoSQL: Why 关系型数据库的不足 关系型数据库:管理结构化数据 复杂导致不确定性 有些问题不适合采用关联型的 数据模型 当数据量增长到一台机器已经 不能容纳, 我们需要将不同的数 据表分布到不同的机器 Figure 1: 数据量增长对性能的消极影响 . . . . . . Joseph Pan, Zeyin Lin (SCNU) HBase 杂谈 2012-4-23 6 / 74
  • 7. NoSQL 概述 HBase 和 Cassandra 什么时候使用 HBase 技术原理 HBase 特点总结 应用情况 ............ ..................................... NoSQL: Why Help! . . . . . . Joseph Pan, Zeyin Lin (SCNU) HBase 杂谈 2012-4-23 7 / 74
  • 8. NoSQL 概述 HBase 和 Cassandra 什么时候使用 HBase 技术原理 HBase 特点总结 应用情况 ............ ..................................... NoSQL: What NoSQL 的定义 No to SQL No Only SQL . . . . . . Joseph Pan, Zeyin Lin (SCNU) HBase 杂谈 2012-4-23 8 / 74
  • 9. NoSQL 概述 HBase 和 Cassandra 什么时候使用 HBase 技术原理 HBase 特点总结 应用情况 ............ ..................................... NoSQL: What Martin Fowler 的定义 . NosqlDefinition . “Some characteristics are common amongst these databases, but none are definitional. Not using the relational model (nor the SQL language) Open source Designed to run on large clusters Based on the needs of 21st century web properties No schema, allowing fields to be added Figure 2: Martin Fowler to any record without controls ” . . . . . . . Joseph Pan, Zeyin Lin (SCNU) HBase 杂谈 2012-4-23 9 / 74
  • 10. NoSQL 概述 HBase 和 Cassandra 什么时候使用 HBase 技术原理 HBase 特点总结 应用情况 ............ ..................................... NoSQL 的特点 NoSQL 的特点 简单灵活 复杂的操作交给应用层 使用 NoSQL 数据模型,通常需要你对存储的内部结构和实现算法有 一定的了解 使用 NoSQL 数据库,通常要自己处理数据结构解析和数据的冗余复 制问题 需要预先考虑数据的分级处理 牺牲稳定,换取性能 可能不具备关系数据库的 ACID 特性的一种或几种: Atomic:原子性 Consistency:一致性 Isolation:隔离性 Durability:持久性 . . . . . . Joseph Pan, Zeyin Lin (SCNU) HBase 杂谈 2012-4-23 10 / 74
  • 11. NoSQL 概述 HBase 和 Cassandra 什么时候使用 HBase 技术原理 HBase 特点总结 应用情况 ............ ..................................... NoSQL 的特点 数据模型进化论 SQL→NoSQL,进步 or 倒退? Key-Value Document, OrderKey-Value BigTable Graph SQL Full-TextSearch Figure 3: 数据模型进化论 . . . . . . Joseph Pan, Zeyin Lin (SCNU) HBase 杂谈 2012-4-23 11 / 74
  • 12. NoSQL 概述 HBase 和 Cassandra 什么时候使用 HBase 技术原理 HBase 特点总结 应用情况 ............ ..................................... NoSQL 的特点 NoSQL 族谱 目前简单将 NoSQL 几个分类的代表产品列举如下: Key-Value 存储: Amazon Dynamo, Voldemort, BDB, Kyoto Cabinet Key 结构化数据存储:Redis 类 BigTable 存储: Google BigTable, Apache HBase, Apache Cassandra 文档数据库: MongoDB, CouchDB 全文索引: Apache Lucene, Apache Solr 图数据库: neo4j, HyperGraphDB, FlockDB . . . . . . Joseph Pan, Zeyin Lin (SCNU) HBase 杂谈 2012-4-23 12 / 74
  • 13. NoSQL 概述 HBase 和 Cassandra 什么时候使用 HBase 技术原理 HBase 特点总结 应用情况 ............ ..................................... NoSQL 的特点 NoSQL 族谱 Figure 4: NoSQL 族谱 . . . . . . Joseph Pan, Zeyin Lin (SCNU) HBase 杂谈 2012-4-23 13 / 74
  • 14. NoSQL 概述 HBase 和 Cassandra 什么时候使用 HBase 技术原理 HBase 特点总结 应用情况 ............ ..................................... NoSQL 的特点 NoSQL V.S. SQL 5. HBase 特点总结 6. 应用情况 (2 min) (1 min) 技术细节 . . NoSQL . . API . . 4. HBase 1. NoSQL 技术原理 . HBase. 杂谈 . 概述 (25 min) (10 min) . NoSQL . V.S. SQL 架构 . . 数据模型 . 3. 什么时候 2. HBase 和 使用 HBase Cassandra (1 min) (2 min) . . . . . . Joseph Pan, Zeyin Lin (SCNU) HBase 杂谈 2012-4-23 14 / 74
  • 15. NoSQL 概述 HBase 和 Cassandra 什么时候使用 HBase 技术原理 HBase 特点总结 应用情况 ............ ..................................... NoSQL V.S. SQL 当 SQL 遇见 NoSQL Figure 5: NoSQL Meets SQL . . . . . . Joseph Pan, Zeyin Lin (SCNU) HBase 杂谈 2012-4-23 15 / 74
  • 16. NoSQL 概述 HBase 和 Cassandra 什么时候使用 HBase 技术原理 HBase 特点总结 应用情况 ............ ..................................... NoSQL V.S. SQL SQL 还是 NoSQL? Figure 6: SQL 还是 NoSQL? . . . . . . Joseph Pan, Zeyin Lin (SCNU) HBase 杂谈 2012-4-23 16 / 74
  • 17. NoSQL 概述 HBase 和 Cassandra 什么时候使用 HBase 技术原理 HBase 特点总结 应用情况 ............ ..................................... HBase 和 Cassandra 5. HBase 特点总结 6. 应用情况 (2 min) (1 min) 技术细节 . . NoSQL . . API . . 4. HBase 1. NoSQL 技术原理 . HBase. 杂谈 . 概述 (25 min) (10 min) . NoSQL . V.S. SQL 架构 . . 数据模型 . 3. 什么时候 2. HBase 和 使用 HBase Cassandra (1 min) (2 min) . . . . . . Joseph Pan, Zeyin Lin (SCNU) HBase 杂谈 2012-4-23 17 / 74
  • 18. NoSQL 概述 HBase 和 Cassandra 什么时候使用 HBase 技术原理 HBase 特点总结 应用情况 ............ ..................................... HBase 和 Cassandra Hadoop Database Cassandra . . . . . . Joseph Pan, Zeyin Lin (SCNU) HBase 杂谈 2012-4-23 18 / 74
  • 19. NoSQL 概述 HBase 和 Cassandra 什么时候使用 HBase 技术原理 HBase 特点总结 应用情况 ............ ..................................... HBase: What 一个高可靠性、高性能、面向列、可伸缩的分布式存储系统 Google BigTable 的开源山寨版本 Bigtable: A distributed storage system for structured data . 利用 HBase 技术可在廉价 PC Server 上搭建起大规模结构化存储集 群 实时随机读写补充 HDFS 的不足 主要贡献者: Yahoo!, Facebook, Cloudera . . . . . . Joseph Pan, Zeyin Lin (SCNU) HBase 杂谈 2012-4-23 19 / 74
  • 20. NoSQL 概述 HBase 和 Cassandra 什么时候使用 HBase 技术原理 HBase 特点总结 应用情况 ............ ..................................... Hadoop 生态系统 Figure 7: Hadoop 生态图 . . . . . . Joseph Pan, Zeyin Lin (SCNU) HBase 杂谈 2012-4-23 20 / 74
  • 21. NoSQL 概述 HBase 和 Cassandra 什么时候使用 HBase 技术原理 HBase 特点总结 应用情况 ............ ..................................... Cassandra: What Cassandra 是一套开源分布式 NoSQL 数据库系统。它最初 由Facebook开发,用于储存收件箱等简单格式数据,是 Facebook 数据 库系统的开源分支。集 Google BigTable 的数据模型与 Amazon Dynamo 的完全分布式的架构于一身。Facebook 于 2008 将 Cassandra 开源,此 后,由于 Cassandra 良好的可扩放性,被 Digg、Twitter 等知名 Web 2.0 网站所采纳,成为了一种流行的分布式结构化数据存储方案。 实际上,Cassandra 的最初开发工作就是由两位从 Amazon 跳槽到 Facebook 的 Dynamo 工程师 Avinash Lakshman 和 Prashant Malik 完成 的。 . . . . . . Joseph Pan, Zeyin Lin (SCNU) HBase 杂谈 2012-4-23 21 / 74
  • 22. NoSQL 概述 HBase 和 Cassandra 什么时候使用 HBase 技术原理 HBase 特点总结 应用情况 ............ ..................................... 什么时候使用 HBase 5. HBase 特点总结 6. 应用情况 (2 min) (1 min) 技术细节 . . NoSQL . . API . . 4. HBase 1. NoSQL 技术原理 . HBase. 杂谈 . 概述 (25 min) (10 min) . NoSQL . V.S. SQL 架构 . . 数据模型 . 3. 什么时候 2. HBase 和 使用 HBase Cassandra (1 min) (2 min) . . . . . . Joseph Pan, Zeyin Lin (SCNU) HBase 杂谈 2012-4-23 22 / 74
  • 23. NoSQL 概述 HBase 和 Cassandra 什么时候使用 HBase 技术原理 HBase 特点总结 应用情况 ............ ..................................... HBase: When 海量数据(上百个 TB 或更多) 需要很高的吞吐量 需要在海量数据中实现高效的随机读取 需要很好的伸缩能力 能够同时处理结构化和非结构化的数据 不需要完全拥有 RDMS 所具备的 ACID 特性 . . . . . . Joseph Pan, Zeyin Lin (SCNU) HBase 杂谈 2012-4-23 23 / 74
  • 24. NoSQL 概述 HBase 和 Cassandra 什么时候使用 HBase 技术原理 HBase 特点总结 应用情况 ............ ..................................... 技术原理 5. HBase 特点总结 6. 应用情况 (2 min) (1 min) 技术细节 . . NoSQL . . API . . 4. HBase 1. NoSQL 技术原理 . HBase. 杂谈 . 概述 (25 min) (10 min) . NoSQL . V.S. SQL 架构 . . 数据模型 . 3. 什么时候 2. HBase 和 使用 HBase Cassandra (1 min) (2 min) . . . . . . Joseph Pan, Zeyin Lin (SCNU) HBase 杂谈 2012-4-23 24 / 74
  • 25. NoSQL 概述 HBase 和 Cassandra 什么时候使用 HBase 技术原理 HBase 特点总结 应用情况 ............ ..................................... 数据模型 数据模型 5. HBase 特点总结 6. 应用情况 (2 min) (1 min) 技术细节 . . NoSQL . . API . . 4. HBase 1. NoSQL 技术原理 . HBase. 杂谈 . 概述 (25 min) (10 min) . NoSQL . V.S. SQL 架构 . . 数据模型 . 3. 什么时候 2. HBase 和 使用 HBase Cassandra (1 min) (2 min) . . . . . . Joseph Pan, Zeyin Lin (SCNU) HBase 杂谈 2012-4-23 25 / 74
  • 26. NoSQL 概述 HBase 和 Cassandra 什么时候使用 HBase 技术原理 HBase 特点总结 应用情况 ............ ..................................... 数据模型 逻辑视图 Table 稀疏的、面向列的多维度排序 Map Map 的索引是行关键字、列关键字以及时间戳,Map 中的每个 value 都是一个未经解析的 byte 数组 Row:原子访问,字典序排序 Column:column family + qualifier Cell:(row:string, column:string,time:int64)→string Time Stamp:版本 "conte nts :" "a nchor:cnns i.com" "a nchor:my.look.ca " "<html>..." t3 "com.cnn.www" "<html>..." t5 "CNN" t9 "CNN.com" t8 "<html>..." t6 Figure 8: 数据模型示例:webtable . . . . . . Joseph Pan, Zeyin Lin (SCNU) HBase 杂谈 2012-4-23 26 / 74
  • 27. NoSQL 概述 HBase 和 Cassandra 什么时候使用 HBase 技术原理 HBase 特点总结 应用情况 ............ ..................................... 数据模型 逻辑视图 Table 1: 表 webtable Row Key Time ColumnFamily ColumnFamily an- Stamp contents chor “com.cnn.www” t9 anchor:cnnsi.com = “CNN” “com.cnn.www” t8 anchor:my.look.ca = “CNN.com” “com.cnn.www” t6 contents:html = “<html>...” “com.cnn.www” t5 contents:html = “<html>...” “com.cnn.www” t3 contents:html = “<html>...” . . . . . . Joseph Pan, Zeyin Lin (SCNU) HBase 杂谈 2012-4-23 27 / 74
  • 28. NoSQL 概述 HBase 和 Cassandra 什么时候使用 HBase 技术原理 HBase 特点总结 应用情况 ............ ..................................... 数据模型 构造函数 ./src/main/java/org/apache/hadoop/hbase/keyvalue.java: § p u b l i c KeyValue ( f i n a l b y t e [ ] row , f i n a l b y t e [ ] f a m i l y , f i n a l by t e [ ] q u a l i f i e r , f i n a l l o n g timestamp , f i n a l b y t e [ ] v a l u e ) { t h i s ( row , f a m i l y , q u a l i f i e r , timestamp , Type . Put , v a l u e ) ; } p u b l i c KeyValue ( f i n a l b y t e [ ] row , f i n a l i n t r o f f s e t , f i n a l i n t r l e n g t h , f i n a l by t e [ ] f a m i l y , f i n a l i n t f o f f s e t , f i n a l i n t f l e n g t h , f i n a l by t e [ ] q u a l i f i e r , f i n a l i n t q o f f s e t , f i n a l i n t q l e n g t h , f i n a l l o n g timestamp , f i n a l Type type , f i n a l byte [ ] value , f i n a l i n t v o f f s e t , f i n a l i n t vlength ) { t h i s . b y t e s = c r e a t e B y t e A r r a y ( row , r o f f s e t , r l e n g t h , family , f o f f s e t , flength , q u a l i f i e r , q o f f s e t , qlength , timestamp , type , v a l u e , v o f f s e t , v l e n g t h ) ; t h i s . length = bytes . length ; this . o f f s e t = 0; } ¥ . . . . . . Joseph Pan, Zeyin Lin (SCNU) HBase 杂谈 2012-4-23 28 / 74
  • 29. NoSQL 概述 HBase 和 Cassandra 什么时候使用 HBase 技术原理 HBase 特点总结 应用情况 ............ ..................................... 物理存储 物理视图 尽管在概念视图里,表可以被看成是一个稀疏的行的集合。但在物 理上,它是区分 column family 存储的。新的 columns 可以不经过声明 直接加入一个 column family。 另外值得注意的是概念视图中的空白 cell 在物理上是不存储的。 Table 2: ColumnFamily anchor Row Key Time Stamp Column Family anchor ”com.cnn.www” t9 anchor:cnnsi.com = ”CNN” ”com.cnn.www” t8 anchor:my.look.ca = ”CNN.com” Table 3: ColumnFamily contents Row Key Time Stamp ColumnFamily ”contents:” ”com.cnn.www” t6 contents:html = ”html...” ”com.cnn.www” t5 contents:html = ”html...” ”com.cnn.www” t3 contents:html = ”html...” . . . . . . Joseph Pan, Zeyin Lin (SCNU) HBase 杂谈 2012-4-23 29 / 74
  • 30. NoSQL 概述 HBase 和 Cassandra 什么时候使用 HBase 技术原理 HBase 特点总结 应用情况 ............ ..................................... 物理存储 分片:Region 按 rowkey 将 Table 动态分割为一个个 region,每个 region 包含一个 连续的行范围 [startkey,endkey) Table Region 按照Row Key字典序 Region Region … Region Figure 9: 表格分割成 region . . . . . . Joseph Pan, Zeyin Lin (SCNU) HBase 杂谈 2012-4-23 30 / 74
  • 31. NoSQL 概述 HBase 和 Cassandra 什么时候使用 HBase 技术原理 HBase 特点总结 应用情况 ............ ..................................... 物理存储 Region region 按大小分割的,每个表一开始只有一个 region,随着数据不断插入 表,region 不断增大,当增大到一个阀值的时候,region 就会等分为个新 的 region。当 table 中的行不断增多,就会有越来越多的 region,并在存 储集群内分发以达到负载均衡。 Table Table Region Region Region Region Region … … Region Region Figure 10: Region 的分割 . . . . . . Joseph Pan, Zeyin Lin (SCNU) HBase 杂谈 2012-4-23 31 / 74
  • 32. NoSQL 概述 HBase 和 Cassandra 什么时候使用 HBase 技术原理 HBase 特点总结 应用情况 ............ ..................................... 物理存储 RegionServer HRegion 是 Hbase 中分布式存储和负载均衡的最小单元。最小单元就表 示不同的 HRegion 可以分布在不同的 HRegion server 上,但一个 HRegion 不会拆分到多个 server 上。 Figure 11: RegionServer . . . . . . Joseph Pan, Zeyin Lin (SCNU) HBase 杂谈 2012-4-23 32 / 74
  • 33. NoSQL 概述 HBase 和 Cassandra 什么时候使用 HBase 技术原理 HBase 特点总结 应用情况 ............ ..................................... 物理存储 Store HRegion 虽然是分布式存储的最小单元,但并不是存储的最小单元。 事实上,HRegion 由一个或者多个 Store 组成,每个 Store 保存一个 columns family。每个 Strore 又由一个 memStore 和 0 至多个 StoreFile 组成。 StoreFile 以 HFile 格式保存在 HDFS 上。 Figure 12: Store . . . . . . Joseph Pan, Zeyin Lin (SCNU) HBase 杂谈 2012-4-23 33 / 74
  • 34. NoSQL 概述 HBase 和 Cassandra 什么时候使用 HBase 技术原理 HBase 特点总结 应用情况 ............ ..................................... 物理存储 HFile 的格式 HFile 分为 6 个部分: . Data Block 段:保存表中的数据,这部分可以被压缩; 1 . 2 Meta Block 段 (可选):保存用户自定义的元信息,可以被压缩; . File Info 段:Hfile 的元信息,不被压缩,用户也可以在这一部分添加自己 3 的元信息; . 4 Data Block Index 段:Data Block 的索引。每条索引的 key 是被索引的 block 的第一条记录的 key; . 5 Meta Block Index 段 (可选的):Meta Block 的索引; . Trailer:这一段是定长的。保存了每一段的偏移量,读取一个 HFile 时, 6 会首先读取 Trailer,Trailer 保存了每个段的起始位置 (段的 Magic Number 用来做安全 check),然后,DataBlock Index 会被读取到内存中,这样,当 检索某个 key 时,不需要扫描整个 HFile,而只需从内存中找到 key 所在 的 block,通过一次磁盘 io 将整个 block 读取到内存中,再找到需要的 key。DataBlock Index 采用 LRU 机制淘汰。 . . . . . . Joseph Pan, Zeyin Lin (SCNU) HBase 杂谈 2012-4-23 34 / 74
  • 35. NoSQL 概述 HBase 和 Cassandra 什么时候使用 HBase 技术原理 HBase 特点总结 应用情况 ............ ..................................... 物理存储 HFile 的格式 KeyLen (int) ValLen (int) Key (byte[]) Value (byte[]) Data Block 0 DATA BLOCK MAGIC (8B) Data Block 1 TRAILER BLOCK MAGIC (8B) Data Block 2 File Info Offset (long) KeyLen Key id ValLen Val (vint) (byte[]) (1B) (vint) (byte[]) Trailer Data Index Offset (long) Meta Block 0 (Optional) User Defined Metadata, Data Index Count (int) start with METABLOCKMAGIC Meta Block 1 Meta Index Offset (long) (Optional) Meta Index Count (int) File Info Total Uncompressed Data Bytes (long) Entry Count or Data K-V Count (int) User Defined Compression Codec (int) Meta Index Version (int) (Optional) Total Size of Trailer: 4xLong + 5xInt + 8Bytes = 60 Bytes Trailer Index of Meta Block 0 … Figure 14: Trailer Offset(long) MetaSize (int) MetaNameLen (vint) MetaName (byte[]) Offset(long) DataSize (int) KeyLen (vint) Key (byte[]) Figure 13: HFile 的格式 3 . . . . . . Joseph Pan, Zeyin Lin (SCNU) HBase 杂谈 2012-4-23 35 / 74
  • 36. NoSQL 概述 HBase 和 Cassandra 什么时候使用 HBase 技术原理 HBase 特点总结 应用情况 ............ ..................................... 架构 架构 5. HBase 特点总结 6. 应用情况 (2 min) (1 min) 技术细节 . . NoSQL . . API . . 4. HBase 1. NoSQL 技术原理 . HBase. 杂谈 . 概述 (25 min) (10 min) . NoSQL . V.S. SQL 架构 . . 数据模型 . 3. 什么时候 2. HBase 和 使用 HBase Cassandra (1 min) (2 min) . . . . . . Joseph Pan, Zeyin Lin (SCNU) HBase 杂谈 2012-4-23 36 / 74
  • 37. NoSQL 概述 HBase 和 Cassandra 什么时候使用 HBase 技术原理 HBase 特点总结 应用情况 ............ ..................................... 架构 HBase 架构 . . . . . . Joseph Pan, Zeyin Lin (SCNU) HBase 杂谈 2012-4-23 37 / 74
  • 38. NoSQL 概述 HBase 和 Cassandra 什么时候使用 HBase 技术原理 HBase 特点总结 应用情况 ............ ..................................... 架构 HBase 架构 • Region分配、负载均衡 • 定期扫描-ROOT-、.META. • 管理Table Schema • 分发close、flush、compact等管理消息 • 集群管理:容错、扩容、日志分裂 . . . . . . Joseph Pan, Zeyin Lin (SCNU) HBase 杂谈 2012-4-23 38 / 74
  • 39. NoSQL 概述 HBase 和 Cassandra 什么时候使用 HBase 技术原理 HBase 特点总结 应用情况 ............ ..................................... 架构 HBase 架构 • 索引查找 • 数据增删改查操作 • 管理操作 . . . . . . Joseph Pan, Zeyin Lin (SCNU) HBase 杂谈 2012-4-23 39 / 74
  • 40. NoSQL 概述 HBase 和 Cassandra 什么时候使用 HBase 技术原理 HBase 特点总结 应用情况 ............ ..................................... 架构 HBase 架构 • 处理Client读、写、扫描请求 • 与HMaster通信,处理管理消 息 • Region的open、close、 compaction、split、flush . . . . . . Joseph Pan, Zeyin Lin (SCNU) HBase 杂谈 2012-4-23 40 / 74
  • 41. NoSQL 概述 HBase 和 Cassandra 什么时候使用 HBase 技术原理 HBase 特点总结 应用情况 ............ ..................................... 架构 HBase 架构 • 一个维护配置信息、 空间, 提供分布式 步、组管理的中 心化协调服务 • 储master、regionserver、 -ROOT- region的服务器地址 . . . . . . Joseph Pan, Zeyin Lin (SCNU) HBase 杂谈 2012-4-23 41 / 74
  • 42. NoSQL 概述 HBase 和 Cassandra 什么时候使用 HBase 技术原理 HBase 特点总结 应用情况 ............ ..................................... 技术细节 技术细节 5. HBase 特点总结 6. 应用情况 (2 min) (1 min) 技术细节 . . NoSQL . . API . . 4. HBase 1. NoSQL 技术原理 . HBase. 杂谈 . 概述 (25 min) (10 min) . NoSQL . V.S. SQL 架构 . . 数据模型 . 3. 什么时候 2. HBase 和 使用 HBase Cassandra (1 min) (2 min) . . . . . . Joseph Pan, Zeyin Lin (SCNU) HBase 杂谈 2012-4-23 42 / 74
  • 43. NoSQL 概述 HBase 和 Cassandra 什么时候使用 HBase 技术原理 HBase 特点总结 应用情况 ............ ..................................... 技术细节 索引方式:三层 B+ 树 ZooKeeper 的”-ROOT-”znode -ROOT- region .META. regions User Region1 Meta Region1 user row1 user region1 key user row2 user region2 key ... ... Root Region User Region2 Meta Region2 ZK-znode meta region1 key ... ... -ROOT- meta region2 key ... user regionN key ... ... ... . . . User RegionN . . . ... ... ... Figure 20: 三层 B+ 树 . . . . . . Joseph Pan, Zeyin Lin (SCNU) HBase 杂谈 2012-4-23 43 / 74
  • 44. NoSQL 概述 HBase 和 Cassandra 什么时候使用 HBase 技术原理 HBase 特点总结 应用情况 ............ ..................................... 技术细节 索引方式:三层 B+ 树 华南师范大学计算机学院102室108座 座位 ... 107 房号 101房 108 102房 学院 ... 计算机学院 华南师范大学 教育科学学院 ... Figure 21: 怎么找座位? . . . . . . Joseph Pan, Zeyin Lin (SCNU) HBase 杂谈 2012-4-23 44 / 74
  • 45. NoSQL 概述 HBase 和 Cassandra 什么时候使用 HBase 技术原理 HBase 特点总结 应用情况 ............ ..................................... 技术细节 索引方式:三层 B+ 树 User Region 900? ... Meta Region 899 900 ... 850-950 Root Region ... 0-499 -ROOT- 500-1500 ... Figure 22: 在三层 B+ 树中找 Region 号为 900 的数据 . . . . . . Joseph Pan, Zeyin Lin (SCNU) HBase 杂谈 2012-4-23 45 / 74
  • 46. NoSQL 概述 HBase 和 Cassandra 什么时候使用 HBase 技术原理 HBase 特点总结 应用情况 ............ ..................................... 技术细节 问题 . 算一下 . 在 -ROOT- 和.META. 的 region 中记录大小约 1KB,按 region 默认大小 256MB 计算,能够映射多少用户数据? . ROOT region 能映射 2.6 × 105 个.META. region, 依次能映射总的 6.9x1010 个 user region, 意味着大约是 1.8x1019 (264 ) 字节用户数据(即 214 PB) . . . . . . Joseph Pan, Zeyin Lin (SCNU) HBase 杂谈 2012-4-23 46 / 74
  • 47. NoSQL 概述 HBase 和 Cassandra 什么时候使用 HBase 技术原理 HBase 特点总结 应用情况 ............ ..................................... 技术细节 问题 . 算一下 . 在 -ROOT- 和.META. 的 region 中记录大小约 1KB,按 region 默认大小 256MB 计算,能够映射多少用户数据? . ROOT region 能映射 2.6 × 105 个.META. region, 依次能映射总的 6.9x1010 个 user region, 意味着大约是 1.8x1019 (264 ) 字节用户数据(即 214 PB) . . . . . . Joseph Pan, Zeyin Lin (SCNU) HBase 杂谈 2012-4-23 46 / 74
  • 48. NoSQL 概述 HBase 和 Cassandra 什么时候使用 HBase 技术原理 HBase 特点总结 应用情况 ............ ..................................... 技术细节 Client Cache client 会将查询过的位置信息保存缓存起来,缓存不会主动失效,因此 如果 client 上的缓存全部失效,则需要进行 6 次网络来回,才能定位到 正确的 region(其中三次用来发现缓存失效,另外三次用来获取位置信 息)。 . . . . . . Joseph Pan, Zeyin Lin (SCNU) HBase 杂谈 2012-4-23 47 / 74
  • 49. NoSQL 概述 HBase 和 Cassandra 什么时候使用 HBase 技术原理 HBase 特点总结 应用情况 ............ ..................................... 技术细节 读写过程 “RAM 是硬盘,硬盘是磁带” — Jim Gray . 对于随机访问,硬盘慢得不可忍受,但如果你把硬盘当成磁带来用,它 吞吐连续数据的速率令人震惊;它天生适合用来给以 RAM 为主的应用 做日志。 . 使用缓存来实现顺序写! 使用日志来实现数据恢复! Figure 23: Jim Gray . . . . . . Joseph Pan, Zeyin Lin (SCNU) HBase 杂谈 2012-4-23 48 / 74
  • 50. NoSQL 概述 HBase 和 Cassandra 什么时候使用 HBase 技术原理 HBase 特点总结 应用情况 ............ ..................................... 技术细节 MemStore+WAL MemStore 中的数据是排序的,当 MemStore 累计到一定阈值时,就会 创建一个新的 MemStore,并且将老的 MemStore 添加到 flush 队列,由 单独的线程 flush 到磁盘上,成为一个 StoreFile。于此同时,系统会在 zookeeper 中记录一个 redo point,表示这个时刻之前的变更已经持久化 了。(Minor Compact) 当系统出现意外时,可能导致内存 (MemStore) 中的数据丢失,此时使 用 Log(WAL log) 来恢复 checkpoint 之后的数据。 前面提到过 StoreFile 是只读的,一旦创建后就不可以再修改。因此 Hbase 的更新其实是不断追加的操作。当一个 Store 中的 StoreFile 达到 一定的阈值后,就会进行一次合并 (major compact),将对同一个 key 的 修改合并到一起,形成一个大的 StoreFile,当 StoreFile 的大小达到一定 阈值后,又会对 StoreFile 进行 split,等分为两个 StoreFile。 . . . . . . Joseph Pan, Zeyin Lin (SCNU) HBase 杂谈 2012-4-23 49 / 74
  • 51. NoSQL 概述 HBase 和 Cassandra 什么时候使用 HBase 技术原理 HBase 特点总结 应用情况 ............ ..................................... 技术细节 MemStore+WAL MemStore flush writer HLog Seq#1,Table13,Region11,… StoreFile StoreFile StoreFile Seq#2,Table5,Region2,… Figure 24: MemStore+WAL . . . . . . Joseph Pan, Zeyin Lin (SCNU) HBase 杂谈 2012-4-23 50 / 74
  • 52. NoSQL 概述 HBase 和 Cassandra 什么时候使用 HBase 技术原理 HBase 特点总结 应用情况 ............ ..................................... 技术细节 版本更新 I Figure 25: 版本更新 . . . . . . Joseph Pan, Zeyin Lin (SCNU) HBase 杂谈 2012-4-23 51 / 74
  • 53. NoSQL 概述 HBase 和 Cassandra 什么时候使用 HBase 技术原理 HBase 特点总结 应用情况 ............ ..................................... 技术细节 版本更新 II Figure 26: 版本更新 . . . . . . Joseph Pan, Zeyin Lin (SCNU) HBase 杂谈 2012-4-23 52 / 74
  • 54. NoSQL 概述 HBase 和 Cassandra 什么时候使用 HBase 技术原理 HBase 特点总结 应用情况 ............ ..................................... 技术细节 版本更新 III Figure 27: 版本更新 . . . . . . Joseph Pan, Zeyin Lin (SCNU) HBase 杂谈 2012-4-23 53 / 74
  • 55. NoSQL 概述 HBase 和 Cassandra 什么时候使用 HBase 技术原理 HBase 特点总结 应用情况 ............ ..................................... 技术细节 版本更新 IV Figure 28: 版本更新 . . . . . . Joseph Pan, Zeyin Lin (SCNU) HBase 杂谈 2012-4-23 54 / 74
  • 56. NoSQL 概述 HBase 和 Cassandra 什么时候使用 HBase 技术原理 HBase 特点总结 应用情况 ............ ..................................... 技术细节 版本更新 V Figure 29: 版本更新 . . . . . . Joseph Pan, Zeyin Lin (SCNU) HBase 杂谈 2012-4-23 55 / 74
  • 57. NoSQL 概述 HBase 和 Cassandra 什么时候使用 HBase 技术原理 HBase 特点总结 应用情况 ............ ..................................... 技术细节 CAP 理论 10 年前,Eric Brewer 教授指出了著名的 CAP 理论,CAP 理论告诉 我们, 一个分布式系统不可能满足一致性,可用性和分区容错性这三个 需求,最多只能同时满足两个。 Figure 30: CAP . . . . . . Joseph Pan, Zeyin Lin (SCNU) HBase 杂谈 2012-4-23 56 / 74
  • 58. NoSQL 概述 HBase 和 Cassandra 什么时候使用 HBase 技术原理 HBase 特点总结 应用情况 ............ ..................................... 技术细节 CAP 理论 不同于传统的 RDBMS 的 “ACID” 特性,分布式数据库通常需要具备的 基本特性称为 “BASE”: Basically Availble — 基本可用 Soft-state — 软状态/柔性事务 Eventual Consistency — 最终一致性 . . . . . . Joseph Pan, Zeyin Lin (SCNU) HBase 杂谈 2012-4-23 57 / 74
  • 59. NoSQL 概述 HBase 和 Cassandra 什么时候使用 HBase 技术原理 HBase 特点总结 应用情况 ............ ..................................... 技术细节 CAP 理论 因此系统的关注点不同, 相应的采用的策略也是不一样的, 只有真正 的理解了系统的需求, 才有可能利用好 CAP 理论。 HBase 选择了 CP,即一致性和分区容错性,能够表现出强一致性 以及很高的分区容错性。 . . . . . . Joseph Pan, Zeyin Lin (SCNU) HBase 杂谈 2012-4-23 58 / 74
  • 60. NoSQL 概述 HBase 和 Cassandra 什么时候使用 HBase 技术原理 HBase 特点总结 应用情况 ............ ..................................... 技术细节 一致性 同一行数据的读写只在同一台 regionserver 上进行,因此 HBase 具有强 一致性。 . . . . . . Joseph Pan, Zeyin Lin (SCNU) HBase 杂谈 2012-4-23 59 / 74
  • 61. NoSQL 概述 HBase 和 Cassandra 什么时候使用 HBase 技术原理 HBase 特点总结 应用情况 ............ ..................................... 技术细节 可靠性 . 存在单点故障,Region Server 宕机后,短时间内该 server 维护的 1 region 无法访问,等待 failover 生效。 . 通过 Master 维护各 Region Server 健康状况和 Region 分布。 2 . 多个 Master,Master 宕机有 zookeeper 的 paxos 投票机制选取下一 3 任 Master。Master 就算全宕机,也不影响 Region 读写。Master 仅 充当一个自动运维角色。 . HDFS 为分布式存储引擎,一备三,高可靠,0 数据丢失。 4 5. HDFS 的 NameNode 是一个 SPOF。 . . . . . . Joseph Pan, Zeyin Lin (SCNU) HBase 杂谈 2012-4-23 60 / 74
  • 62. NoSQL 概述 HBase 和 Cassandra 什么时候使用 HBase 技术原理 HBase 特点总结 应用情况 ............ ..................................... 技术细节 读写性能 Read Key/Value 客户端 Cache 数据读写定位可能要通过最多 6 次的网络 RPC,性能较低。 如果 client 上的缓存全部失效,则需要进行 6 次网络来回,才能定位 到正确的 region(其中三次用来发现缓存失效,另外三次用来获取位 置信息) BloomFilter(用于检索一个元素是否在一个集合中,速度快,但有一 定的误识别率) Write 使用日志型的数据结构 (WAL,Write-Ahead Logging) Cache(MemStore) 合并写操作 group commit . . . . . . Joseph Pan, Zeyin Lin (SCNU) HBase 杂谈 2012-4-23 61 / 74
  • 63. NoSQL 概述 HBase 和 Cassandra 什么时候使用 HBase 技术原理 HBase 特点总结 应用情况 ............ ..................................... 技术细节 伸缩性 1. 扩容:直接新增机器 region 的自动分裂以及 master 的 balance; 只用增加 datanode 机器即可增加容量; 只用增加 regionserver 机器即可增加读写吞吐量; regionserver 扩容,通过将自身发布到 Master,Master 均匀分布。 2. Schema 变化:动态增删列 (族) . . . . . . Joseph Pan, Zeyin Lin (SCNU) HBase 杂谈 2012-4-23 62 / 74
  • 64. NoSQL 概述 HBase 和 Cassandra 什么时候使用 HBase 技术原理 HBase 特点总结 应用情况 ............ ..................................... HBase API HBase API 5. HBase 特点总结 6. 应用情况 (2 min) (1 min) 技术细节 . . NoSQL . . API . . 4. HBase 1. NoSQL 技术原理 . HBase. 杂谈 . 概述 (25 min) (10 min) . NoSQL . V.S. SQL 架构 . . 数据模型 . 3. 什么时候 2. HBase 和 使用 HBase Cassandra (1 min) (2 min) . . . . . . Joseph Pan, Zeyin Lin (SCNU) HBase 杂谈 2012-4-23 63 / 74
  • 65. NoSQL 概述 HBase 和 Cassandra 什么时候使用 HBase 技术原理 HBase 特点总结 应用情况 ............ ..................................... HBase API HBase API Java API Get Put Delete Scan HBaseAdmin MapReduce HBase shell (like mysql/hive) Thrift REST Jython,Scala,Groovy DSL, Cascading, Pig, Hive... . . . . . . Joseph Pan, Zeyin Lin (SCNU) HBase 杂谈 2012-4-23 64 / 74
  • 66. NoSQL 概述 HBase 和 Cassandra 什么时候使用 HBase 技术原理 HBase 特点总结 应用情况 ............ ..................................... HBase API Get/Scan Gets 是在 Scan 的基础上实现的。下面的讨论 Get 同样可以用 Scan 来 描述。 . 1 默认 Get 例子 § Get g e t = new Get ( Bytes . t o B y t e s ( ”row1” ) ) ; Result r = htable . get ( get ) ; b y t e [ ] b = r . g e t V a l u e ( Bytes . t o B y t e s ( ” c f ” ) , Bytes . t o B y t e s ( ” a t t r ” ) ) ; // r e t u r n s c u r r e n t v e r s i o n o f v a l u e ¥ 2. 含有版本的 Get 例子 § Get g e t = new Get ( Bytes . t o B y t e s ( ”row1” ) ) ; g e t . s e t M a x V e r s i o n s ( 3 ) ; // w i l l r e t u r n l a s t 3 v e r s i o n s o f row Result r = htable . get ( get ) ; b y t e [ ] b = r . g e t V a l u e ( Bytes . t o B y t e s ( ” c f ” ) , Bytes . t o B y t e s ( ” a t t r ” ) ) ; // r e t u r n s c u r r e n t v e r s i o n o f v a l u e L i s t KeyValue kv = r . getColumn ( Bytes . t o B y t e s ( ” c f ” ) , Bytes . t o B y t e s ( ” a t t r ” ) ) ; // r e t u r n s a l l v e r s i o n s o f t h i s column ¥ . . . . . . Joseph Pan, Zeyin Lin (SCNU) HBase 杂谈 2012-4-23 65 / 74
  • 67. NoSQL 概述 HBase 和 Cassandra 什么时候使用 HBase 技术原理 HBase 特点总结 应用情况 ............ ..................................... HBase API Put 一个 Put 操作会给一个 cell, 创建一个版本,默认使用当前时间戳, 当然你也可以自己设置时间戳。这就意味着你可以把时间设置在过去或 者未来,或者随意使用一个 Long 值。要想覆盖一个现有的值,就意味 着你的 row,column 和版本必须完全相等。 . 1 不指明版本的例子(Hbase 会用当前时间作为版本) § Put put = new Put ( Bytes . t o B y t e s ( row ) ) ; put . add ( Bytes . t o B y t e s ( ” c f ” ) , Bytes . t o B y t e s ( ” a t t r 1 ” ) , Bytes . t o B y t e s ( data ) ) ; h t a b l e . put ( put ) ; ¥ 2. 指明版本的例子 § Put put = new Put ( Bytes . t o B y t e s ( row ) ) ; l o n g e x p l i c i t T i m e I n M s = 5 5 5 ; // j u s t an example put . add ( Bytes . t o B y t e s ( ” c f ” ) , Bytes . t o B y t e s ( ” a t t r 1 ” ) , e x p l i c i t T i m e I n M s , Bytes . t o B y t e s ( data ) ) ; h t a b l e . put ( put ) ; ¥ . . . . . . Joseph Pan, Zeyin Lin (SCNU) HBase 杂谈 2012-4-23 66 / 74
  • 68. NoSQL 概述 HBase 和 Cassandra 什么时候使用 HBase 技术原理 HBase 特点总结 应用情况 ............ ..................................... HBase API Delete 有两种方式来确定要删除的版本。 删除所有比当前早的版本。 删除指定的版本。 一个删除操作可以删除一行,也可以是一个 column family,或者仅 仅删除一个 column。你也可以删除指明的一个版本。若你没有指明,默 认情况下是删除比当前时间早的版本。 删除操作的实现是创建一个删除标记。当写下一个删除标记后,只 有下一个 major compaction 操作发起之后,这个删除标记才会消失。 . . . . . . Joseph Pan, Zeyin Lin (SCNU) HBase 杂谈 2012-4-23 67 / 74
  • 69. NoSQL 概述 HBase 和 Cassandra 什么时候使用 HBase 技术原理 HBase 特点总结 应用情况 ............ ..................................... HBase 特点总结 5. HBase 特点总结 6. 应用情况 (2 min) (1 min) 技术细节 . . NoSQL . . API . . 4. HBase 1. NoSQL 技术原理 . HBase. 杂谈 . 概述 (25 min) (10 min) . NoSQL . V.S. SQL 架构 . . 数据模型 . 3. 什么时候 2. HBase 和 使用 HBase Cassandra (1 min) (2 min) . . . . . . Joseph Pan, Zeyin Lin (SCNU) HBase 杂谈 2012-4-23 68 / 74
  • 70. NoSQL 概述 HBase 和 Cassandra 什么时候使用 HBase 技术原理 HBase 特点总结 应用情况 ............ ..................................... HBase 特点总结 行操作的强一致性 线性扩展,自动分表 支持 RegionServers 间的自动故障转移 和 Hadoop 无缝集成,支持 MapReduce 高性能随机写 丰富的 API 接口 . . . . . . Joseph Pan, Zeyin Lin (SCNU) HBase 杂谈 2012-4-23 69 / 74
  • 71. NoSQL 概述 HBase 和 Cassandra 什么时候使用 HBase 技术原理 HBase 特点总结 应用情况 ............ ..................................... HBase 特点总结 行操作的强一致性 线性扩展,自动分表 支持 RegionServers 间的自动故障转移 和 Hadoop 无缝集成,支持 MapReduce 高性能随机写 丰富的 API 接口 . . . . . . Joseph Pan, Zeyin Lin (SCNU) HBase 杂谈 2012-4-23 69 / 74
  • 72. NoSQL 概述 HBase 和 Cassandra 什么时候使用 HBase 技术原理 HBase 特点总结 应用情况 ............ ..................................... HBase 特点总结 行操作的强一致性 线性扩展,自动分表 支持 RegionServers 间的自动故障转移 和 Hadoop 无缝集成,支持 MapReduce 高性能随机写 丰富的 API 接口 . . . . . . Joseph Pan, Zeyin Lin (SCNU) HBase 杂谈 2012-4-23 69 / 74
  • 73. NoSQL 概述 HBase 和 Cassandra 什么时候使用 HBase 技术原理 HBase 特点总结 应用情况 ............ ..................................... HBase 特点总结 行操作的强一致性 线性扩展,自动分表 支持 RegionServers 间的自动故障转移 和 Hadoop 无缝集成,支持 MapReduce 高性能随机写 丰富的 API 接口 . . . . . . Joseph Pan, Zeyin Lin (SCNU) HBase 杂谈 2012-4-23 69 / 74
  • 74. NoSQL 概述 HBase 和 Cassandra 什么时候使用 HBase 技术原理 HBase 特点总结 应用情况 ............ ..................................... HBase 特点总结 行操作的强一致性 线性扩展,自动分表 支持 RegionServers 间的自动故障转移 和 Hadoop 无缝集成,支持 MapReduce 高性能随机写 丰富的 API 接口 . . . . . . Joseph Pan, Zeyin Lin (SCNU) HBase 杂谈 2012-4-23 69 / 74
  • 75. NoSQL 概述 HBase 和 Cassandra 什么时候使用 HBase 技术原理 HBase 特点总结 应用情况 ............ ..................................... HBase 特点总结 行操作的强一致性 线性扩展,自动分表 支持 RegionServers 间的自动故障转移 和 Hadoop 无缝集成,支持 MapReduce 高性能随机写 丰富的 API 接口 . . . . . . Joseph Pan, Zeyin Lin (SCNU) HBase 杂谈 2012-4-23 69 / 74
  • 76. NoSQL 概述 HBase 和 Cassandra 什么时候使用 HBase 技术原理 HBase 特点总结 应用情况 ............ ..................................... HBase V.S. Cassandra Cassandra 只有一种节点,而 HBase 有多种不同角色,又架构在 Hadoop 底层平台之上,部署上 Cassandra 更简单; Cassandra 的数据一致性策略是可配置的; HBase 提供了 Cassandra 没有的行锁机制,Cassandra 要想使用锁需 要配合其他系统,如 Hadoop Zookeeper; HBase 提供更好的 MapReduce 并行计算支持,Cassandra 在 0.6 版 本也提供了这个功能,但还需要有一个 Hadoop 集群来运行它. 需 要将数据从 Cassandra 集群迁移到 Hadoop 集群. 不适合对大型数据 运行 MapReduce 任务.; Cassandra 的读写性能和可扩展性更好,但不擅长区间扫描。 . . . . . . Joseph Pan, Zeyin Lin (SCNU) HBase 杂谈 2012-4-23 70 / 74
  • 77. NoSQL 概述 HBase 和 Cassandra 什么时候使用 HBase 技术原理 HBase 特点总结 应用情况 ............ ..................................... My point of view HBase 更成熟,Cassandra 更有活力; HBase 更加适合于数据仓库、大型数据的处理和分析(如进行 Web 页面的索引等) ,而 Cassandra 更适合于实时事务处理和提供交互型 数据。 更多比较: Cassandra 和 HBase 主要设计思路对比 . . . . . . . Joseph Pan, Zeyin Lin (SCNU) HBase 杂谈 2012-4-23 71 / 74
  • 78. NoSQL 概述 HBase 和 Cassandra 什么时候使用 HBase 技术原理 HBase 特点总结 应用情况 ............ ..................................... 应用情况 5. HBase 特点总结 6. 应用情况 (2 min) (1 min) 技术细节 . . NoSQL . . API . . 4. HBase 1. NoSQL 技术原理 . HBase. 杂谈 . 概述 (25 min) (10 min) . NoSQL . V.S. SQL 架构 . . 数据模型 . 3. 什么时候 2. HBase 和 使用 HBase Cassandra (1 min) (2 min) . . . . . . Joseph Pan, Zeyin Lin (SCNU) HBase 杂谈 2012-4-23 72 / 74
  • 79. NoSQL 概述 HBase 和 Cassandra 什么时候使用 HBase 技术原理 HBase 特点总结 应用情况 ............ ..................................... 谁在用 HBase? Yahoo! Facebook Hulu LinkedIn Last.fm 百度 阿里巴巴 中国移动 ... . . . . . . Joseph Pan, Zeyin Lin (SCNU) HBase 杂谈 2012-4-23 73 / 74
  • 80. NoSQL 概述 HBase 和 Cassandra 什么时候使用 HBase 技术原理 HBase 特点总结 应用情况 ............ ..................................... Thank You! . . . . . . Joseph Pan, Zeyin Lin (SCNU) HBase 杂谈 2012-4-23 74 / 74