Hbase常用命令


一般操作:


hbase(main)> status
hbase(main)> version
創(chuàng)建命名空間: namespace指的是一個(gè) 表的邏輯分組 戳粒,同一組中的表有類似的用途毁涉,相當(dāng)于關(guān)系型數(shù)據(jù)庫中的database娘汞。
hbase(main):060:0> create_namespace 'test1'
drop_namespace 
創(chuàng)建該命名空間的表:
hbase(main):061:0> create 'test1:test','f1','f2'
create 'scores',{NAME=>'course',VERSIONS=>2}
1)查看有哪些表 list   describe 
hbase(main)> list
hbase(main)> describe 'member'
2)創(chuàng)建表 create  只創(chuàng)建列族就可漫仆,put數(shù)據(jù)時(shí)直接
# 語法:create <table>, {NAME => <family>, VERSIONS => <VERSIONS>}
# 例如:創(chuàng)建表t1,有兩個(gè)family name:f1坤按,f2毯欣,且版本數(shù)均為2
hbase(main)> create 't1',{NAME => 'f1', VERSIONS => 2},{NAME => 'f2', VERSIONS => 2}
3)刪除表
分兩步:首先disable,然后drop
例如:刪除表t1
hbase(main)> disable 't1'
hbase(main)> drop 't1'
4)查看表的結(jié)構(gòu)
# 語法:describe <table>
# 例如:查看表t1的結(jié)構(gòu)
hbase(main)> describe 't1'
5)修改表結(jié)構(gòu)  alter
修改表結(jié)構(gòu)必須先disable
alter 't1', {NAME => 'f1', VERSIONS => 5}
# 語法:alter 't1', {NAME => 'f1'}, {NAME => 'f2', METHOD => 'delete'}
# 例如:修改表test1的cf的TTL為180天
hbase(main)> disable 'test1'
hbase(main)> alter 'test1',{NAME=>'body',TTL=>'15552000'},{NAME=>'meta', TTL=>'15552000'}
hbase(main)> enable 'test1'
6)添加數(shù)據(jù) put
# 語法:put <table>,<rowkey>,<family:column>,<value>,<timestamp>
# 例如:給表t1的添加一行記錄:rowkey是rowkey001臭脓,family name:f1酗钞,column name:col1,value:value01,timestamp:系統(tǒng)默認(rèn)
hbase(main)> put 't1','rowkey001','f1:col1','value01'
用法比較單一算吩。
7)查詢數(shù)據(jù) 
a)查詢某行記錄  get
# 語法:get <table>,<rowkey>,[<family:column>,....]
查詢r(jià)owkey001一行下的所有列值:
hbase(main)> get 't1','rowkey001'
# 例如:查詢表t1,rowkey001行佃扼,f1:col1列
hbase(main)> get 't1','rowkey001', 'f1:col1'
# 或者:
hbase(main)> get 't1','rowkey001', {COLUMN=>'f1:col1'}

b)掃描表
# 語法:scan <table>, {COLUMNS => [ <family:column>,.... ], LIMIT => num}
# 另外偎巢,還可以添加STARTROW、TIMERANGE和FITLER等高級功能
# 例如:掃描表t1的前5條數(shù)據(jù)
hbase(main)> scan 't1',{LIMIT=>5}
test1空間下的test表的columns=f1的所有行
hbase(main)> scan 'test1:test',{COLUMNS=>'f1'}
test1空間下的test表的columns=f1的第1行
hbase(main)> scan 'test1:test',{COLUMNS=>'f1',LIMIT=>1}

scan 'scores',{VERSIONS=>2}  version<=2
scan 'scores',{TIMERANGE=>[1394097631386,1394097651029],VERSIONS=>2}
c)查詢表中的數(shù)據(jù)行數(shù)  count
# 語法:count <table>, {INTERVAL => intervalNum, CACHE => cacheNum}
# INTERVAL設(shè)置多少行顯示一次及對應(yīng)的rowkey兼耀,默認(rèn)1000压昼;CACHE每次去取的緩存區(qū)大小,默認(rèn)是10瘤运,調(diào)整該參數(shù)可提高查詢速度
# 例如窍霞,查詢表t1中的行數(shù),每100條顯示一次拯坟,緩存區(qū)為500
hbase(main)> count 't1', {INTERVAL => 100, CACHE => 500}
8)刪除數(shù)據(jù)
a )刪除行中的某個(gè)列值  delete
# 語法:delete <table>, <rowkey>,  <family:column> , <timestamp>,必須指定列名
# 例如:刪除表t1但金,rowkey001中的f1:col1的數(shù)據(jù)
hbase(main)> delete 't1','rowkey001','f1:col1'
注:將刪除改行f1:col1列所有版本的數(shù)據(jù)
b )刪除行  deleteall
# 語法:deleteall <table>, <rowkey>,  <family:column> , <timestamp>,可以不指定列名郁季,刪除整行數(shù)據(jù)
# 例如:刪除表t1冷溃,rowk001的數(shù)據(jù)
hbase(main)> deleteall 't1','rowkey001'
c)刪除表中的所有數(shù)據(jù)   truncate
# 語法: truncate <table>
# 其具體過程是:disable table -> drop table -> create table
# 例如:刪除表t1的所有數(shù)據(jù)
hbase(main)> truncate 't1'
9)檢查表是否存在 exists
hbase(main):019:0> exists 't1'
10)查看表是否可用   is_enabled
hbase(main):036:0> is_enabled 't1'
help
hbase(main)>  create help
11).判斷表是否enable
hbase(main):034:0>is_enabled 'member'

過濾器:

0.所有的過濾器都在服務(wù)端生效
1.顯示所有過濾器
hbase(main):010:0> show_filters
2.只返回key及其他關(guān)鍵部分
scan 'airline',{ FILTER => "KeyOnlyFilter()"}
3.只返回每一行的第一個(gè)值
 scan 'airline',{ FILTER => "FirstKeyOnlyFilter()"}
4.過濾rowkey 需要輸入rowkey的前綴
scan 'airline', {FILTER => "(PrefixFilter ('row2'))"}
5.過慮qualifier,需要輸入qualifier前綴
scan 'airline', {FILTER => "(PrefixFilter ('row2')) AND ColumnPrefixFilter('destination')"}
6.多重過濾qualifier梦裂,需要輸入qualifier前綴
scan 'airline',{FILTER =>"MultipleColumnPrefixFilter('source','destination','date')"}
7.返回該表中相應(yīng)的qualifier數(shù)
scan 'airline',{FILTER =>"ColumnCountGetFilter(2)"}
8.返回多少行
scan 'airline',{FILTER => "PageFilter(1)"}
9.掃描到哪一行停止
scan 'airline',{FILTER =>"InclusiveStopFilter('row1')"}
10.只返回有指定Qualifier的數(shù)據(jù)
scan 'airline',{ FILTER =>"QualifierFilter(=,'binary:flightno')"}   >  =   <來替換‘=’
11.返回滿足條件(某一列的值)的數(shù)據(jù)
scan 'airline', { COLUMNS =>'flightbetween:source', LIMIT => 4, FILTER => "ValueFilter( =, 'binaryprefix:hyd' )" }      >  =   <來替換‘=’
行的最大版本是通過 HColumnDescriptor定義在每一個(gè)列族的似枕,默認(rèn)的最大版本號是1
不推薦設(shè)置 最大版本號 為很大的值(數(shù)百甚至更多),除非舊的數(shù)據(jù)對你而言十分重要年柠。因?yàn)樘嗟陌姹緯?huì)使 StoreFile 很大凿歼。
hbase org.apache.hadoop.hbase.mapreduce.Driver import apply_info /user/data_temp/apply_info   hdfs路徑  hbase表
**

建表語句詳解:
-------

**
create 'testtable',{NAME => 'Toutiao', BLOOMFILTER => 'NONE', REPLICATION_SCOPE => '0', VERSIONS => '10', COMPRESSION => 'LZO', TTL => '30000', IN_MEMORY => 'false', BLOCKCACHE => 'false'},
 {NAME => 'coulmn', BLOOMFILTER => 'NONE', REPLICATION_SCOPE => '0', VERSIONS => '30', COMPRESSION => 'LZO', TTL => '30000', IN_MEMORY => 'true'} 
 (其中的屬性有   REPLICATION_SCOPE 復(fù)制份數(shù) 冗恨,只包含一個(gè)列簇“Toutiao”答憔,versions:設(shè)置歷史版本數(shù) 默認(rèn)為1,TTL:過期時(shí)間 單位為秒掀抹,默認(rèn)為永久保存攀唯,COMPRESSION:壓縮方式,當(dāng)配置lzo的情況)

BLOOMFILTER
布隆過濾器渴丸,優(yōu)化HBase的隨即讀取性能侯嘀,可選值NONE|ROW|ROWCOL,默認(rèn)為NONE谱轨,該參數(shù)可以單獨(dú)對某個(gè)列簇啟用戒幔。啟用過濾器,對于get操作以及部分scan操作可以剔除掉不會(huì)用到的存儲(chǔ)文件土童,減少實(shí)際IO次數(shù)诗茎,提高隨機(jī)讀性能。Row類型適用于只根據(jù)Row進(jìn)行查找,而RowCol類型適用于根據(jù)Row+Col聯(lián)合查找敢订,如下:
Row類型適用于:get ‘NewsClickFeedback’,’row1′
RowCol類型適用于:get ‘NewsClickFeedback’,’row1′,{COLUMN => ‘Toutiao’}
對于有隨機(jī)讀的業(yè)務(wù)王污,建議開啟Row類型的過濾器,使用空間換時(shí)間楚午,提高隨機(jī)讀性能昭齐。

COMPRESSION
數(shù)據(jù)壓縮方式,HBase支持多種形式的數(shù)據(jù)壓縮矾柜,一方面減少數(shù)據(jù)存儲(chǔ)空間阱驾,一方面降低數(shù)據(jù)網(wǎng)絡(luò)傳輸量進(jìn)而提升讀取效率。目前HBase支持的壓縮算法主要包括三種:GZip | LZO | Snappy怪蔑,下面表格分別從壓縮率里覆,編解碼速率三個(gè)方面對其進(jìn)行對比:
Snappy的壓縮率最低,但是編解碼速率最高缆瓣,對CPU的消耗也最小喧枷,目前一般建議使用Snappy

IN_MEMORY
數(shù)據(jù)是否常駐內(nèi)存,默認(rèn)為false弓坞。HBase為頻繁訪問的數(shù)據(jù)提供了一個(gè)緩存區(qū)域割去,緩存區(qū)域一般存儲(chǔ)數(shù)據(jù)量小、訪問頻繁的數(shù)據(jù)昼丑,常見場景為元數(shù)據(jù)存儲(chǔ)呻逆。默認(rèn)情況,該緩存區(qū)域大小等于Jvm Heapsize * 0.2 * 0.25 菩帝,假如Jvm Heapsize = 70G咖城,存儲(chǔ)區(qū)域的大小約等于3.2G。需要注意的是HBase Meta元數(shù)據(jù)信息存儲(chǔ)在這塊區(qū)域呼奢,如果業(yè)務(wù)數(shù)據(jù)設(shè)置為true而且太大會(huì)導(dǎo)致Meta數(shù)據(jù)被置換出去宜雀,導(dǎo)致整個(gè)集群性能降低,所以在設(shè)置該參數(shù)時(shí)需要格外小心握础。
BLOCKCACHE
是否開啟block cache緩存辐董,默認(rèn)開啟。

TTL
數(shù)據(jù)過期時(shí)間禀综,單位為秒简烘,默認(rèn)為永久保存。對于很多業(yè)務(wù)來說定枷,有時(shí)候并不需要永久保存某些數(shù)據(jù)孤澎,永久保存會(huì)導(dǎo)致數(shù)據(jù)量越來越大,消耗存儲(chǔ)空間是其一欠窒,另一方面還會(huì)導(dǎo)致查詢效率降低覆旭。如果設(shè)置了過期時(shí)間,HBase在Compact時(shí)會(huì)通過一定機(jī)制檢查數(shù)據(jù)是否過期,過期數(shù)據(jù)會(huì)被刪除型将。用戶可以根據(jù)具體業(yè)務(wù)場景設(shè)置為一個(gè)月或者三個(gè)月寂祥。示例中TTL => ‘ 259200’設(shè)置數(shù)據(jù)過期時(shí)間為三天,以最后一次更新時(shí)間為開始時(shí)間(TTL=>的更新超時(shí)時(shí)間是指:該列最后更新的時(shí)間七兜,到超時(shí)時(shí)間的限制丸凭,而不是第一次創(chuàng)建,到超時(shí)時(shí)間惊搏。)
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末贮乳,一起剝皮案震驚了整個(gè)濱河市忧换,隨后出現(xiàn)的幾起案子恬惯,更是在濱河造成了極大的恐慌,老刑警劉巖亚茬,帶你破解...
    沈念sama閱讀 218,941評論 6 508
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件酪耳,死亡現(xiàn)場離奇詭異,居然都是意外死亡刹缝,警方通過查閱死者的電腦和手機(jī)碗暗,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,397評論 3 395
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來梢夯,“玉大人言疗,你說我怎么就攤上這事∷淘遥” “怎么了噪奄?”我有些...
    開封第一講書人閱讀 165,345評論 0 356
  • 文/不壞的土叔 我叫張陵,是天一觀的道長人乓。 經(jīng)常有香客問我勤篮,道長,這世上最難降的妖魔是什么色罚? 我笑而不...
    開封第一講書人閱讀 58,851評論 1 295
  • 正文 為了忘掉前任碰缔,我火速辦了婚禮,結(jié)果婚禮上戳护,老公的妹妹穿的比我還像新娘金抡。我一直安慰自己,他們只是感情好腌且,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,868評論 6 392
  • 文/花漫 我一把揭開白布竟终。 她就那樣靜靜地躺著,像睡著了一般切蟋。 火紅的嫁衣襯著肌膚如雪统捶。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 51,688評論 1 305
  • 那天,我揣著相機(jī)與錄音喘鸟,去河邊找鬼匆绣。 笑死,一個(gè)胖子當(dāng)著我的面吹牛什黑,可吹牛的內(nèi)容都是我干的崎淳。 我是一名探鬼主播,決...
    沈念sama閱讀 40,414評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼愕把,長吁一口氣:“原來是場噩夢啊……” “哼拣凹!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起恨豁,我...
    開封第一講書人閱讀 39,319評論 0 276
  • 序言:老撾萬榮一對情侶失蹤嚣镜,失蹤者是張志新(化名)和其女友劉穎,沒想到半個(gè)月后橘蜜,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體菊匿,經(jīng)...
    沈念sama閱讀 45,775評論 1 315
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,945評論 3 336
  • 正文 我和宋清朗相戀三年计福,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了跌捆。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 40,096評論 1 350
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡象颖,死狀恐怖佩厚,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情说订,我是刑警寧澤抄瓦,帶...
    沈念sama閱讀 35,789評論 5 346
  • 正文 年R本政府宣布,位于F島的核電站克蚂,受9級特大地震影響闺鲸,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜埃叭,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,437評論 3 331
  • 文/蒙蒙 一摸恍、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧赤屋,春花似錦立镶、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,993評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至涩僻,卻和暖如春缭召,著一層夾襖步出監(jiān)牢的瞬間栈顷,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 33,107評論 1 271
  • 我被黑心中介騙來泰國打工嵌巷, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留萄凤,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 48,308評論 3 372
  • 正文 我出身青樓搪哪,卻偏偏與公主長得像靡努,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個(gè)殘疾皇子晓折,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,037評論 2 355