Docstoc

HBase is

Document Sample
HBase is Powered By Docstoc
					            教育訓練課程




HBase Intro
  王耀聰 陳威宇
 Jazz@nchc.org.tw
 waue@nchc.org.tw

                     1
 HBase is a distributed column-
oriented database built on top of 
             HDFS. 
                HBase is ..
l A distributed data store that can scale 
  horizontally to 1,000s of commodity servers and 
  petabytes of indexed storage.
l Designed to operate on top of the Hadoop 
  distributed file system (HDFS) or Kosmos File 
  System (KFS, aka Cloudstore) for scalability, 
  fault tolerance, and high availability.
l Integrated into the Hadoop map-reduce platform 
  and paradigm.
                 Benefits
l Distributed storage
l Table-like in data structure 
  u   multi-dimensional map
l High scalability
l High availability
l High performance
Who use HBase
                       Backdrop
l   Started toward by Chad Walters and Jim
l   2006.11
    u   Google releases paper on BigTable
l   2007.2
    u   Initial HBase prototype created as Hadoop contrib.
l   2007.10
    u   First useable HBase
l   2008.1
    u   Hadoop become Apache top-level project and HBase becomes 
        subproject
l   2008.10~
    u   HBase 0.18, 0.19 released
              HBase Is Not …
l Tables have one primary index, the row key.
l No join operators.
l Scans and queries can select a subset of 
  available columns, perhaps by using a wildcard.
l There are three types of lookups:
   u   Fast lookup using row key and optional timestamp.
   u   Full table scan
   u   Range scan from region start to end.
         HBase Is Not …(2)
l Limited atomicity and transaction support.
  u   HBase supports multiple batched mutations of 
      single rows only.
  u   Data is unstructured and untyped.
l No accessed or manipulated via SQL.
  u   Programmatic access via Java, REST, or 
      Thrift APIs.
  u   Scripting via JRuby.
             Why Bigtable?
l Performance of RDBMS system is good 
  for transaction processing but for very 
  large scale analytic processing, the 
  solutions are commercial, expensive, and 
  specialized.
l Very large scale analytic processing
  u   Big queries – typically range or table scans.
  u   Big databases (100s of TB)
          Why Bigtable? (2)
l Map reduce on Bigtable with optionally 
  Cascading on top to support some 
  relational algebras may be a cost effective 
  solution.
l Sharding is not a solution to scale open 
  source RDBMS platforms
  u   Application specific
  u   Labor intensive (re)partitionaing
            Why HBase ?
l HBase is a Bigtable clone.
l It is open source
l It has a good community and promise for 
  the future
l It is developed on top of and has good 
  integration for the Hadoop platform, if 
  you are using Hadoop already.
l It has a Cascading connector.
 HBase benefits than RDBMS
l No real indexes
l Automatic partitioning
l Scale linearly and automatically with new
  nodes
l Commodity hardware
l Fault tolerance
l Batch processing
                         Data Model
  l   Tables are sorted by Row
  l   Table schema only define it’s column families .
      u   Each family consists of any number of columns
      u   Each column consists of any number of versions
      u   Columns only exist when inserted, NULLs are free.
      u   Columns within a family are sorted and stored together
  l   Everything except table names are byte[]
  l   (Row, Family: Column, Timestamp) à Value


                   Column Family


Row key




                            TimeStamp                              value
                   Members
l Master
  u   Responsible for monitoring region servers
  u   Load balancing for regions
  u   Redirect client to correct region servers
  u   The current SPOF
l regionserver slaves
  u   Serving requests(Write/Read/Scan) of Client
  u   Send HeartBeat to Master
  u   Throughput and Region numbers are scalable by 
      region servers
                 Regions
l 表格是由一或多個 region 所構成
 u   Region 是由其 startKey 與 endKey 所指定
l 每個 region 可能會存在於多個不同節點上,而且
  是由數個HDFS 檔案與區塊所構成,這類 region 
  是由 Hadoop 負責複製
        實際個案討論 – 部落格
l   邏輯資料模型
    u   一篇 Blog entry 由 title, date, author, type, text 欄位所組成。
    u   一位User由 username, password等欄位所組成。
    u   每一篇的 Blog entry可有許多Comments。
    u   每一則comment由 title, author, 與 text 組成。
l   ERD
    部落格 – HBase Table Schema




l       Row key
    u      type (以2個字元的縮寫代表)與 timestamp組合而成。
    u      因此 rows 會先後依 type 及 timestamp 排序好。方便用 scan () 來存取 Table的資
           料。
l       BLOGENTRY 與 COMMENT的”一對多”關係由comment_title, 
        comment_author, comment_text 等column families 內的動態數量的column來
        表示
l       每個Column的名稱是由每則 comment的 timestamp來表示,因此每個
        column family的 column 會依時間自動排序好
Architecture
                ZooKeeper
l HBase depends on 
  ZooKeeper (Chapter 
  13) and by default it 
  manages a 
  ZooKeeper instance 
  as the authority on 
  cluster state
                   Operation
 The -ROOT- 
table holds the 
list of .META. 
 table regions




                                The .META. 
                               table holds the 
                               list of all user-
                               space regions.
                   Installation (1)
      啟動Hadoop… 




      $ wget 
       http://ftp.twaren.net/Unix/Web/apache/hadoop/hbase/hbase-
       0.20.2/hbase-0.20.2.tar.gz
       $ sudo tar -zxvf hbase-*.tar.gz -C /opt/
       $ sudo ln -sf /opt/hbase-0.20.2 /opt/hbase
       $ sudo chown -R $USER:$USER /opt/hbase 
    $ sudo mkdir /var/hadoop/
    $ sudo chmod 777  /var/hadoop 
                         Setup (1)
      $ vim  /opt/hbase/conf/hbase-env.sh
           export JAVA_HOME=/usr/lib/jvm/java-6-sun
          export HADOOP_CONF_DIR=/opt/hadoop/conf
          export HBASE_HOME=/opt/hbase
          export HBASE_LOG_DIR=/var/hadoop/hbase-logs
          export HBASE_PID_DIR=/var/hadoop/hbase-pids
          export HBASE_MANAGES_ZK=true
          export HBASE_CLASSPATH=$HBASE_CLASSPATH:/opt/hadoop/conf 



    $ cd /opt/hbase/conf
    $ cp /opt/hadoop/conf/core-site.xml ./
    $ cp /opt/hadoop/conf/hdfs-site.xml ./
    $ cp /opt/hadoop/conf/mapred-site.xml ./ 
                                    <configuration>
 Setup (2)                                <property>
                                             <name> name </name>
                                            <value> value </value>
                                           </property> 
                                    </configuration>

Name                       value
hbase.rootdir              hdfs://secuse.nchc.org.tw:9000/hbase 
hbase.tmp.dir              /var/hadoop/hbase-${user.name} 
hbase.cluster.distributed  true 
hbase.zookeeper.propert    2222 
y.clientPort 
hbase.zookeeper.quorum  Host1, Host2
hbase.zookeeper.propert    /var/hadoop/hbase-data 
y.dataDir 
            Startup & Stop
$ start-hbase.sh




$ stop-hbase.sh
                                      Testing (4)
$ hbase shell
> create 'test', 'data'
0 row(s) in 4.3066 seconds
> list                                     > scan 'test'
test                                       ROW COLUMN+CELL
1 row(s) in 0.1485 seconds                 row1 column=data:1, timestamp=1240148026198, 
                                                  value=value1
> put 'test', 'row1', 'data:1', 'value1'
                                           row2 column=data:2, timestamp=1240148040035, 
0 row(s) in 0.0454 seconds                        value=value2
> put 'test', 'row2', 'data:2', 'value2'   row3 column=data:3, timestamp=1240148047497, 
0 row(s) in 0.0035 seconds                        value=value3
> put 'test', 'row3', 'data:3', 'value3'   3 row(s) in 0.0825 seconds
0 row(s) in 0.0090 seconds                 > disable 'test'
                                           09/04/19 06:40:13 INFO client.HBaseAdmin: Disabled test
                                           0 row(s) in 6.0426 seconds
                                           > drop 'test'
                                           09/04/19 06:40:17 INFO client.HBaseAdmin: Deleted test
                                           0 row(s) in 0.0210 seconds
                                           > list
                                           0 row(s) in 2.0645 seconds
         Connecting to HBase
l Java client
   u   get(byte [] row, byte [] column, long timestamp, int
       versions);
l Non-Java clients
   u   Thrift server hosting HBase client instance
l Sample ruby, c++, & java (via thrift) clients
   u   REST server hosts HBase client
l TableInput/OutputFormat for MapReduce
   u   HBase as MR source or sink
l HBase Shell
   u   JRuby IRB with “DSL” to add get, scan, and admin
   u   ./bin/hbase shell YOUR_SCRIPT
                       Thrift
$ hbase-daemon.sh start thrift
$ hbase-daemon.sh stop thrift


l   a software framework for scalable cross-language 
    services development. 
l   By facebook
l   seamlessly between C++, Java, Python, PHP, and Ruby.  
l   This will start the server instance, by default on port 
    9090
l   The other similar project “rest”
               References
l <趨勢科技>HBase 介紹
  u   http://www.wretch.cc/blog/trendnop09/21192
      672 
l Hadoop: The Definitive Guide
  u   Book, by Tom White
l HBase Architecture 101
  u   http://www.larsgeorge.com/2009/10/hbase-
      architecture-101-storage.html 

				
DOCUMENT INFO
Shared By:
Categories:
Tags:
Stats:
views:0
posted:10/16/2013
language:Latin
pages:28