HBase學習總結(2):HBase介紹及其基本操作,hbase基本操作
(HBase是一種資料庫:Hadoop資料庫,它是一種NoSQL儲存系統,專門設計用來快速隨機讀寫大規模資料。在已成功安裝並正常啟動的前提下,本文介紹HBase的基本操作。)
一、HBase簡介
什麼是HBase(Hadoop Database)呢?有以下兩種常見的說法:
第一,它是一種稀疏的、分布式的、持久化的、多維有序映射,它基於行鍵(row key)、列鍵(column key)和時間戳記(timestamp)建立索引。
第二,它是一種索引值(key value)儲存,面向列族的資料庫,有時也是一種儲存多時間戳記版本映射的資料庫。
以上兩種描述都是對的。但從根本上來說,HBase是一個高可靠性、高效能、面向列、可伸縮的分布式儲存系統,是一個可以隨機訪問的儲存和檢索資料的平台。大家可以按照需要寫入資料,然後再按照需要讀取資料。
HBase有如下特點:
第一,它不介意資料類型,允許動態、靈活的資料模型,並不限制儲存的資料的種類。因此,它可以自如地儲存結構化和半結構化的資料。
第二,它不用SQL語言,也不強調資料之間的關係。
第三,它不允許跨行的事務,可以在一行的某一列儲存一個整數,而在另一行的同一列儲存字串。
第四,它被設計成在一個伺服器叢集上運行,而不是單台伺服器。這意味著一種強大的、可擴充的資料的使用方式。
從HBase的特點可以看出,HBase的設計與目標都與傳統的關係型資料庫不同。
二、HBase的基本操作
在已成功安裝並正常啟動HBase的前提下,我們可以使用HBase Shell,通過命令列方式與HBase進行互動。
1.啟動HBase Shell
轉到HBase解壓包的“bin”目錄下,使用命令“./hbase shell”或“sh hbase shell”命令即可啟動HBase Shell。啟動之後的資訊如下:
HBase Shell; enter 'help<RETURN>' for list of supported commands.Type "exit<RETURN>" to leave the HBase ShellVersion 1.0.1, r66a93c09df3b12ff7b86c39bc8475c60e15af82d, Fri Apr 17 22:14:06 PDT 2015hbase(main):001:0>
為了驗證HBase是否安裝成功,我們可以輸入“list”查看HBase中所有的表。該命令的執行情況如下:
hbase(main):001:0> listTABLE 0 row(s) in 0.2390 seconds=> []
由於是首次登入,因此HBase中包含了0個表。
2.建立表
HBase使用表作為頂級結構來儲存資料,寫資料到HBase,也就是寫資料到表。下面建立一個有一個列族(“cf”)的表“mytable”:
hbase(main):002:0> create 'mytable', 'cf'0 row(s) in 0.3250 seconds=> Hbase::Table - mytablehbase(main):003:0> listTABLE mytable 1 row(s) in 0.0090 seconds=> ["mytable"]
使用“list”命令,我們可以看到,表建立成功。
3.寫資料
表建立好之後,就需要寫入一些資料。例如,我們想往表裡寫入“hello hbase”,那麼我們就在“mytable”表的“first”行中的“cf:info”列對應的資料單元中插入“hello hbase”。命令執行如下:
hbase(main):004:0> put 'mytable', 'first', 'cf:info', 'hello hbase'0 row(s) in 0.0970 seconds
我們還可以繼續多增加幾個值,如下:
hbase(main):005:0> put 'mytable', 'second', 'cf:name', 'zhou'0 row(s) in 0.0180 secondshbase(main):006:0> put 'mytable', 'third', 'cf:nation', 'China'0 row(s) in 0.0080 seconds
現在表裡面有3行和3個資料單元。在使用列的時候,大家並沒有提前定義這些列,也沒有定義往每個列中儲存的資料類型。因此,HBase是一種無模式的資料庫。
4.讀資料
HBase有兩種方式讀取資料:get和scan。get方式可以讀取一行的資料資訊,scan方式可以讀取表中所有行的資料資訊。
get命令執行如下:
hbase(main):008:0> get 'mytable', 'first'COLUMN CELL cf:info timestamp=1435548279711, value=hello hbase 1 row(s) in 0.0770 seconds
該命令輸出了該行所有的資料單元。
scan命令執行如下:
hbase(main):009:0> scan 'mytable'ROW COLUMN+CELL first column=cf:info, timestamp=1435548279711, value=hello hbase second column=cf:name, timestamp=1435548751549, value=zhou third column=cf:nation, timestamp=1435548760826, value=China 3 row(s) in 0.0320 seconds
該命令返回了所有資料。HBase返回行的順序,是按照行的名字排序的。HBase稱之為行鍵(rowkey)。
5.刪除表
要想刪除一張表,需要先將其“disable”掉,然後再“drop”掉。命令執行如下:
hbase(main):010:0> disable 'mytable'0 row(s) in 1.2380 secondshbase(main):011:0> drop 'mytable'0 row(s) in 0.1770 secondshbase(main):012:0> listTABLE 0 row(s) in 0.0070 seconds=> []
HBase還有很多技巧,但是其他所有的東西都是建立在上面那些基本操作基礎之上的。大家一定要好好體會。
本人公眾號:zhouzxi,請掃描以下二維碼:
著作權聲明:本文為博主原創文章,未經博主允許不得轉載。