HBase集群運(yùn)維與優(yōu)化

1、HBase安全重啟HRegionServer

bin/graceful_stop.sh   --restart   hostname

以上命令執(zhí)行的時候,HBase會把hostname下的region安全轉(zhuǎn)移到集群的其他機(jī)器中,然后再重啟,重啟完成后再遷移回來,達(dá)到安全重啟的目的。

2、修改handler.count參數(shù)

<property>
  <name>hbase.regionserver.handler.count</name>
  <value>200</value>
  <description>Default : 10.
      Count of RPC Listener instances spun up on RegionServers.
      Same property is used by the Master for count of master handlers.
  </description>
</property>

RegionServer端開啟的RPC監(jiān)聽器實(shí)例個數(shù),也即RegionServer能夠處理的IO請求線程數(shù)。默認(rèn)是10.

此參數(shù)與內(nèi)存息息相關(guān)。該值設(shè)置的時候,以監(jiān)控內(nèi)存為主要參考。

對于單次請求內(nèi)存消耗較高的Big PUT場景(大容量單次PUT或設(shè)置了較大cache的scan,均屬于Big PUT)或ReigonServer的內(nèi)存比較緊張的場景,可以設(shè)置的相對較小。

對于單次請求內(nèi)存消耗低,TPS(TransactionPerSecond,每秒事務(wù)處理量)要求非常高的場景,可以設(shè)置的相對大些,通常都調(diào)到100~200之間,提高regionserver性能。

3、HBase0.94遷移數(shù)據(jù)到HBase1.0的過程

(1)從hbase0.94導(dǎo)出指定表的數(shù)據(jù)到hdfs中

 hbase org.apache.hadoop.hbase.mapreduce.Export adt_device_click_compaign /data/yann/data

注意: export 目錄不能存在

(2)把導(dǎo)出的文件拷貝到HBase1.0所在的hdfs目錄

可以通過打包后get/put的方式,但是推薦使用集群之間的拷貝工具distcp

hadoop-2.6.0-cdh5.5.0/bin/hadoop distcp  -D mapreduce.job.queuename=default -update -skipcrccheck hftp://hostname:50070/data/output/*   hdfs://hdfs/data/output/

(3)在 hbase1.0 下創(chuàng)建對應(yīng)的表后,執(zhí)行以下命令進(jìn)行導(dǎo)入

hbase -Dhbase.import.version=0.94 org.apache.hadoop.hbase.mapreduce.Import adt_device_click_compaign /data/yann/data

這里要注意一點(diǎn)是,-Dhbase.import.version參數(shù)的值是寫遷出的hbase版本

4、HBase的hbck工具

hbase hbck [opts] {only tables}

(1) opts通用可選項(xiàng)

-help 展示help信息;
-detail 展示所有Region的詳情;
-timelag <秒級時間>  處理在過去的指定時間內(nèi)沒有發(fā)生過元數(shù)據(jù)更新的region;
-sleepBeforeRerun <秒級時間>  在執(zhí)行-fix指令后時睡眠指定的時間后再檢查fix是否生效;
-summary 只打印表和狀態(tài)的概要信息;
-metaonly 只檢查hbase:meta表的狀態(tài);
-sidelineDir <hdfs://> 備份當(dāng)前的元數(shù)據(jù)到HDFS上;
-boundaries  校驗(yàn)META表和StoreFiles的Region邊界是否一致;

(2) 元數(shù)據(jù)修復(fù)選項(xiàng)

在不確定的情況下,慎用以下指令。

-fix 嘗試修復(fù)Region的分配,通常用于向后兼容;
-fixAssignments 嘗試修復(fù)Region的分配,用來替換-fix指令;
-fixMeta  嘗試修復(fù)元數(shù)據(jù)問題;這里假設(shè)HDFS上的region信息是正確的;
-noHdfsChecking  不從HDFS加載/檢查Region信息;這里假設(shè)hbase:meta表中的Region信息是正確的,不會在檢查或修復(fù)任何HDFS相關(guān)的問題,如黑洞(hole)、孤島(orphan)或是重疊(overlap);
-fixHdfsHoles  嘗試修復(fù)HDFS中的Region黑洞;
-fixHdfsOrphans  嘗試修復(fù)hdfs中沒有.regioninfo文件的region目錄;
-fixTableOrphans  嘗試修復(fù)hdfs中沒有.tableinfo文件的table目錄(只支持在線模式);
-fixHdfsOverlaps  嘗試修復(fù)hdfs中region重疊的現(xiàn)象;
-fixVersionFile  嘗試修復(fù)hdfs中hbase.version文件缺失的問題;
-maxMerge <n>  在修復(fù)region重疊的現(xiàn)時,允許merge最多<n>個region(默認(rèn)n等于5);
-sidelineBigOverlaps  在修復(fù)region重疊問題時,允許暫時擱置重疊量較大的部分;
-maxOverlapsToSideline <n>  在修復(fù)region重疊問題時,允許一組里暫時擱置最多n個region不處理(默認(rèn)n等于2);
-fixSplitParents 嘗試強(qiáng)制將下線的split parents上線;
-ignorePreCheckPermission  在執(zhí)行檢查時忽略文件系統(tǒng)權(quán)限;
-fixReferencesFiles 嘗試下線引用斷開(lingering reference)的StoreFile;
-fixEmptyMetaCells  嘗試修復(fù)hbase:meta表中沒有引用到任何region的entry(REGIONINFO_QUALIFIER為空的行)。

(3) Datafile修復(fù)選項(xiàng)

專業(yè)命令,慎用。

-checkCorruptHFiles  檢查所有HFile--通過逐一打開所有的HFile來確定其是否可用;
-sidelineCorruptHFiles  隔離損壞的HFile。該指令中包含-checkCorruptHFiles操作。

(4) Meta修復(fù)快捷指令

-repair  是以下指令的簡寫:-fixAssignments -fixMeta -fixHdfsHoles -fixHdfsOrphans -fixHdfsOverlaps -fixVersionFile -sidelineBigOverlaps -fixReferenceFiles -fixTableLocks -fixOrphanedTableZnodes;

-repairHoles  是以下指令的簡寫:-fixAssignments -fixMeta -fixHdfsHoles。

(5) Table lock選項(xiàng)

-fixTableLocks 刪除已持有超過很長時間的table lock((hbase.table.lock.expire.ms配置項(xiàng),默認(rèn)值為10分鐘)。

(6) Table Znode選項(xiàng)

-fixOrphanedTableZnodes  如果表不存在,則將其在zookeeper中ZNode狀態(tài)設(shè)置為disabled。
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容