2012-06-13 26 views
7

Tôi đang sửa chữa một bảng bị lỗi (trên Hbase 0.92.1-cdh4.0.0, Hadoop 2.0.0-cdh4.0.0)Sửa bảng HBase (vùng chưa được chuyển đổi trong quá trình chuyển đổi)

Có một vùng trong quá trình chuyển đổi mà không hoàn thành:

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 

Khi tôi chạy sudo -u hbase hbase hbck -repair, tôi có được điều này:

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,} 

và nó chỉ lặp.

Nếu tôi không làm -repair, tôi có được điều này:

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 

tôi đã chạy -repair một vài lần trước đó, và nó đã giúp. Nhưng lần này, không còn nữa.

Ok, vì vậy, trạng thái này thực hiện can thiệp thủ công để khắc phục sự cố này. Ai đó có thể chỉ cho tôi đúng hướng về cách thực hiện việc này không? Công thức, trang web, ví dụ, mọi thứ sẽ hữu ích.

Cảm ơn, Mario

Trả lời

12

Mario,

Vì vậy, một trong những lý do tại sao một khu vực bị mắc kẹt trong thời kỳ quá là bởi vì, khi nó đang được di chuyển qua regionservers, nó bị bỏ gán từ regionserver nguồn nhưng là không bao giờ được gán cho một máy chủ vùng khác. Một sửa chữa mà luôn luôn làm việc đối với tôi là bằng cách ép buộc gán cho nó từ vỏ HBase bởi: -

assign regionName 
+0

Điều đó giúp tôi đi đúng hướng. Việc đánh giá trực tiếp không hiệu quả, nhưng ít nhất tôi đã tìm thấy một số mã đã giúp tôi lấp đầy lỗ hổng trong chuỗi khu vực. – Mario

+0

Bạn có thể chia sẻ mã không? Tôi có một vấn đề tương tự và muốn khắc phục điều đó. –

+0

Tôi rất tiếc, đã đăng lại rồi. Tôi không nghĩ rằng tôi có điều đó nữa. – Mario

0

Nếu phiên bản HBase của bạn là đủ gần đây bạn cũng có thể thử hbck -repairHoles thay vì chỉ -sửa chữa. Điều đó đã làm cho tôi một vấn đề "sửa lỗ" gần đây.

1

Trước tiên, bạn nên kiểm tra xem có tệp nào cho khu vực cụ thể đó trong hdfs của bạn hay không.

Nếu có, bạn nên gắn bó với hbck -fixHdfsHoles -fixMột mình cho đến khi được sửa. (có thể mất một vài lần thử).

Nếu không có tệp nào cho khu vực chuyển đổi (nó phải nằm trong/hbase/data ///), thì HBase cho rằng cần có một HFile hợp lệ cho vùng đó trong thư mục đó và sẽ không thể để sửa chữa nó với các lệnh sửa chữa bình thường.

Bạn nên làm những gì có trong một trong những phản ứng mới nhất tại đây và tạo ra một HFile giá trị trong HDFS của bạn:

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

0

tôi đã cố gắng để làm nhiệm vụ mạnh mẽ của khu vực, nhưng nó đã không làm việc cho tôi.Tôi cố gắng sau đây và nó làm việc:

bước:

  • Disable bảng từ vỏ HBase
  • Run hbck để sửa chữa problmes sử dụng lệnh sau

    sudo -u hbase hbase hbck -repair

  • Enable bảng từ HBase shell

0

Đối với trường hợp của tôi, tôi quên thay đổi chủ nhân của dữ liệu vùng đã được sao chép từ một cụm khác.

Sau đó, tôi cố gắng làm hbase hbck -repair nhưng nhận INFO util.HBaseFsckRepair: Region still in transition, waiting for it to become assigned thì lỗi xuất hiện Unable to complete check or repair the region, failed to move out of transition within timeout 120000ms

tôi thấy hbase:meta đã có thông tin khu vực.

Trong khi bảng quét, bạn sẽ nhận được lỗi như thế này

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

Sau đó thử hbase hbck -fixAssignments, nhưng vẫn thất bại như trước đây.

Sau đó, tôi kiểm tra dữ liệu khu vực bảng và chỉ tìm thấy nhóm riêng và của bảng này là

drwxr-xr-x - hdfs hbase 

nhưng khác như

drwxr-xr-x - hbase hbase

Vì vậy, vấn đề này đã được giải quyết sau khi chính sự thay đổi và nhóm như khác. Bây giờ bạn sẽ quét bảng thành công.

Các vấn đề liên quan