HBASE日常維護

2021-09-02 17:57:51 字數 2852 閱讀 9530

一,基本命令:

建表:create 'testtable','coulmn1','coulmn2'

也可以建表時加coulmn的屬性如:create 'testtable',, (其中的屬性有versions:設定歷史版本數,ttl:過期時間,compression:壓縮方式,當配置lzo的情況)

刪除表:drop 'testtable' (刪除表之前先要禁用表,命令disable 'testtable')

啟用和禁用表: enable 'testtable' 和disable 'testtable'

其它的基本命令:describe 'testtable'(檢視表結構),alert 修改表結構,list 列出所有表。

二,日常維護的命令

1,major_compact 'testtable',通常生產環境會關閉自動major_compact(配置檔案中hbase.hregion.majorcompaction設 為0),選擇乙個晚上使用者少的時間視窗手工major_compact,如果hbase更新不是太頻繁,可以乙個星期對所有表做一次 major_compact,這個可以在做完一次major_compact後,**所有的storefile數量,如果storefile數量增加到 major_compact後的storefile的近二倍時,可以對所有表做一次major_compact,時間比較長,操作盡量避免高鋒期。

2,flush 'testtable',將所有memstore重新整理到hdfs,通常如果發現regionserver的記憶體使用過大,造成該機的 regionserver很多執行緒block,可以執行一下flush操作,這個操作會造成hbase的storefile數量劇增,應盡量避免這個操 作,還有一種情況,在hbase進行遷移的時候,如果選擇拷貝檔案方式,可以先停寫入,然後flush所有表,拷貝檔案。

3,balance_switch true或者balance_switch flase,配置master是否執行平衡各個regionserver的region數量,當我們需要維護或者重啟乙個regionserver時,會 關閉balancer,這樣就使得region在regionserver上的分布不均,這個時候需要手工的開啟balance。

三,重啟乙個regionserver

bin/graceful_stop.sh --restart --reload --debug nodename

這個操作是平滑的重啟regionserver程序,對服務不會有影響,他會先將需要重啟的regionserver上面的所有 region遷移到其它的伺服器,然後重啟,最後又會將之前的region遷移回來,但我們修改乙個配置時,可以用這種方式重啟每一台機子,這個命令會關 閉balancer,所以最後我們要在hbase shell裡面執行一下balance_switch true,對於hbase regionserver重啟,不要直接kill程序,這樣會造成在zookeeper.session.timeout這個時間長的中斷,也不要通過 bin/hbase-daemon.sh stop regionserver去重啟,如果運氣不太好,-root-或者.meta.表在上面的話,所有的請求會全部失敗。

四,關閉下線一台regionserver

bin/graceful_stop.sh --stop  nodename

和上面一樣,系統會在關閉之前遷移所有region,然後stop程序,同樣最後我們要手工balance_switch true,開啟master的region均衡。

五,檢查region是否正常以及修復

bin/hbase hbck  (檢查)

bin/hbase hbck -fix (修復)

會返回所有的region是否正常掛載,如沒有正常掛載可以使用下一條命令修復,如果還是不能修復,那需要看日誌為什麼失敗,手工處理。

六,hbase的遷移

1,copytable方式

bin/hbase org.apache.hadoop.hbase.mapreduce.copytable --peer.adr=zookeeper1,zookeeper2,zookeeper3:/hbase 'testtable'

目前0.92之前的版本的不支援多版本的複製,0.94已經支援多個版本的複製。當然這個操作需要新增hbase目錄裡的conf/mapred-site.xml,可以複製hadoop的過來。

2,export/import

bin/hbase org.apache.hadoop.hbase.mapreduce.export testtable /user/testtable [versions] [starttime] [stoptime]

bin/hbase org.apache.hadoop.hbase.mapreduce.import testtable /user/testtable

跨版本的遷移,我覺得是乙個不錯的選擇,而且copytable不支援多版本,而export支援多版本,比copytable更實用一些。

3,直接拷貝hdfs對應的檔案

首先拷貝hdfs檔案,如bin/hadoop distcp hdfs://srcnamenode:9000/hbase/testtable/ hdfs://distnamenode:9000/hbase/testtable/

然後在目的hbase上執行bin/hbase org.jruby.main bin/add_table.rb /hbase/testtable

生成meta資訊後,重啟hbase

這個操作是簡單的方式,操作之前可以關閉hbase的寫入,執行flush所有表(上面有介紹),再distcp拷貝,如果hadoop版本不一致,可以用hftp介面的方式,我推薦使用這種方式,成本低

HBASE日常維護

一,基本命令 建表 create testtable coulmn1 coulmn2 也可以建表時加coulmn的屬性如 create testtable 其中的屬性有versions 設定歷史版本數,ttl 過期時間,compression 壓縮方式,當配置lzo的情況 刪除表 drop test...

HBASE日常維護

一,基本命令 建表 create testtable coulmn1 coulmn2 也可以建表時加coulmn的屬性如 create testtable 其中的屬性有versions 設定歷史版本數,ttl 過期時間,compression 壓縮方式,當配置lzo的情況 刪除表 drop test...

hbase日常維護

一,基本命令 建表 create testtable coulmn1 coulmn2 也可以建表時加coulmn的屬性如 create testtable 其中的屬性有versions 設定歷史版本數,ttl 過期時間,compression 壓縮方式,當配置lzo的情況 刪除表 drop test...