1. 程式人生 > >HBase入門指南

HBase入門指南

目錄
1、概念介紹
2、原理圖
3、基本命令
4、java遠端連線hbase

一、概念介紹
  1. 列(column)是最基本的儲存單位
    列的名稱規範:列族名:列名
    hbase 會盡量將屬於同一個列族的列放在一臺機器上面

  2. 多個列可以組成一個列族(column family)
    表的屬性定義在列族上,如:過期時間、資料塊快取、是否壓縮等
    因此,同一個表的列族可以有完全不同的屬性,
    但是,同一個列族內的列具有相同的屬性

  3. 每個行都擁有唯一的一個行鍵(rowkey),行鍵是一串不可重複的字串
    hbase中無法根據column來排序,只能根據rowkey進行排序,排序規則是根據字典
    如:key1 key2 key11
    結果:key1 key11 key2

  4. 單元格
    一個列上面可能儲存多個版本的值
    多個版本的值被儲存在多個單元格中
    唯一確定一條結果的表示式應該是:行鍵:列族:列:版本號
    版本號可以省略,如果不寫版本號,hbase會預設使用最後一個版本的資料
    每個列或者每個單元都會被賦予一個時間戳,
    該時間戳預設由系統指定,也可以使用者顯示指定

  5. 注意:
    行與行的列可以完全不一樣
    上一行和下一行的資料也可以儲存在不同的機器上
    同一行內的列可以儲存在完全不同的機器上

  6. 提示:
    一個表設定多少列族比較好?官方建議越少越好
    雖然hbase是分散式資料庫,但是資料在同一臺物理機上依然會加速資料的查詢速度
    所以列族太多會極大的降低資料庫效能,並且列族定義太多容易出現bug

  7. Region
    region是一段資料的集合
    region是基於searchserver的,它的所有資料存取操作都是呼叫hdfs客戶端來實現
    一個region就是多個行

  8. zookeeper、hbase、hdfs的關係
    hbase中的regionServer儲存實際的表資料資訊
    這些資料資訊儲存在hdfs上面
    zookeeper管理這些regionServer,
    包括具體的資料欄位儲存在哪個regionServer上面,
    客戶端每次與hbase連線,其實先和zookeeper通訊,
    查詢出需要先和哪個regionServer通訊,然後再連線該regionServer


二、原理圖

在這裡插入圖片描述

三、基本命令
  • hbase shell 進入操作行
  • list 查看錶
  • get ‘表名’ ‘rowkey名稱’,‘列族:列的名稱’
    get ‘patient_count’,‘pat_001’
  • describe ‘表名’ 查看錶結構
    獲取的結果 name屬性是列族名稱
    其餘顯示的是列族的屬性
  • scan ‘表名’ 檢視 表資料
  • count ‘表名’ 查看錶中的記錄總數
  • create ‘表名’,‘列族名1’,‘列族名2’ …
  • disable ‘表名’
    drop ‘表名’ 刪除表 必須先disable然後才能drop
  • exists ‘表名’ 判斷該表是否存在
  • put ‘表名’,‘rowkey名稱’,‘列族:列名’,‘資料值’ 插入資料資訊,如果存在則覆蓋
  • delete ‘表名’,‘rowkey名稱’,‘列族:列名’


四、java遠端連線hbase
  1. 拷貝伺服器上 hadoop core-site.xml 和hbase hbase-site.xml 檔案放到專案的resource目錄下面
  2. 即使是連線遠端的 hadoop,也需要在本地安裝 hadoop
    下載winutils的windows版本 https://github.com/srccodes/hadoop-common-2.2.0-bin
    下載後文件名為 hadoop-common-2.2.0-bin-master.zip ,然後再解壓
  3. 配置環境變數
    在這裡插入圖片描述
    在這裡插入圖片描述
    4、程式碼