日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

cdh界面 hue 配置hbase_海量数据存储技术之HBase:使用HBase Shell操纵HBase

發(fā)布時間:2023/12/10 编程问答 37 豆豆
生活随笔 收集整理的這篇文章主要介紹了 cdh界面 hue 配置hbase_海量数据存储技术之HBase:使用HBase Shell操纵HBase 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

Apache HBase Shell是JRuby的IRB,并在此基礎(chǔ)上加入了HBase特有的命令。

JRuby是用Java實現(xiàn)的Ruby解釋器。通過JRuby,你可以在JVM上直接運行Ruby程序,調(diào)用Java的類庫。

IRB即interactive ruby,交互式Ruby。

運行HBase Shell:$ ./bin/hbase shell

例如,我使用CDH搭建的Hadoop集群,并且安裝了HBase;登錄后,在集群上直接使用命令:hbase shell

輸入命令:help ,然后回車,可以看到對各種命令的簡單描述。

輸入命令:help "COMMAND" 可看具體信息。

例:help "move"

常用命令舉例:

1) 查看表結(jié)構(gòu)

desc '表名'

2)執(zhí)行大合并

major_compact '表名'

3)列出Region

list_regions '表名'

看的不是很清晰,取一條:

SERVER_NAME:

bg87.cnki.com,16020,1539856447742

REGION_NAME:CNKI_Search201702,1412*1487792102000#1170222153901497888|4170222193201735373$,1539880666725.bbe3ff87712f654cb29a05243229effe.

START_KEY:1412*1487792102000#1170222153901497888|4170222193201735373$

END_KEY:

358*1487455399000#1161229194701353797|5170218220001766105$

SIZE:957

REQ:4705

LOCALITY:1.0

還可以有選擇性的輸出信息,例如只輸出服務(wù)器名稱,起始鍵

list_regions 'testtable', {}, ['SERVER_NAME', 'start_key','end_key']

4)移動Region

move 'ENCODED_REGIONNAME', 'SERVER_NAME'

找到ENCODED_REGIONNAME:

從REGION_NAME中找,上例中倒數(shù)第二個句點后的一段就是,即bbe3ff87712f654cb29a05243229effe

例:

move '8a5e97bcb910be18cf6f9e07f59816c6','bg84.cnki.com,16020,1539856459310'

5)修改表結(jié)構(gòu)

例:將表CNKI_Search201701的COMPRESSION都改為snappy

alter 'CNKI_Search201701',{NAME => 'im', COMPRESSION => 'snappy'}, {NAME => 'fw', COMPRESSION => 'snappy'},{NAME => 'wf', COMPRESSION => 'snappy'}

6)列出所有表:

list

7) 查詢表行數(shù)

count '表名'

1使用Ruby編寫腳本

在HBase的bin目錄下可以找到以rb為后綴的腳本文件,為了運行這個腳本,可以使用命令

$ ./bin/hbase org.jruby.Main PATH_TO_SCRIPT

PATH_TO_SCRIPT是腳本路徑。

讓我看看bin目錄下的ruby腳本。

其實切換到bin目錄下,使用下面的命令也是可以的。

$ hbase-jruby SCRIPT

例如,$ hbase-jruby get-active-master.rb

讓我們看看hbase-jruby這個文件里有啥:

看,它其實封裝了org.jruby.Main。

2以非交互模式運行Shell

非交互模式會捕獲HBase Shell命令退出的狀態(tài)(成功或失敗),如果使用普通模式,那么HBase Shell總是返回它自己的執(zhí)行狀態(tài),大多數(shù)時候返回代表成功的數(shù)字0。

使用-n或--non-interactive選項開啟非交互模式。

不過我使用CDH安裝的HBase長時間無法返回。

3操作系統(tǒng)腳本中的HBase Shell

你可以在操作系統(tǒng)腳本中使用HBase Shell,比如Bash shell,這種大多數(shù)Linux和Unix默認的交互式命令接口。以下準則使用Bash語法,但可以調(diào)整,使其可同C樣式的shell一起使用,例如csh或tcsh,而且經(jīng)過調(diào)整后,還可以和Microsoft Windows 腳本解釋器一起使用。

注意:以這種方式生成 HBase Shell 命令的速度很慢,所以要注意何時將HBase 操作與操作系統(tǒng)命令行相結(jié)合是合適的。

例,將命令傳遞給HBase Shell

使用echo命令和|(管道)操作,以非交互模式將命令傳遞給HBase Shell。務(wù)必要轉(zhuǎn)義HBase命令中的字符,否則shell將會解釋這些字符。

$ echo "describe 'test1'" | ./hbase shell -n

如果想抑制所有輸出,使用下面的命令:

$ echo "describe 'test'" | ./hbase shell -n > /dev/null 2>&1

例,檢查腳本命令執(zhí)行結(jié)果

由于腳本沒有設(shè)計成交互式執(zhí)行,所以需要一種方法來檢查命令是否執(zhí)行成功。成功執(zhí)行的命令返回0,失敗的命令返回非零值。Bash將命令的返回值存儲在一個名為 $? 的特殊環(huán)境變量中。因為每次shell執(zhí)行任何命令時都會為該變量重新賦值,所以應(yīng)該將結(jié)果存儲在另一個腳本定義的變量中。

不過,我們還應(yīng)注意,成功執(zhí)行的腳本返回值一定是0,但返回值非零不一定代表失敗。因為RPC(遠程過程調(diào)用)命令是無狀態(tài)的,所以有可能是客戶端連接斷開了,或者受其他是他事件的影響。最好的辦法就是,檢查執(zhí)行結(jié)果,比如,你創(chuàng)建了一張表,但shell返回了一個非零值,那么你查下這個表是否已經(jīng)存在了。

下面的這個腳本展示了一種存儲返回值的方法并根據(jù)返回值做出決定。

4從命令文件讀取HBase Shell命令

在txt文本中寫HBase Shell命令,一行一個命令,例如:

例,引導HBase Shell執(zhí)行命令

將命令文件的路徑作為傳遞給hbase shell的唯一參數(shù),如果腳本中不包含exit命令,則會返回提示符。無法以編程方式檢查每個單獨的命令是否成功。

5傳遞VM選項給Shell

使用HBASE_SHELL_OPTS環(huán)境變量將VM選項傳遞給HBase Shell 。在你的環(huán)境中進行設(shè)置HBASE_SHELL_OPTS,例如通過編輯 ?/ .bashrc,或?qū)⑵湓O(shè)置為啟動HBase Shell 的命令的一部分。下面的示例設(shè)置了幾個與垃圾回收相關(guān)的變量,僅用于VM運行HBase Shell的時候。可以將命令寫成一行,如果命令很長的話,也可以使用字符將命令分隔為多行。

6重寫配置文件啟動HBase Shell

像hbase-2.0.5/hbase-2.1.3/hbase-2.2.0/hbase-1.4.10/hbase-1.5.0這幾個版本的HBase,通過傳遞帶有-D前綴的鍵值對,可以傳遞或重寫hbase-*.xml中的配置項,

7 Shell技巧

表變量

HBase 0.95增加了面向?qū)ο骿ruby風格的表引用Shell,以前所有的HBase Shell命令都是面向過程風格的,它總是把表名當做參數(shù)傳遞給命令。HBase 0.95引入了將表看做jruby變量這一特性,表引用可以用于數(shù)據(jù)讀寫操作,如put, scan, get,禁用表,刪表,描述表等。

HBase 0.95之前,你會這樣寫命令:

從HBase 0.95版本開始,你會這樣寫命令,就是講一個表賦給一個變量:

如果一個表已經(jīng)創(chuàng)建了,可以使用get_table方法將其賦給一個變量

list命令也被擴展了,它能將表名集合拼接成字符串返回。可以使用jruby根據(jù)表名來操作表。list_snapshots命令與此相似。

irbrc文件

在主目錄下創(chuàng)建一個irbrc文件,添加自定義項,比較有用的是,記錄歷史命令。然后可以跨Shell調(diào)用。

如果不想將每個表達式的結(jié)果打印到stderr,可以這樣做,例如list命令返回的表集合。

日志數(shù)據(jù)的時間戳

從HBase日志文件中,將08/08/16 20:56:29,這種格式的日期轉(zhuǎn)換為時間戳

再轉(zhuǎn)成日期形式

Shell查詢配置

在Shell中設(shè)置配置

使用HBase Shell預(yù)分裂表

使用HBase Shell的create命令創(chuàng)建表時,可使用各種選項預(yù)先拆分表。

最簡單的方法是在創(chuàng)建表格時指定一個分割點數(shù)組。請注意,當將字符串直接量指定為分割點時,將根據(jù)字符串所代表的字節(jié)形式創(chuàng)建分割點。所以將“10”指定分割點,實際上指定“x3130”為分割點。

分割點集合將定義n+1個區(qū)域,其中n是分割點的數(shù)量。最低的區(qū)域包含了所有第一個分隔點之前的所有可能最低的鍵值,但不包含第一個分割點;下一個區(qū)域?qū)瑥牡谝粋€分割點開始的鍵值,但不包括下一個分割點鍵值。以此類推,直到最后一個分割點。最后一個區(qū)域?qū)淖詈笠粋€分割點開始直到最后的所有可能的最大鍵值。

在上面的例子中,將使用列族 "f" 創(chuàng)建表 "t1",預(yù)先拆分為四個區(qū)域。注意,第一個區(qū)域?qū)瑥摹皒00”到“x30”(因為“x31”是“1”的 ASCII 碼)的所有鍵值。

可以使用文件傳遞分割點。下面的例子中,從本地文件系統(tǒng)的文件中讀取分割點。文件中,一行指定一個分割點鍵值。

其他選項是根據(jù)所需的區(qū)域數(shù)量和分割算法自動分割。HBase提供基于均勻拆分或十六進制密鑰的分割鍵值范圍算法,也可以提供自己的拆分算法來細分鍵值范圍。

HBase Shell實際是Ruby環(huán)境,可以使用Ruby腳本寫分割算法。

請注意,HBase Shell中的truncate命令在刪除并重建具有默認選項的表時會將任何預(yù)分割都丟棄。如果需要truncate預(yù)分割的表,刪除并重建表的時候,必須顯式地指定自定義分割選項。

調(diào)試

可以設(shè)置調(diào)試開關(guān),以便可以輸出更多信息。例如想看到更多的異常棧追蹤信息,那么使用下面的命令:

hbase> debug

設(shè)置日志級別為DEBUG,使用下面的命令:

$ ./bin/hbase shell -d

Count命令

使用count查詢表大小時,指定正確的CACHE會查的更快

hbase> count '', CACHE => 1000

上面,一次拉取1000行。行數(shù)越多設(shè)置CACHE越小,默認一次取一行。


英文官方文檔見:http://hbase.apache.org/book.html#shell

總結(jié)

以上是生活随笔為你收集整理的cdh界面 hue 配置hbase_海量数据存储技术之HBase:使用HBase Shell操纵HBase的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。