Lindorm Shell是Lindorm提供的HBase客戶端工具。Lindorm Shell基于HBase Java API連接Lindorm寬表引擎,進行創(chuàng)建表、插入、查詢等數據操作。本文介紹如何下載Lindorm Shell并連接Lindorm寬表引擎。
前提條件
已安裝Java環(huán)境,要求安裝JDK 1.8及以上版本。
已將客戶端IP地址添加至云原生多模數據庫 Lindorm實例的白名單中,添加方法請參見設置白名單。
注意事項
通過Lindorm Shell連接Lindorm寬表引擎僅支持簡單的DDL操作和數據讀寫操作,不支持的操作請參見HBase API使用限制。
請勿使用HBase API的方式去訪問基于SQL創(chuàng)建的寬表,可能會出現亂碼。
推薦在Linux或者macOS操作系統(tǒng)使用Lindorm Shell。
在Windows系統(tǒng)使用Lindorm Shell時,可能會遇到報錯或缺少庫的問題,請根據報錯信息自行在系統(tǒng)中添加相應的庫。
操作步驟
下載Lindorm Shell工具。
在Lindorm管理控制臺左上角,選擇實例所屬的地域。在實例列表頁,單擊目標實例ID。
在左側導航欄單擊數據庫連接,單擊寬表引擎頁簽。
單擊HBase兼容地址,然后單擊Lindorm Shell下載。
執(zhí)行命令解壓Lindorm Shell壓縮包,將壓縮包解壓至目標文件(以
alihbase-2.0.18
文件為例)。tar zxvf hbaseue-shell.tar.gz
配置連接參數。
進入
alihbase-2.0.18/conf
目錄,打開hbase-site.xml
文件。vi hbase-site.xml
配置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.username和hbase.client.password:訪問Lindorm寬表引擎的用戶名和密碼。如果忘記密碼,可以通過寬表引擎的集群管理系統(tǒng)修改密碼,具體操作請參見修改用戶密碼。
通過Lindorm Shell訪問Lindorm寬表引擎。
進入
alihbase-2.0.18/bin
目錄執(zhí)行以下命令。./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介紹。
數據定義語言
create:創(chuàng)建表。
list:展示所有表。
disable:禁用表。
is_disabled:驗證表是否被禁用。
enable:啟用表。
is_enabled:驗證表是否已啟用。
describe:展示指定表的詳細信息,包括表屬性、表結構等。
alter:修改表。
exists:用于驗證表是否存在。
drop:刪除指定表。
數據操作語言
put:用于更新特定單元格中的值。
get:用于獲取指定行或單元格的內容。
delete:用于刪除表中單元格的值。
deleteall:用于刪除指定行的所有單元格。
scan:用于掃描并返回表數據。
count:用于計算并返回表中的行數。
truncate_preserve:清空表中的數據,其內部實現是將指定的表下線和刪除,再進行重建,并且Region分區(qū)與舊表保留一致。
進入和退出Shell環(huán)境
進入Shell環(huán)境。
bin/hbase shell
退出Shell環(huán)境。
quit
操作參考
建表并插入數據
創(chuàng)建表。創(chuàng)建時必須輸入表和列族的名稱。
create '表名', '列族名'
示例如下:
//創(chuàng)建一個名稱為test,列族名為cf的表 create 'test', 'cf'
插入數據。
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
為值。
查詢
查詢所有表的信息。支持使用正則表達式來過濾表。
list list 'abc.*' list 'test'
查詢指定表的數據。
scan
是一種訪問HBase數據的方式,它非常的靈活,scan
操作可以用來掃描全表或查詢固定范圍的數據。查詢速度會比查詢單條(使用get
)數據略慢一些。執(zhí)行以下語句可以查詢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
禁用和啟用表
禁用和啟用指定表。如果您想要對一張表執(zhí)行刪除、修改設置或其他操作,請先使用disable命令禁用這張表。在刪除或者修改配置完成后,再使用enable命令啟用表,重新使用這張表。
disable '表名'
enable '表名'
刪除表
刪除指定表。
drop '表名'
常用配置參考
為指定表設置Major Compaction周期(無特殊情況下不建議自行設置),單位為毫秒(ms)。
以下示例設置Major Compaction周期為7天。
alter '表名', {NAME => '列族名', CONFIGURATION => {'hbase.hregion.majorcompaction' => 16800000}}
說明默認值:Math.Min(TTL,1728000000ms)。如果不設置TTL,該參數系統(tǒng)默認設置的是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'}
為指定表設置預分區(qū)。
create'表名',{NAME => '列族名',COMPRESSION => 'snappy' }, { NUMREGIONS => 50, SPLITALGO => 'HexStringSplit' }
參數說明
字段
描述
NAME
HBase表的列族名稱。
COMPRESSION
HBase表的數據壓縮方式。無默認壓縮算法。可選的壓縮算法共以下三種:
ZSTD(推薦)
SNAPPY
LZ4
NUMREGIONS
分片的個數。一般按照每個分片使用6~8 GB的存儲量來計算分片數量。如果實例規(guī)模較大,分片數量可以按需設置多個。
SPLITALGO
初始化分區(qū)的算法。HBase表支持以下三種分割算法每個分割算法的適用場景如下描述:
HexStringSplit:適用于以十六進制的字符串作為前綴的Rowkey。
DecimalStringSplit:適用于以十進制的數字字符串作為前綴的Rowkey。
UniformSplit:適用于Rowkey的前綴是完全隨機的。
修改配置后,您可以通過以下語句驗證是否修改成功:
describe '表名'