hbase表迁移问题汇总

1.首先 在数据源集群进行 hadoop distcp  /src/dir hdfs://mastrnode/tmp/namespace1
 登陆目标集群,将/tmp/namespace1 copy to /hbase/data/ 

2. 登陆到目标集群,切换到hbase用户问题
sudo su - hbase
无法成功切换到hbase用户
more /etc/passwd | grep hbase
hbase:x:981:977:HBase:/var/lib/hbase:/bin/false
此处的false - do nothing, unsuccessfully 不给该用户正常的SHELL,不允许该用户登录
ref: https://zhidao.baidu.com/question/1701705856848537140.html
参考其他用户,准备修改成  hbase:x:981:977:HBase:/var/lib/hbase:/bin/bash
ll /etc/passwd
-rw-r--r-- 1 root root 3082 Aug 28 14:51 /etc/passwd
没有权限编辑,虽然是root用户也无法vim进行编辑,尴尬。
好吧,在此百度/etc/passwd 如何修改/bin/false 成 /bin/base
得到答案: usermod -s /bin/bash hbase
执行之后,咦啥情况
useradd: cannot open /etc/passwd

这就更尴尬了,在此失败,在此百度 : useradd: cannot open /etc/passwd  
ref : http://blog.csdn.net/slovyz/article/details/40078075
终究是有大招在的,两次失败,事不过三
#lsattr /etc/passwd 
----i-------- /etc/passwd
#chattr -i /etc/passwd
#usermod -s /bin/bash hbase  
在此仍然报错,需要一次修改 chattr -i /etc/passwd ,chattr -i /etc/group,chattr -i /etc/gshadow 
ref :http://blog.csdn.net/slovyz/article/details/40078075
我就直接vim /etc/passwd 了,虽然low了点,但是省了麻烦。
# lsattr /etc/passwd
-------------e-- /etc/passwd

试问哪个不能改,哪个权限不够,神挡我绕着走,佛挡我爬着走,谁能挡我。
别忘了修改回来 chattr +i /etc/passwd 
ref : http://www.cnblogs.com/yangxia-test/archive/2013/05/24/3096410.html
3. 之后执行 hbase hbck -repair  ref:  http://blog.csdn.net/mtj66/article/details/77941912
一直等待 
util.HBaseFsckRepair: Region still in transition, waiting for it to become assigned: {ENCODED => f527e8ff13b5ca0dc67d43c82f05863f, NAME =>.....
 } failed to move out of transition within timeout 120000ms

好吧,检查目标表的权限,以及用户组
drwxr-xr-x   - hbase hbase          0 2017-09-09 14:58 /hbase/data/default
drwxr-xr-x   - hbase hbase          0 2017-09-06 15:23 /hbase/data/hbase
drwxr-xr-x   - hbase hbase          0 2017-09-18 16:17 /hbase/data/test
drwxr-xr-x   - hdfs  hbase          0 2017-09-18 16:19 /hbase/data/namespace1
你怎么和别人不一样,修改下用户组
hdfs dfs -chown -R  hbase:hbase /hbase/data/namespace1
在此执行 步骤3
成功得到整个namespace1下的所有表

====================追加 ===================== 
再次迁移的过程中,迁移数据到已经存在的hbase表,执行步骤同上,hbase hbck -repair ,list 已经有表信息,然后scan 表失败
ERROR: Unknown table tableName
尝试更新hbase META信息
 
先修复.META.表:
hbase hbck -fixMeta
这样scan'.META.'就能发现里面有test的信息,在执行scan,查看。
如果依然失败:
hbase hbck -fixAssignments(重新分区)


到此结束!


你可能感兴趣的:(hbase)