0


hbase跨集群复制CopyTable(集群一数据表复制到集群二)

一、集群信息

1、scr集群一:

   192.168.90.9 master

** ** 192.168.90.231 slave1

** **192.168.90.186 slave2

2、des集群二:

   192.168.90.109 master1

   192.168.90.189 slave11

    192.168.90.39 slave21

说明:(1)两个集群三个节点名称不能设置一致,若名称一致会访问本集群节点名称对应的ip;

       (2)在集群一/etc/hosts文件中添加集群二的节点信息。

         (3)  集群一和集群二可以正常通信。可在集群一各节点依次使用ping命令测试。

二、在集群运行的时候进行数据复制迁移

1、在集群一将需要复制迁移的表属性进行修改,hbase shell中操作:

(1)disable 'your_table'(如:disable ‘music’)

disable ‘music’

(2)alter 'your_table', {NAME => 'family_name', REPLICATION_SCOPE => '1'}

    (如:alter 'music', {NAME => 'info', REPLICATION_SCOPE => '1'}
alter 'music', {NAME => 'info', REPLICATION_SCOPE => '1'}

(3)enable 'your_table' (如:enable ‘music‘)

enable ‘music‘

2、打开des集群二的replication, hbase-site.xml添加以下信息后复制到hadoop/etc/hadoop目录下,同时各节点复制。

<property>
        <name>hbase.replication</name>
        <value>true</value>
</property>

hbase shell建表test,列族为info:

    create ‘test’,’info’
  create ‘test’,’info’

说明:各节点regionserver确保启动,如未启动,可手动启动:

    hbase-daemon.sh start regionserver

3、添加peer,在des集群二的hbase shell中执行:add_peer '1','old cluster ip:2181:/hbase'

如:

add_peer '1',CLUSTER_KEY=>'192.168.90.9,192.168.90.231,192.168.90.186:2181:/hbase'

add_peer '1',CLUSTER_KEY=>'192.168.90.9, 192.168.90.231, 192.168.90.186:2181:/hbase'

4、从scr集群一中拷贝的数据到des集群二, scr集群一执行命令;

hbase org.apache.hadoop.hbase.mapreduce.CopyTable --starttime=1265875194289 --endtime=1265878794289 --peer.adr=server1,server2,server3:2181:/hbase TestTable

例1:hbase org.apache.hadoop.hbase.mapreduce.CopyTable --peer.adr=192.168.90.9, 192.168.90.231, 192.168.90.186:2181:2181:/hbase --new.name=test music

hbase org.apache.hadoop.hbase.mapreduce.CopyTable --peer.adr=192.168.90.9, 192.168.90.231, 192.168.90.186:2181:2181:/hbase –new.name=test music

说明:test是集群二中的表,music是集群一中的表。集群二hbase shell查看test表数据,成功复制迁移。

例2、集群多版本数据复制

集群2hbase shell执行:

create ‘testtime’,{NAME=>’StuInfo’,VERSIONS=>8},{NAME=’Grades’,VERSIONS=>8}

create ‘testtime’,{NAME=>’StuInfo’,VERSIONS=>8},{NAME=’Grades’,VERSIONS=>8}

集群1:hbase org.apache.hadoop.hbase.mapreduce.CopyTable --peer.adr=192.168.90.9, 192.168.90.231, 192.168.90.186:2181:2181:/hbase --starttime=2 --endtime=5 --versions=3 --new.name=testtime StudentInfo

hbase org.apache.hadoop.hbase.mapreduce.CopyTable --peer.adr=192.168.90.9, 192.168.90.231, 192.168.90.186:2181:2181:/hbase --starttime=2 --endtime=5 --versions=3 --new.name=testtime StudentInfo

说明:此时未修改StudentInfo表中两个列族的REPLICATION_SCOPE属性,REPLICATION_SCOPE=>'0'。

集群2hbase shell执行:scan ‘testtime’,VERSIONS=>3

scan ‘testtime’,VERSIONS=>3


本文转载自: https://blog.csdn.net/lyang2007/article/details/143026569
版权归原作者 灿烂猎人 所有, 如有侵权,请联系我们删除。

“hbase跨集群复制CopyTable(集群一数据表复制到集群二)”的评论:

还没有评论