大資料之HBase命令列操作
1、課程簡介
- 本文章先會介紹HBase命令列,接著會介紹java程式碼對hbase中的表進行增刪改查。
- 本文章中所有命令均在CentOS-6.4-x86_64,hadoop-2.5.2,jdk1.8.0_152,zookeeper-3.4.11,hbase-1.2.6中執行通過,為減少linux許可權對初學者造成影響,所有命令均在linux的root許可權下進行操作。
2、理論回顧
- HBase是一個高可靠性、高效能、面向列、可伸縮的分散式儲存系統,是行業中最常用的NoSQL資料庫。HBase正確執行的前提是安裝好Hadoop。
- Hadoop技術本身包含HDFS、Map/Reduce。HDFS作海量資料儲存之用;M/R作海量資料計算之用。
- HDFS包含namenode、datanode。namenode對datanode中的資料建立了索引。
- zookeeper作為協調服務,為namenode提供了高可用性。
3、命令列基本操作
注意:
在執行以下命令之前,確認以下元件啟動成功:zookeeper, hdfs, yarn, hbase。
在hbase安裝目錄的bin下面,執行如下命令進入hbase命令列:
3.1建立普通表
步驟 1 建立普通表的語法為:create ‘表的名稱’,‘列族的名稱’。
輸入命令:
建立表“t_info”成功。
步驟 2 –list 功能:檢視系統中共有多少個普通表。
由此看出系統中已經存在了3張表了。
3.2 建立namespace
建立namespace的語法為:create_namespace ‘名稱‘。
步驟1 在指定namespace下建立表
在指定namespace下建立表:create ‘namespace的名稱:表名‘,‘列族‘。
步驟2 檢視指定namespace下的表
檢視指定namespace下的表:list_namespace_tables ‘namespace的名稱‘’。
3.3 增加資料
增加資料:put ‘表的名稱‘,‘RowKey’,‘列的名稱’,‘具體的賦值’。
將一個名字為Kobe,居住在洛杉磯的40歲男人的資訊輸入到表“cga_info”中:
3.4 get方式查詢資料
步驟 1 get 功能:精確查詢。
精確查詢某一個RowKey中儲存的內容:get ‘表的名稱‘,’RowKey‘
步驟 2 精確查詢某一個RowKey中的一個單元格中儲存的內容。
語法:get ‘表的名稱‘,’RowKey‘,‘列名’
3.5 scan方式查詢資料
步驟1 查詢表中某個列族下所有列的資訊:scan ‘表的名稱‘,{Columns=>’列‘}
步驟2 查詢表中具體的一個列中儲存的資訊。
語法:scan ‘表的名稱‘,{Columns=>’列的具體名稱‘}
3.6 指定條件查詢資料
步驟0 加入姚明資訊到資料庫中
步驟 1 查詢RowKey為“123001”和“123002”中的資料。
步驟 2 查詢Rowkey為“123001”和“123002”中列名稱為name的單元格中儲存的資訊。
3.7 更新資料
步驟 1 首先查詢表中Rowkey為123001的年齡資訊。
步驟 2 更改表中Rowkey為123001的年齡資訊。
步驟 3 再次查詢表中Rowkey為123001的年齡資訊。
由步驟2和步驟3的結果比較可得,年齡資訊已經被更新。
3.8 刪除資料
(1)使用delete刪除某一列資料
步驟 1 首先查詢表中Rowkey為123001的資訊。
步驟 2 使用delete刪除123001中age列所儲存的資料。
步驟 3 再次查詢表中Rowkey為123001的資訊。
由步驟1和步驟3的結果比較可得,年齡資訊已經被刪除了。
(2) 使用deleteall刪除整行資料
步驟 1 使用deleteall刪除表cga_info中123001的整行資料。
步驟 2 再次查詢表中Rowkey為123001的資訊。
此時表中已經沒有RowKey為123001的資訊,說明行資料刪除成功。
(3) 使用drop刪除資料表
步驟 1 首先disable ‘表的名稱‘,然後再使用drop ‘表的名稱‘刪除資料表。
步驟 2 查詢當前名稱空間下的表。
結果顯示錶t_info已經被刪除了。
3.9 過濾資料
Filter允許在Scan過程中,設定一定的過濾條件,符合條件的使用者資料才返回,所有的過濾器都在服務端生效,以保證被過濾掉的資料不會傳送到客戶端。
示例1:查詢年齡為38的人。
示例2:查詢名叫Yao的人。
示例3:查詢表中所有人的性別資訊。
示例4:查詢表中所有人的地址資訊並且找出住在上海的人。
Fliter可以根據列族,列,版本等更多的條件來對資料進行過濾,這裡只演示了4種過濾方式,帶有過濾條件的RPC查詢請求會把過濾器分發到各個RegionServer,這樣可以降低網路傳輸的壓力。
4、總結
HBase在儲存上百萬的列數十億的行的情況下還能實時讀取,值得我們深入使用和研究。後面我們將連載大資料系列部落格,歡迎關注和交流。
本文中所有安裝軟體等更多福利請入群后向管理員獲取。