1.利用hbase本身提供的接口执行导出表操作
导出操作:./hbase org.apache.hadoop.hbase.mapreduce.Driver export表名"hdfs://192.168.x.x:9000/111" 本地路径或者hdfs的路径
导入操作:./hbase org.apache.hadoop.hbase.mapreduce.Driver import表名(已经建好的表)"hdfs://192.168.x.x:9000/111" 本地路径或者hdfs的路径
2.网络不通的情况下执行复制根目录操作
① 在源hbase停掉的情况下从源hbase中复制hbase数据库表到本地(该目录即hbase-site.xml中配置的hbase.rootdir)
在hadoop bin下执行操作./hadoop fs -get "hdfs://master:9000/hbase" /home/neokylin/222hbase,其中"hdfs://master:9000/hbase"也可以是本地目录,本地目录时不加引号
② 远程复制到目标hbase的hbase.rootdir路径下
在目标主机上执行操作scp -r neokylin@192.168.x.x:/home/neokylin/
hbase /opt/hbase(注意修改目标hbase中hbase-site.xml的hbase.rootdir)
③ 格式化hadoop,重启hadoop和hbase,在hbase shell 下执行list可以看到源hbase中所建的表,然而并不能浏览数据
④ 修复.meta,即表的元数据文件
在hbase下执行操作bin/hbase hbck -fixMeta
⑤ 重新分配数据到各RegionServer
在hbase下执行操作bin/hbase hbck -fixAssignments
注:实际在执行的过程中直接将hbase的根目录文件复制到迁移目标主机hbase.rootdir目录下,启动hadoop和hbase,进入hbase shell,执行list、scan和命令即可看到表数据(几次尝试4、5可能不需要执行)