EMR(hadoop/hbase/phoenix夸集群数据迁移采坑记录)

一、概述:

Hbase(Phoenix)数据迁移方案主要分为 Hadoop层面(distcp)、及Hbase层面(copyTable、export/import、snapshot)

二、以下针对distcp方案详细说明(以亲测阿里EMR为例):

step1:

首先打通两个集群网络(建议内网),新建一个tmp安全组,将两个集群的所有ECS都加入进来;

step2:

Cluster-A中将HBase的表在HDFS存储文件distcp到Cluster-B的HBase在HDFS中对应的目录(一定要用hdfs账户)

[root@emr-header-1 ~]# sudo su hdfs

[hdfs@emr-header-1 ~]# hadoop distcp hdfs://A:9000/hbase/data/default/safeclound.tb_ammeter hdfs://B:8020/hbase/data/default      # 将表safeclound.tb_ammeter从A集群在线拷贝到B集群,注:老版本端口是9000新版本是8020

备注: /hbase/data/default是E-MapReduce中HBase表在HDFS存储路径,例如表TestTable 的存储路径是/hbase/data/default/TestHbase, 可以只有单个表的路径,

也可以是default下面所有表的路径(即*表示),EMR的老版本hdfs端口是9000,新版hdfs端口是8020,这个具体情况而定就行。

特别注意:千万不能把hbase和Phoenix的系统表拷贝了,只需拷贝自建的业务表即可(因为distcp对于Cluster-B是覆盖操作),

根据本人亲测经验还是老老实实一张一张表拷贝吧,非常不建议使用*,一是多个表数据量可能巨大,二是会把系统表拷贝过去了

Cluster-B中执行HBase repair修复(一定要用hbase账户)

[root@emr-ha-header-1 ~]# sudo su hbase

[hbase@emr-ha-header-1 ~]# hbase hbck -repair            #执行hbase恢复命令,让hbase引用distcp过来的hdfs表文件

[hbase@emr-ha-header-1 ~]# hbase shell                  #进入hbase shell检查是否迁移成功

提示:根据亲测经验,若执行hbase hbck -repair后在hbase shell中任然看不到迁移来的表,别急,先喝杯茶稍等一会儿(内网迁移通常1分钟内)然后再重新执行hbase hbck -repair命令,

直到出现以下字幕,说明hbase迁移就要成功了!

util.HBaseFsck: Sleeping 10000ms before re-checking after fix...

(猜测此问题可能是由于hdfs拷贝过来后有些异步操作未完成所导致)

step3:(若不是Phoenix+hbase架构组合可忽略)

在上一步hbase shell检查迁移成功之后,再测试Phoenix查询,可能会出现在hbase shell中list或者scan命令都完全正常,

但在Phoenix中看不到迁移过来的表,别急,因为Phoenix还不知道你从hdfs迁移的表,经过Google找到解决方法1:

1. 通过在Phoenix执行create view ... 语句,创建一个视图就可以了(但后续还要维护视图,如果不像创建view 可参考以下2方案)

2. 直接在Phoenix执行create table ...语句,(警告:此方式可能会出现Huang住最后导致hbase某个节点宕机,亲身经历!!!

但也不是莫有办法,亲测一个巧妙的方法:在执行create table 时无需等待执行完成,当按下Enter键执行后,立即Ctrl+C终止sqlline.py进程

,然后重新打开sqlline.py,执行!table命令就可以看到新迁移的表了)

三、FAQ:

1. 万一误覆盖了Cluster-B的系统表如何恢复???(若操作正常可忽略)

step1:备份hbase在hdfs上的根目录

[root@emr-ha-header-1 ~]# hadoop fs -mv /hbase /hbase_bak

step2:停掉hbase所有服务(若EMR新版,可在阿里EMR控制台stop hbase all)

step3:清除ZK里hbase的注册信息(很关键,否则不会自动生成系统表)

[root@emr-ha-header-1 ~]# sh /usr/lib/zookeeper-current/bin/zkCli.sh -server 127.0.0.1:2181

[root@emr-ha-header-1 ~]# ls /

[root@emr-ha-header-1 ~]# rmr /hbase

step4:重新启动hbase所有服务

step5:测试hbase是否自动生成

[root@emr-ha-header-1 ~]# hadoop fs -ls /                #查看hdfs里是否生成了 /hbase 目录

[root@emr-ha-header-1 ~]# hbase shell                    #进入hbase shell

hbase(main):001:0> list                                #查看hbase里是否可见相应的系统表SYSTEM.CATALOG、SYSTEM.FUNCTION 、SYSTEM.MUTEX、SYSTEM.SEQUENCE、SYSTEM.STATS等

TABLE

SYSTEM.CATALOG

SYSTEM.FUNCTION

SYSTEM.MUTEX

SYSTEM.SEQUENCE

SYSTEM.STATS

5 row(s) in 0.1010 seconds

... ...

恭喜,出现以上字幕即恢复成功!

2. 可否使用离线拷贝???(若无需离线拷贝可忽略)

step1:只需将distcp...命令改用 get、put通过本地中转就行了(无关心执行账户)

[root@emr-header-1 ~]$ hadoop fs -get /hbase/data/default/safeclound.tb_ammeter_analyze            #从源hbase集群下载业务表到本地       

step2:scp到目地hbase集群服务器

[root@emr-header-1 ~]$ tar -cvf safeclound.tb_ammeter_analyze.tar safeclound.tb_ammeter_analyze

[root@emr-header-1 ~]$ scp safeclound.tb_ammeter_analyze.tar root@target-hbase-master:/root

step3:在目地服务器上将业务表文件加载到hdfs(其中target-hbase-master安装的是原生hbase且是默认配置,因此在hdfs的数据文件路径才是:/tmp/hbase-root/hbase/data/default/

,如果是阿里云的EMR,则在hdfs的数据路径为:/hbase/data/default)

[root@target-hbase-master ~]# hadoop fs -put /root/safeclound.tb_ammeter_analyze/ /tmp/hbase-root/hbase/data/default/

step4:查看验证是否加载成功


[root@target-hbase-master ~]# hadoop fs -ls /tmp/hbase-root/hbase/data/default/

step5:接下来就同上面第二点的step2中的 运行 hbase hbck -repair 命令一样了。。。

参考文献:

1. hbase数据迁移介绍

2. hbase数据迁移之distcp

3. 若使用的是Phoenix+hbase组合,若Phoenix版本低于4.10升级到4.10之后,可能会出现除主键字段外其他字段都查不出数据,但在hbase shell中scan表又有数据的情况解决方案:phoenix官网

phoenix官网截图:

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 204,793评论 6 478
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 87,567评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 151,342评论 0 338
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,825评论 1 277
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,814评论 5 368
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,680评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 38,033评论 3 399
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,687评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 42,175评论 1 300
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,668评论 2 321
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,775评论 1 332
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,419评论 4 321
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 39,020评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,978评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,206评论 1 260
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 45,092评论 2 351
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,510评论 2 343

推荐阅读更多精彩内容

  • 入门指南 1. 简介 Quickstart会让你启动和运行一个单节点单机HBase。 2. 快速启动 – 单点HB...
    和心数据阅读 4,517评论 1 41
  • 参考:https://www.jianshu.com/p/569106a3008f 最近在逐步跟进Hbase的相关...
    博弈史密斯阅读 845评论 1 1
  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 134,596评论 18 139
  • 今天是国庆节放假的第二天,一大早我家就忙着收玉米,家里有25亩地,有专用机器把玉米掰下来,有的机器给去皮去的挺干净...
    阳光所指阅读 212评论 0 1
  • 我用了一个月左右的时间,淡忘对他的感情, 可是他只是用了一个小时,就又让我深深地陷入, 然后又难过了一周,因为没有...
    清然阅读 168评论 5 1