W3Cschool
恭喜您成為首批注冊(cè)用戶(hù)
獲得88經(jīng)驗(yàn)值獎(jiǎng)勵(lì)
Apache HBase Shell 是在(J)Ruby 的 IRB 的基礎(chǔ)上增加了一些 HBase 特定的命令。你可以在 IRB 中做的任何事情,都可以在 HBase Shell 中完成。
要運(yùn)行 HBase shell,請(qǐng)執(zhí)行如下操作:
$ ./bin/hbase shell
輸入:help,然后按 <RETURN> 查看 shell 命令和選項(xiàng)的列表。至少瀏覽器幫助輸出末尾的段落,了解如何將變量和命令參數(shù)輸入到 HBase shell 中;尤其要注意表名、行和列等是如何引用的。
請(qǐng)參閱本教程中的快速啟動(dòng)HBase章節(jié)的“shell 練習(xí)”部分。
有關(guān)腳本編寫(xiě) Apache HBase 的示例,請(qǐng)查看 HBase bin 目錄;查看以* .rb結(jié)尾的文件,要運(yùn)行這些文件之一,請(qǐng)執(zhí)行如下操作:
$ ./bin/hbase org.jruby.Main PATH_TO_SCRIPT
HBase Shell(HBASE-11658)添加了一種新的非交互模式。非交互模式捕獲 HBase Shell 命令的退出狀態(tài)(成功或失敗),并將該狀態(tài)返回給命令解釋器。如果您使用正常的交互模式,HBase Shell 將只會(huì)返回自己的退出狀態(tài),這幾乎總是會(huì)0成功的。
要調(diào)用非交互模式,請(qǐng)將 -n 或 --non-interactive 選項(xiàng)傳遞給 HBase Shell。
您可以在操作系統(tǒng)腳本解釋器中使用 HBase shell,例如 Bash shell,它是大多數(shù) Linux 和 UNIX 發(fā)行版的默認(rèn)命令解釋程序。以下準(zhǔn)則使用 Bash 語(yǔ)法,但可以調(diào)整為使用 C 樣式的 shell(例如 csh 或 tcsh),并且可能會(huì)修改為使用 Microsoft Windows 腳本解釋器一起使用。
注意:以這種方式生成 HBase Shell 命令的速度很慢,所以在決定何時(shí)將 HBase 操作與操作系統(tǒng)命令行相結(jié)合時(shí),請(qǐng)記住這一點(diǎn)。
示例——將命令傳遞給 HBase Shell
您可以使用 echo 命令和 |(管道)操作,以非交互模式將命令傳遞到 HBase Shell。一定要轉(zhuǎn)義 HBase 命令中的字符,否則 shell 將會(huì)解釋這些字符。一些調(diào)試級(jí)別的輸出已從下面的示例中截?cái)唷?/p>
$ echo "describe 'test1'" | ./hbase shell -n
Version 0.98.3-hadoop2, rd5e65a9144e315bb0a964e7730871af32f5018d5, Sat May 31 19:56:09 PDT 2014
describe 'test1'
DESCRIPTION ENABLED
'test1', {NAME => 'cf', DATA_BLOCK_ENCODING => 'NON true
E', BLOOMFILTER => 'ROW', REPLICATION_SCOPE => '0',
VERSIONS => '1', COMPRESSION => 'NONE', MIN_VERSIO
NS => '0', TTL => 'FOREVER', KEEP_DELETED_CELLS =>
'false', BLOCKSIZE => '65536', IN_MEMORY => 'false'
, BLOCKCACHE => 'true'}
1 row(s) in 3.2410 seconds
若要取消所有輸出,請(qǐng)將其回顯到 /dev/null:
$ echo "describe 'test'" | ./hbase shell -n > /dev/null 2>&1
示例8——檢查腳本命令的結(jié)果
由于腳本不是設(shè)計(jì)為交互式運(yùn)行的,因此您需要一種方法來(lái)檢查命令是失敗還是成功。HBase shell 使用為成功的命令返回值0的標(biāo)準(zhǔn)約定,并為失敗的命令返回一些非零值。Bash 將命令的返回值存儲(chǔ)在一個(gè)名為 $? 的特殊環(huán)境變量中。因?yàn)槊看?shell 運(yùn)行任何命令時(shí)都會(huì)覆蓋該變量,所以應(yīng)該將結(jié)果存儲(chǔ)在另一個(gè)腳本定義的變量中。
下面的這個(gè)腳本展示了一種方法來(lái)存儲(chǔ)返回值并根據(jù)它做出決定:
#!/bin/bash
echo "describe 'test'" | ./hbase shell -n > /dev/null 2>&1
status=$?
echo "The status was " $status
if ($status == 0); then
echo "The command succeeded"
else
echo "The command may have failed."
fi
return $status
獲取退出代碼0意味著您腳本編寫(xiě)的命令確實(shí)成功了。但是,獲取非零退出代碼并不一定意味著命令失敗。該命令可能已成功,但客戶(hù)端失去連接,或者其他事件阻礙了其成功。這是因?yàn)?RPC 命令是無(wú)狀態(tài)的。確保操作狀態(tài)的唯一方法是檢查。例如,如果你的腳本創(chuàng)建一個(gè)表,但返回一個(gè)非零的退出值,你應(yīng)該檢查表是否實(shí)際創(chuàng)建,然后再試圖創(chuàng)建它。
您可以將 HBase Shell 命令輸入到文本文件中,每行一個(gè)命令,并將該文件傳遞給HBase Shell。
示例9——命令文件示例
create 'test', 'cf'
list 'test'
put 'test', 'row1', 'cf:a', 'value1'
put 'test', 'row2', 'cf:b', 'value2'
put 'test', 'row3', 'cf:c', 'value3'
put 'test', 'row4', 'cf:d', 'value4'
scan 'test'
get 'test', 'row1'
disable 'test'
enable 'test'
示例10——指示HBase Shell執(zhí)行命令
將命令文件的路徑作為 hbase shell 命令的唯一參數(shù)傳遞。每個(gè)命令都會(huì)執(zhí)行并顯示其輸出。如果您未在腳本中包含該 exit 命令,則會(huì)返回到 HBase shell 提示符。沒(méi)有辦法以編程方式檢查每個(gè)單獨(dú)的命令是否成功或失敗。此外,盡管您看到每個(gè)命令的輸出,但命令本身并未回顯到屏幕,因此可能難以將命令與其輸出對(duì)齊。
$ ./hbase shell ./sample_commands.txt
0 row(s) in 3.4170 seconds
TABLE
test
1 row(s) in 0.0590 seconds
0 row(s) in 0.1540 seconds
0 row(s) in 0.0080 seconds
0 row(s) in 0.0060 seconds
0 row(s) in 0.0060 seconds
ROW COLUMN+CELL
row1 column=cf:a, timestamp=1407130286968, value=value1
row2 column=cf:b, timestamp=1407130286997, value=value2
row3 column=cf:c, timestamp=1407130287007, value=value3
row4 column=cf:d, timestamp=1407130287015, value=value4
4 row(s) in 0.0420 seconds
COLUMN CELL
cf:a timestamp=1407130286968, value=value1
1 row(s) in 0.0110 seconds
0 row(s) in 1.5630 seconds
0 row(s) in 0.4360 seconds
您可以使用 HBASE_SHELL_OPTS 環(huán)境變量將 VM 選項(xiàng)傳遞到 HBase Shell 。您可以在您的環(huán)境中進(jìn)行設(shè)置,例如通過(guò)編輯 ?/ .bashrc,或?qū)⑵湓O(shè)置為啟動(dòng)HBase Shell 的命令的一部分。以下的示例設(shè)置了幾個(gè)與垃圾回收相關(guān)的變量,僅用于運(yùn)行 HBase Shell 的 VM 的生命周期。為了可讀性,該命令應(yīng)該在單行中全部運(yùn)行,但是會(huì)被 \ 字符打斷。
$ HBASE_SHELL_OPTS="-verbose:gc -XX:+PrintGCApplicationStoppedTime -XX:+PrintGCDateStamps \
-XX:+PrintGCDetails -Xloggc:$HBASE_HOME/logs/gc-hbase.log" ./bin/hbase shell
Copyright©2021 w3cschool編程獅|閩ICP備15016281號(hào)-3|閩公網(wǎng)安備35020302033924號(hào)
違法和不良信息舉報(bào)電話(huà):173-0602-2364|舉報(bào)郵箱:jubao@eeedong.com
掃描二維碼
下載編程獅App
編程獅公眾號(hào)
聯(lián)系方式:
更多建議: