天天看點

一臉懵逼學習HBase---基于HDFS實作的。(Hadoop的資料庫,分布式的,大資料量的,随機的,實時的,非關系型資料庫)

2:HBase表結構:建表時,不需要指定表中的字段,隻需要指定若幹個列族,插入資料時,列族中可以存儲任意多個列(即KEY-VALUE,列名稱-列值);一個value可以有多個版本,通過版本号來區分(時間戳)

3:要查詢某一個具體的字段,需要指定坐标:表名---->行健---->列族(ColumnFamily):列名(Qualifier)---->版本;

4:HBase簡介:

  HBase – Hadoop Database,是一個高可靠性、高性能、面向列、可伸縮的分布式存儲系統,利用HBase技術可在廉價PC Server上搭建起大規模結構化存儲叢集。HBase利用Hadoop HDFS作為其檔案存儲系統,利用Hadoop MapReduce來處理HBase中的海量資料,利用Zookeeper作為協調工具。

5:HBase基本概念知識:

  5.1:主鍵:Row Key :

    主鍵是用來檢索記錄的主鍵,通路hbase table中的行,隻有三種方式:

     (1)通過單個row key通路

     (2)通過row key的range

     (3)全表掃描

  5.2:列族:Column Family:

    列族在建立表的時候聲明,一個列族可以包含多個列,列中的資料都是以二進制形式存在,沒有資料類型。

  5.3:時間戳:timestamp:

    HBase中通過row和columns确定的為一個存貯單元稱為cell。每個 cell都儲存着同一份資料的多個版本。版本通過時間戳來索引;

  5.4:HBase中有兩張特殊的Table,-ROOT-和.META.

    (a):-ROOT- :記錄了.META.表的Region資訊,-ROOT-隻有一個region

    (b):.META. :記錄了使用者建立的表的Region資訊,.META.可以有多個regoin

       (c):Zookeeper中記錄了-ROOT-表的location

    (d):Client通路使用者資料之前需要首先通路zookeeper,然後通路-ROOT-表,接着通路.META.表,最後才能找到使用者資料的位置去通路;

6:HBase基礎知識:

  6.1:實體存儲

        Table 在行的方向上分割為多個HRegion,一個region由[startkey,endkey)表示

  6.2:架構體系

    (a):Client  包含通路hbase 的接口,client 維護着一些cache 來加快對hbase 的通路,比如regione 的位置資訊

    (b):Zookeeper

       保證任何時候,叢集中隻有一個running master;

       存貯所有Region 的尋址入口;

       實時監控Region Server 的狀态,将Region server 的上線和下線資訊,實時通知給Master;

       存儲Hbase 的schema,包括有哪些table,每個table 有哪些column family;

    (c):Master 可以啟動多個HMaster,通過Zookeeper的Master Election機制保證:

      總有一個Master運作

          為Region server 配置設定region;

       負責region server 的負載均衡;

       發現失效的region server 并重新配置設定其上的region;

7:HBase的Region Server基本概念:

  (a):維護Master 配置設定給它的region,處理對這些region 的IO 請求

  (b):負責切分在運作過程中變得過大的region

  (c):可以看出,client 通路hbase 上資料的過程并不需要master 參與,尋址通路先zookeeper再regionserver,資料讀寫通路regioneserver。HRegionServer主要負責響應使用者I/O請求,向HDFS檔案系統中讀寫資料,是HBase中最核心的子產品。    

8:HBase學習前提與相關軟體:

  前提條件:本機或叢集環境下hadoop.1.1.2已經安裝成功

  相關軟體:

    hadoop.1.1.2

    hbase-0.94.2-security.tar.gz

    JDK7

    RHEL6.3

9:HBase Shell的學習(hbase提供了一個shell的終端給使用者互動):

一臉懵逼學習HBase---基于HDFS實作的。(Hadoop的資料庫,分布式的,大資料量的,随機的,實時的,非關系型資料庫)

名稱

指令表達式

建立表

create '表名', '列族名1','列族名2','列族名N'

檢視所有表

list

描述表

describe  ‘表名’

判斷表存在

exists  '表名'

判斷是否禁用啟用表

is_enabled '表名'

is_disabled ‘表名’

添加記錄      

put  ‘表名’, ‘rowKey’, ‘列族 : 列‘  ,  '值'

檢視記錄rowkey下的所有資料

get  '表名' , 'rowKey'

檢視表中的記錄總數

count  '表名'

擷取某個列族

get '表名','rowkey','列族'

擷取某個列族的某個列

get '表名','rowkey','列族:列’

删除記錄

delete  ‘表名’ ,‘行名’ , ‘列族:列'

删除整行

deleteall '表名','rowkey'

删除一張表

先要屏蔽該表,才能對該表進行删除

第一步 disable ‘表名’ ,第二步  drop '表名'

清空表

truncate '表名'

檢視所有記錄

scan "表名"  

檢視某個表某個列中所有資料

scan "表名" , {COLUMNS=>'列族名:列名'}

更新記錄

就是重寫一遍,進行覆寫,hbase沒有修改,都是追加

10:hbase資料模型:

一臉懵逼學習HBase---基于HDFS實作的。(Hadoop的資料庫,分布式的,大資料量的,随機的,實時的,非關系型資料庫)

11:hbase依賴zookeeper:

12:hbase開發:

13.hbase原理:

一臉懵逼學習HBase---基于HDFS實作的。(Hadoop的資料庫,分布式的,大資料量的,随機的,實時的,非關系型資料庫)

14.MapReduce操作Hbase:

待續......