簡體   English   中英

修復HBase表(轉換中未分配的區域)

[英]Repair HBase table (unassigned region in transition)

我有點卡住修復故障表(在Hbase 0.92.1-cdh4.0.0,Hadoop 2.0.0-cdh4.0.0上)

轉換中的某個區域未完成:

Region    State
bf2025f4bc154914b5942af4e72ea063 counter_traces,1329773878.35_766a0b4df75e4381a686fbc07db9e333,1339425291230.bf2025f4bc154914b5942af4e72ea063. state=OFFLINE, ts=Tue Jun 12 11:43:53 CEST 2012 (0s ago), server=null

當我運行sudo -u hbase hbase hbck -repair ,我明白了:

Number of empty REGIONINFO_QUALIFIER rows in .META.: 0
ERROR: Region { meta => counter_traces,1329773878.35_766a0b4df75e4381a686fbc07db9e333,1339425291230.bf2025f4bc154914b5942af4e72ea063., hdfs => hdfs://hbase001:8020/hbase/counter_traces/bf2025f4bc154914b5942af4e72ea063, deployed =>  } not deployed on any region server.
Trying to fix unassigned region...
12/06/12 11:44:40 INFO util.HBaseFsckRepair: Region still in transition, waiting for it to become assigned: {NAME => 'counter_traces,1329773878.35_766a0b4df75e4381a686fbc07db9e333,1339425291230.bf2025f4bc154914b5942af4e72ea063.', STARTKEY => '1329773878.35_766a0b4df75e4381a686fbc07db9e333', ENDKEY => '1329793347.58_163865765c0a11e184ab003048f0e77e', ENCODED => bf2025f4bc154914b5942af4e72ea063,}

它只是循環。

如果我不做 - -repair ,我得到這個:

Number of empty REGIONINFO_QUALIFIER rows in .META.: 0
ERROR: Region { meta => counter_traces,1329773878.35_766a0b4df75e4381a686fbc07db9e333,1339425291230.bf2025f4bc154914b5942af4e72ea063., hdfs => hdfs://hbase001:8020/hbase/counter_traces/bf2025f4bc154914b5942af4e72ea063, deployed =>  } not deployed on any region server.
ERROR: Region { meta => counter_traces,1329816776.95_95b5561f3c1e496598421359a19ac665,1339425297099.ee1fd808d954c9adc9ed95ec2f29d119., hdfs => hdfs://hbase001:8020/hbase/counter_traces/ee1fd808d954c9adc9ed95ec2f29d119, deployed =>  } not deployed on any region server.
12/06/12 11:45:59 DEBUG util.HBaseFsck: There are 134 region info entries
ERROR: There is a hole in the region chain between 1329773878.35_766a0b4df75e4381a686fbc07db9e333 and 1329793347.58_163865765c0a11e184ab003048f0e77e.  You need to create a new .regioninfo and region dir in hdfs to plug the hole.
ERROR: There is a hole in the region chain between 1329816776.95_95b5561f3c1e496598421359a19ac665 and 1329847231.75_b3c50776778b43e088dd7ed865e11331.  You need to create a new .regioninfo and region dir in hdfs to plug the hole.
ERROR: Found inconsistency in table counter_traces

我之前已經-repair了好幾次,但它有所幫助。 但這次不再了。

好吧,所以這說明要做一個人工干預來解決這個問題。 有人能指出我如何做到這一點的正確方向? 食譜,網頁,示例,任何事情都會有所幫助。

謝謝,馬里奧

馬里奧,

因此,區域在轉換中陷入困境的原因之一是,當它跨區域服務器移動時,它從源區域服務器取消分配,但從未分配給另一個區域服務器。 一個總是對我有用的修復方法是通過以下方式強制從hbase shell中分配它: -

assign regionName

我試圖強行分配地區,但它對我不起作用。 我試過跟隨它,它的工作原理:

腳步:

  • 從hbase shell禁用表
  • 運行hbck以使用以下命令修復問題

    sudo -u hbase hbase hbck -repair

  • 從hbase shell啟用表

如果您的HBase版本足夠新,您也可以嘗試使用hbck -repairHoles而不僅僅是-repair。 在最近的“修復漏洞”問題上,這對我來說是個竅門。

首先,您應該檢查hdfs中是否存在該特定區域的文件。

如果有,你應該堅持使用hbck -fixHdfsHoles -fixMeta直到修復。 (可能需要幾次嘗試)。

如果轉換區域沒有這樣的文件(它應該在/ hbase / data ///下),那么HBase認為該目錄中該區域應該有一個有效的HFile,並且無法修復它正常的修復命令。

你應該在這里做一個最新的響應,並在你的hdfs中創建一個有效的HFile:

http://comments.gmane.org/gmane.comp.java.hadoop.hbase.user/31308

我有同樣的問題

  • 在通過Ambari啟動所有服務的同時,HDFS進入安全模式並且沒有回來更長時間。
  • 其他服務沒有啟動,因為HFDS處於安全模式較長時間。 我手動從安全模式中刪除了HDFS並嘗試啟動服務,看起來這樣會破壞一些影響hbase的HDFS文件。
  • 掃描現有表返回“未知表錯誤”
  • 創建一個新的命名空間返回錯誤:

create_namespace'tst1'錯誤:java.io.IOException:表命名空間管理器未完全初始化,請稍后再試

“hbase hbck -repair”

返回“錯誤:在和之間的區域鏈中有一個洞。你需要在hdfs中創建一個新的.regioninfo和區域目錄來插入漏洞”。

運行“hbase hbck -repairHoles”修復了問題。 我也可以掃描以前存儲的數據。

注意: - hbase hbck命令應該從hbase用戶運行

對於我的情況,我忘了更改從另一個群集復制的區域數據的所有者。

然后我嘗試做hbase hbck -repair但得到INFO util.HBaseFsckRepair: Region still in transition, waiting for it to become assigned然后出現錯誤Unable to complete check or repair the region, failed to move out of transition within timeout 120000ms

我發現hbase:meta已經有了區域信息。

掃描表時,您會收到這樣的錯誤

ERROR: No server address listed in hbase:meta for region X

然后嘗試hbase hbck -fixAssignments ,但仍然像以前一樣失敗。

然后我檢查表區域數據,只找到這個表的自己和組

drwxr-xr-x   - hdfs  hbase

但其他像這樣

drwxr-xr-x - hbase hbase

因此,在將自己和團隊改為其他人之后解決了問題。 現在您將成功掃描表格。

我有同樣的問題。 一個地區陷入了Region still in transition, waiting for it to become assigned: 沒有-repair選項有效,因為所有選項都要求分配所有區域。

我不得不從hdfs中刪除該區域。 hdfs$ hdfs dfs -rm -r /hbase/data/default/<table>/<region>

刪除該區域后,所有-repair選項都有效,但由於zookeeper緩存,該區域仍然處於轉換狀態。

如何獲取在FAILED_OPEN狀態下被擊中的HBASE區域? 我從zookeeper中刪除了轉換緩存,重新啟動了HBASE master,一切正常

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM