hbase 集群迁移:Region still in transition, waiting for it to become assigned:

1. 在数据源集群执行 :

 hadoop distcp  /hbase/data/*  hdfs://172.16.4.81/hbase/data/


2. 在目标集群执行 :
修改目标文件chown  hdfs  dfs -chown -R /hbase/data
3. 之后执行 

hbase hbck -repair
hbase hbck -fixAssignments


执行过程中失败,Region still in transition, waiting for it to become assigned:
参照其他文章依然没有解决,然后自己发现,表的hbase:meta 已经有 regioninfo 信息,但是scan 时候报错,
ERROR: No server address listed in hbase:meta for region 

参照第二步 ,修改文件所有者以及所有者组。成功解决该问题。


排查过程中参考如下步骤

一、从源hbase集群中复制出HBase数据库表到本地目录

http://abloz.com/2012/08/14/another-method-of-the-data-of-the-Hbase-cross-cluster-replication.html

最好停止hbase,否则可能会丢部分数据

[hbase@hadoop200 ~]$ hadoop fs -get /hbase/toplist_ware_total_1009_201232 toplist_ware_total_1009_201232

压缩

[hbase@hadoop200 ~]$ tar zcvf topl.tar.gz toplist_ware_total_1009_201232

远程复制到目标机器

[hbase@hadoop200 ~]$ scp topl.tar.gz zhouhh@h185:~/.

二、目标HBase导入

解压
[zhouhh@h185 ~]$ tar zxvf topl.tar.gz

如果目标HBase里有这个表,需disable并drop掉。如果有该目录,则用Hadoop fs -rmr /hbase/table的方式删除,再往HDFS上复制。以免数据出错。

放到集群下面

[zhouhh@h185 ~]$ fs -put toplist_ware_total_1009_201232 /hbase
[zhouhh@h185 ~]$

此时可以list出来,但scan报错

hbase(main):055:0> list 'toplist_ware_total_1009_201232'
TABLE
toplist_ware_total_1009_201232
1 row(s) in 0.0220 seconds

hbase(main):062:0> scan 'toplist_ware_total_1009_201232'
ROW                                        COLUMN+CELL

ERROR: Unknown table toplist_ware_total_1009_201232!

.META.表里面没有相关记录
hbase(main):064:0> scan ‘.META.’
里面没有toplist_ware_total_1009_201232 开头的行

三、修复.META.表和重新分配数据到各RegionServer

在.META.表没修复时执行重新分配,会报错

[zhouhh@h185 ~]$ hbase hbck -fixAssignments
...
ERROR: Region { meta => null, hdfs => hdfs://h185:54310/hbase/toplist_ware_total_1009_201232/0403552001eb2a31990e443dcae74ee8, deployed =>  } on HDFS, but not listed in META or deployed on any region server
...

先修复.META.表

[zhouhh@h185 ~]$ hbase hbck -fixMeta
...
ERROR: Region { meta => null, hdfs => hdfs://h185:54310/hbase/toplist_ware_total_1009_201232/0403552001eb2a31990e443dcae74ee8, deployed =>  } on HDFS, but not listed in META or deployed on any region server
12/08/14 18:25:15 INFO util.HBaseFsck: Patching .META. with .regioninfo: {NAME => 'toplist_ware_total_1009_201232,,1344187094829.0403552001eb2a31990e443dcae74ee8.', STARTKEY => '', ENDKEY => '', ENCODED => 0403552001eb2a31990e443dcae74ee8,}
...

此时.META.表已经有表的数据了,但scan还是失败
hbase(main):065:0> scan '.META.'
ROW                                        COLUMN+CELL
...
toplist_ware_total_1009_201232,,134418709 column=info:regioninfo, timestamp=1344939930752, value={NAME => 'toplist_ware_total_1009_201232,,1344187094829.0403552001eb
 4829.0403552001eb2a31990e443dcae74ee8.    2a31990e443dcae74ee8.', STARTKEY => '', ENDKEY => '', ENCODED => 0403552001eb2a31990e443dcae74ee8,}
16 row(s) in 0.0550 seconds

scan还是失败
hbase(main):066:0> scan 'toplist_ware_total_1009_201232'
ROW                                        COLUMN+CELL

ERROR: org.apache.hadoop.hbase.client.NoServerForRegionException: No server address listed in .META. for region toplist_ware_total_1009_201232,,1344187094829.0403552001eb2a31990e443dcae74ee8. containing row

重新分配到各分区服务器

[zhouhh@h185 ~]$ hbase hbck -fixAssignments
...
ERROR: Region { meta => toplist_ware_total_1009_201232,,1344187094829.0403552001eb2a31990e443dcae74ee8., hdfs => hdfs://h185:54310/hbase/toplist_ware_total_1009_201232/0403552001eb2a31990e443dcae74ee8, deployed =>  } not deployed on any region server.
Trying to fix unassigned region...
12/08/14 18:28:01 INFO util.HBaseFsckRepair: Region still in transition, waiting for it to become assigned: {NAME => 'toplist_ware_total_1009_201232,,1344187094829.0403552001eb2a31990e443dcae74ee8.', STARTKEY => '', ENDKEY => '', ENCODED => 0403552001eb2a31990e443dcae74ee8,}
12/08/14 18:28:02 INFO util.HBaseFsckRepair: Region still in transition, waiting for it to become assigned: {NAME => 'toplist_ware_total_1009_201232,,1344187094829.0403552001eb2a31990e443dcae74ee8.', STARTKEY => '', ENDKEY => '', ENCODED => 0403552001eb2a31990e443dcae74ee8,}
12/08/14 18:28:04 INFO util.HBaseFsckRepair: Region still in transition, waiting for it to become assigned: {NAME => 'toplist_ware_total_1009_201232,,1344187094829.0403552001eb2a31990e443dcae74ee8.', STARTKEY => '', ENDKEY => '', ENCODED => 0403552001eb2a31990e443dcae74ee8,}
12/08/14 18:28:05 INFO util.HBaseFsckRepair: Region still in transition, waiting for it to become assigned: {NAME => 'toplist_ware_total_1009_201232,,1344187094829.0403552001eb2a31990e443dcae74ee8.', STARTKEY => '', ENDKEY => '', ENCODED => 0403552001eb2a31990e443dcae74ee8,}
...

scan成功!

hbase(main):067:0> scan 'toplist_ware_total_1009_201232'
ROW                                        COLUMN+CELL
 0000000001                                column=info:loginid, timestamp=1344187147972, value=jjm167258611
 0000000001                                column=info:nick, timestamp=1344187147972, value=?\xE9\x97\xB4?\xE6\xB5\xA3?
 0000000001                                column=info:score, timestamp=1344187147972, value=200
 0000000001                                column=info:userid, timestamp=1344187147972, value=167258611
...
330 row(s) in 0.8630 seconds

如果目标集群是空的,则可以直接将源HBase的/hbase目录复制出来,然后在目标HBase系统上fs -rmr /hbase 或fs -mv /hbase /hbase1
然后用hadoop fs -put hbase / 即可

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

mtj66

看心情

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值