hbase日常運維

2021-06-20 17:34:05 字數 2777 閱讀 6054

一,基本命令:

建表: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介面的方式,我推薦使用這種方式,成本低。

先總結這麼多,有空我再詳細寫一下region壞時怎麼修復。

oracle日常運維

1.解鎖使用者 select username,account status from dba users b where b.username upper alter user account unlock 解鎖 alter user identified by sh 解開expired alte...

日常運維 1

10.1 使用w檢視系統負載 第一行從左到右依次表示當前時間 系統已執行時間 登入使用者數 終端登入顯示為ttyx,遠端登入顯示為pts x 平均負載 每1分鐘 每5分鐘 每15分鐘 主要是注意第乙個負載值,值越大說明伺服器壓力越大。一般情況下,這個值不要超過伺服器的邏輯cpu數量就沒有關係。2 檢...

日常運維2

安全增強型 linux security enhanced linux 簡稱 selinux,它是乙個 linux 核心模組,也是 linux 的乙個安全子系統。enforcing 開啟狀態,會強制執行selinux的安全策略 2 permissive 提示狀態,會列印觸發selinux安全策略的警...