全部產品
Search
文件中心

Lindorm:通過Lindorm Shell訪問寬表引擎

更新時間:Jul 06, 2024

Lindorm Shell是Lindorm提供的HBase用戶端工具。Lindorm Shell基於HBase Java API串連Lindorm寬表引擎,進行建立表、插入、查詢等資料操作。本文介紹如何下載Lindorm Shell並串連Lindorm寬表引擎。

前提條件

  • 已安裝Java環境,要求安裝JDK 1.8及以上版本。

  • 已將用戶端IP地址添加至Lindorm執行個體的白名單中,添加方法請參見設定白名單

注意事項

  • 通過Lindorm Shell串連Lindorm寬表引擎僅支援簡單的DDL操作和資料讀寫操作,不支援的操作請參見HBase API使用限制

  • 請勿使用HBase API的方式去訪問基於SQL建立的寬表,可能會出現亂碼。

  • 推薦在Linux或者macOS作業系統使用Lindorm Shell。

    在Windows系統使用Lindorm Shell時,可能會遇到報錯或缺少庫的問題,請根據報錯資訊自行在系統中添加相應的庫。

操作步驟

  1. 下載Lindorm Shell工具。

    1. Lindorm管理主控台左上方,選擇執行個體所屬的地區。在執行個體列表頁,單擊目標執行個體ID。

    2. 在左側導覽列單擊資料庫連接,單擊寬表引擎頁簽。

    3. 單擊HBase相容地址,然後單擊Lindorm Shell下載

  2. 執行命令解壓Lindorm Shell壓縮包,將壓縮包解壓至目標檔案(以alihbase-2.0.18檔案為例)。

    tar zxvf hbaseue-shell.tar.gz
  3. 配置串連參數。

    1. 進入alihbase-2.0.18/conf目錄,開啟hbase-site.xml檔案。

      vi hbase-site.xml
    2. 配置Lindorm寬表引擎的串連地址和使用者名稱密碼。

      <configuration>
          <property>
              <name>hbase.zookeeper.quorum</name>
              <value>ld-bp17j28j2y7pm****-proxy-lindorm-pub.lindorm.rds.aliyuncs.com:30020</value>
          </property>
          <property>
              <name>hbase.client.username</name>
              <value>testuser</value>
          </property>
          <property>
              <name>hbase.client.password</name>
              <value>password</value>
          </property>
      </configuration>

      參數說明:

      • hbase.zookeeper.quorum:Lindorm寬表引擎的使用HBase Java API訪問串連地址。

        • 專用網路地址:適用於Lindorm Shell安裝在ECS執行個體上,且ECS執行個體與Lindorm執行個體位於同一VPC。

        • 公網地址:適用於Lindorm Shell安裝在本地,或安裝在ECS執行個體但ECS與Lindorm執行個體不在同一VPC。

      • hbase.client.usernamehbase.client.password:訪問Lindorm寬表引擎的使用者名稱和密碼。如果忘記密碼,可以通過寬表引擎的叢集管理系統修改密碼,具體操作請參見修改使用者密碼

  4. 通過Lindorm Shell訪問Lindorm寬表引擎。

    進入alihbase-2.0.18/bin目錄執行以下命令。

    ./hbase shell

    返回如下資訊表示訪問成功。

    Version 2.0.18, r08b8d58a9d6ce89765d5ebe2ddff425aed644c16, Mon Feb  1 12:46:39 CST 2021
    Took 0.0034 seconds
    說明

    Shell的使用方法,請參見Lindorm Shell參考

Lindorm Shell參考

命令參考

Shell的使用命令更多請參見Apache HBase Shell介紹

資料定義語言 (Data Definition Language)

  • create:建立表。

  • list:展示所有表。

  • disable:禁用表。

  • is_disabled:驗證表是否被禁用。

  • enable:啟用表。

  • is_enabled:驗證表是否已啟用。

  • describe:展示指定表的詳細資料,包括表屬性、表結構等。

  • alter:修改表。

  • exists:用於驗證表是否存在。

  • drop:刪除指定表。

資料操作語言

  • put:用於更新特定儲存格中的值。

  • get:用於擷取指定行或儲存格的內容。

  • delete:用於刪除表中儲存格的值。

  • deleteall:用於刪除指定行的所有儲存格。

  • scan:用於掃描並返回表資料。

  • count:用於計算並返回表中的行數。

  • truncate_preserve:清空表中的資料,其內部實現是將指定的表下線和刪除,再進行重建,並且Region分區與舊錶保留一致。

進入和退出Shell環境

  • 進入Shell環境。

    bin/hbase shell
  • 退出Shell環境。

    quit

操作參考

建表並插入資料

  1. 建立表。建立時必須輸入表和列族的名稱。

    create '表名', '列族名'

    樣本如下:

    //建立一個名稱為test,列族名為cf的表
    create 'test', 'cf'
  2. 插入資料。

    put '表名', 'Rowkey', '列族名:列名', '數值'

    樣本如下:

    put 'test', 'row1', 'cf:a', 'value1'
    put 'test', 'row2', 'cf:b', 'value2'
    put 'test', 'row3', 'cf:c', 'value3'
    說明

    row1為表test的Rowkey,cf:a表示自訂欄的列族名和列名,value1為值。

查詢

  • 查詢所有表的資訊。支援使用Regex來過濾表。

    list
    list 'abc.*'
    list 'test'
  • 查詢指定表的資料。

    scan是一種訪問HBase資料的方式,它非常的靈活,scan操作可以用來掃描全表或查詢固定範圍的資料。查詢速度會比查詢單條(使用get)資料略慢一些。執行以下語句可以查詢test表的資料。

    scan '表名'

    樣本如下:

    scan 'test'

    返回結果:

    ROW                                      COLUMN+CELL
     row1                                    column=cf:a, timestamp=1421762485768, value=value1
     row2                                    column=cf:b, timestamp=1421762491785, value=value2
     row3                                    column=cf:c, timestamp=1421762496210, value=value3
    3 row(s) in 0.0230 seconds
  • 查詢表的單條資料。

    get '表名', 'Rowkey' 

    樣本如下:

    get 'test', 'row1' 

    返回結果:

    COLUMN CELL
     cf:a timestamp=1421762485768, value=value1
    1 row(s) in 0.0350 seconds

禁用和啟用表

禁用和啟用指定表。如果您想要對一張表執行刪除、修改設定或其他動作,請先使用disable命令禁用這張表。在刪除或者修改配置完成後,再使用enable命令啟用表,重新使用這張表。

disable '表名'
enable '表名'

刪除表

刪除指定表。

drop '表名'

常用配置參考

常用配置

  • 為指定表設定Major Compaction周期(無特殊情況下不建議自行設定),單位為毫秒(ms)。

    以下樣本設定Major Compaction周期為7天。

    alter '表名', {NAME => '列族名', CONFIGURATION => {'hbase.hregion.majorcompaction' => 16800000}}
    說明

    預設值:Math.Min(TTL,1728000000ms)。如果不設定TTL,該參數系統預設設定的是20天(20*24*60*60*1000ms=1728000000ms)。

  • 為指定表的列族設定資料壓縮演算法。

    alter '表名', NAME => '列族名', COMPRESSION => 'ZSTD'
  • 為指定表的列族設定Block Encoding類型。

    將test表列族的Block Encoding類型設定為DATA_BLOCK_ENCODING。

    alter '表名', NAME => '列族名', DATA_BLOCK_ENCODING => 'DIFF'
  • 為指定表的列族設定資料有效期間TTL。TTL單位為秒(s),例如2592000s=30天。

    alter '表名', NAME => '列族名', TTL => 2592000

    如果想要取消資料有效期間,即持續保留資料,可以將TTL的值設定為FOREVER,範例程式碼如下:

    alter '表名' , {NAME => '列族名', TTL => 'FOREVER'}
  • 為指定表設定預分區。

    create'表名',{NAME => '列族名',COMPRESSION => 'snappy' }, { NUMREGIONS => 50, SPLITALGO => 'HexStringSplit' }

    參數說明

    欄位

    描述

    NAME

    HBase表的列族名稱。

    COMPRESSION

    HBase表的資料壓縮方式。無預設壓縮演算法。可選的壓縮演算法共以下三種:

    • ZSTD(推薦

    • SNAPPY

    • LZ4

    NUMREGIONS

    分區的個數。一般按照每個分區使用6~8 GB的儲存量來計算分區數量。如果執行個體規模較大,分區數量可以按需設定多個。

    SPLITALGO

    初始化分區的演算法。HBase表支援以下三種分割演算法每個分割演算法的適用情境如下描述:

    • HexStringSplit:適用於以十六進位的字串作為首碼的Rowkey。

    • DecimalStringSplit:適用於以十進位的數字字串作為首碼的Rowkey。

    • UniformSplit:適用於Rowkey的首碼是完全隨機的。

修改配置後,您可以通過以下語句驗證是否修改成功:

describe '表名'