自建集群要迁移到EMR集群,往往需要迁移已有数据。本文主要介绍hdfs数据和hive meta数据如何迁移。
前置
已按需求创建好EMR集群。
迁移hdfs数据
主要依靠distcp,核心是打通网络,确定hdfs参数和要迁移内容,测速,迁移。
网络
需要自建集群和EMR各个节点网络互通。同为VPC网络只需要同一个安全组,不同的安全组需要设置安全组互通。
如果自建集群是经典网络,EMR集群是vpc,网络访问需要设置CLASSICLINK.参见文档,详情可以咨询ECS客服。
设置后可以在新集群节点上ssh 老集群节点确定网络连通情况,distcp操作如果有xx 节点无法连接xx节点的异常,说明没有连通,需要继续设置。
hdfs权限配置确认
hdfs有权限设置,确定老集群是否有acl规则,是否要同步,检查dfs.permissions.enabled 和dfs.namenode.acls.enabled的配置新老集群是否一致,按照实际需要修改。
如果有acl规则要同步,distcp参数要加-p同步权限参数。如果distcp操作提示xx集群不支持acl,说明对应集群没配置。新集群没配置可以修改配置并重启NM。旧集群不支持,说明旧集群根本就没有acl方面的设置,也不需要同步。
同步参数
一般在新集群上运行同步,这样同步的作业可以在新集群上运行,对老集群影响较小。
distcp参数细节,一般命令格式如下:
- hadoop distcp -Ddfs.replication=3 -pbugpcax -m 1000 -bandwidth 30 hdfs://oldclusterip:8020 /user/hive/warehouse /user/hive/
注意事项:
hdfs://oldclusterip:8020写老集群nameode ip,多个namenode写当前active的。
指定了副本数3,如想保留原有副本数-p后加r如-prbugpcax。如果不同步权限和acl,-p后去掉p和a。
-m指定map数,和集群规模,数据量有关。比如集群有2000核cpu,就可以指定2000个map。 -bandwidth指定单个map的同步速度,是靠控制副本复制速度实现的,是大概值。
hive meta数据同步
hive meta数据同步,本质是hive meta db,一般是mysql db的数据同步。和一般的mysql数据同步相比,要注意location改变,和hive版本对齐。
meta db设置
meta数据较多时,一般推荐用rds作为meta db。自建集群可能已有一个rds db,由于location不同,一般需要新建一个数据库。***实践是跟EMR集群在一个可用区,一个vpc 安全组下新建一个rds 数据库。
登录新集群master节点(如果是ha集群两个master都需要),修改/usr/local/emr/emr-agent/run/meta_db_info.json,把里面的use_local_meta_db设置为false,meta数据库信息的链接地址、用户名和密码换成新建rds的信息。然后重启hive组件的metaserver。
初始化meta的表信息:
- ···
- cd /usr/lib/hive-current/bin
- ./schematool - initSchema -dbType mysql
- ···
location
hive的表,分区等信息是有location信息的,带dfs nameservices前缀,如hdfs://mycluster:8020/,而EMR集群的nameservices前缀是统一的emr-cluster,所以需要订正。订正的***方式是先导出数据mysqldump --databases hivemeta --single-transaction -u root –p > hive_databases.sql,用sed替换hdfs://oldcluster:8020/为hdfs://emr-cluster/ ,再导入新db中。
- mysql hivemeta -p < hive_databases.sql
版本对齐
EMR的hive版本一般是当前社区***的稳定版,自建集群hive版本可能会更老,所以导入的旧版本数据可能不能直接使用。需要执行hive的升级脚本,地址。例如hive从1.2升级到2.3.0,需要依次执行upgrade-1.2.0-to-2.0.0.mysql.sql,upgrade-2.0.0-to-2.1.0.mysql.sql,upgrade-2.1.0-to-2.2.0.mysql.sql,upgrade-2.2.0-to-2.3.0.mysql.sql。脚本主要是建表,加字段,改内容,如有表已存在,字段已存在的异常可以忽略。
验证
meta数据全部订正后,就可以重启metaserver了。命令行hive,查询库和表,查询数据,验证正确性。
更新Fedora 镜像为阿里云yum源请参考阿里云官方文档: https://developer.aliyun....
一般我们很难看到真正的服务器,因为服务器一般均放置在机房重点,闲人一般均是...
前言 周五了,和大家玩个跳跃游戏 题目 给定一个非负整数数组 nums ,你最初位于...
这几天,朋友圈满屏都是“秋天的第一杯奶茶”,或是收红包秀恩爱的。热搜榜上也...
私有云为企业提供很多好处。如果企业正确设计、架构和部署私有云,私有云可以提...
互联网+时代,网上冲浪已经成为每个人生活必不可少的一部分,只要有一部手机或者...
想了解更多内容,请访问: 51CTO和华为官方战略合作共建的鸿蒙技术社区 https://...
混合云平台的优势 创造价值 大规模采用完整混合多云平台技术和运营模式所创造的...
本篇文章适合k8s入门参考,使用 yaml 文件和 kubectl 命令完成应用部署。本文的...
自从上世纪80年代问世以来,数据这一术语一直是互联网行业的主要内容。随着企业...