markdown HBase的(凤凰)集群迁移实践

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了markdown HBase的(凤凰)集群迁移实践相关的知识,希望对你有一定的参考价值。

# HBase(Phoenix)集群迁移实践
以下步骤的分支是针对有使用`phoenix sql`来操作`hbase`的

## 1.给需要迁移的表创建Snapshot
```bash
#在hbase shell下
snapshot '表名','快照名'

# 可批量执行
echo "snapshot '表名','快照名';snapshot '表名','快照名';..." | hbase shell
```

这里写个例子,方便后面说明
```bash
echo "snapshot 'tableA','20180125.tableA'" | hbase shell
```

## 1.x 创建phonenix元数据的表快照
```
hbase(main):001:0> list 'SYSTEM.*'
TABLE                                                                                                                                                                                                    
SYSTEM.CATALOG                                                                                                                                                                                           
SYSTEM.FUNCTION                                                                                                                                                                                          
SYSTEM.MUTEX                                                                                                                                                                                             
SYSTEM.SEQUENCE                                                                                                                                                                                          
SYSTEM.STATS
```
创建`SYSTEM.`前缀的表快照

## 2.将快照数据从旧集群迁移到新集群
```
hbase org.apache.hadoop.hbase.snapshot.ExportSnapshot -snapshot 快照名 -copy-to hdfs://new-nn/hbase -copy-from hdfs://old-nn/hbase
```
`new-nn`和`old-nn`是两个集群上`active namenode`的IP,
当然也可以用host的方式来代替IP,但需保证主动方集群(谁调用的这条命令)中所有节点能解析出IP。
如果hdfs的端口不是默认的,则还需加上端口  
`-copy-to`是目录集群的hbase主目录, `-copy-from`是源集群的hbase主目录。
`/hbase`这个路径是hbase默认的主目录,如果被修改,则这部分也需同步调整  
需要保证新旧集群中的所有节点能够相互连的通,这个命令的本质是一个MR任务

举例
```
hbase org.apache.hadoop.hbase.snapshot.ExportSnapshot -snapshot 20180125.tableA -copy-to hdfs://new-nn/hbase -copy-from hdfs://old-nn/hbase
```

## 3.在新集群上恢复快照数据
在hbase shell下执行
```
#此时能够查的到旧集群上的快照名
list_snapshots

#如果表不存在,可省略disable和enable步骤
disable '快照的主体表'
restore_snapshot '快照名'
enable '快照的主体表'
```

举例
```
disable 'tableA'
restore_snapshot '20180125.tableA'
enable 'tableA'
```

## 3.x 在也恢复phonix的相关快照数据后,就可以在phonix中查到hbase的数据了

以上是关于markdown HBase的(凤凰)集群迁移实践的主要内容,如果未能解决你的问题,请参考以下文章

markdown HDFS不同集群迁移实践

HBase数据迁移实践操作篇

hbase 数据迁移

HBase跨版本数据迁移总结

markdown spring boot整合hbase最佳实践

zk集群数据迁移和恢复