当前位置:网站首页>MMA安装及使用优化
MMA安装及使用优化
2022-08-03 13:58:00 【51CTO】
1.背景
公司自建的Hadoop集群,后期使用阿里的Maxcompute,就需要迁移数据到新环境中,阿里提供众多的迁移方案,在经过我们的实践后,最终选择了MMA,迁移数据Hive到Maxcompute。
2.MMA介绍
MMA(MaxCompute Migration Assist)是一款MaxCompute数据迁移工具。
在 Hive 迁移至 MaxCompute 的场景下,MMA 实现了 Hive 的 UDTF,通过 Hive 的分布式能力,实现 Hive 数据向 MaxCompute 的高并发传输。
这种迁移方式的优点有:
- 读数据由 Hive 自身完成,因此可以被 Hive 读的数据(包括 Hive 外表),都可以用 MMA 向 MaxCompute 迁移,且不存在任何数据格式问题
- 支持增量数据迁移
- 迁移效率高,迁移速率可以随资源分配线性提高
这种迁移方式的前置条件有:
- Hive 集群各节点需要具备访问 MaxCompute 的能力
架构与原理
当用户通过 MMA client 向 MMA server 提交一个迁移 Job 后,MMA 首先会将该 Job 的配置记录在元数据中,并初始化其状态为 PENDING。
随后,MMA 调度器将会把这个 Job 状态置为 RUNNING,向 Hive 请求这张表的元数据,并开始调度执行。这个 Job 在 MMA 中会被拆分为若干 个 Task,每一个 Task 负责表中的一部分数据的传输,每个 Task 又会拆分为若干个 Action 进行具体传输和验证。在逻辑结构上,每一个 Job 将会包含若干个 Task 组成的 DAG,而每一个 Task 又会包含若干个 Action 组成的 DAG。整体的流程大致如下:
3.安装
3.1下载解压
版本选择跟自己的Hive版本相符即可。这里选择mma-0.1.1-hive-2.x.zip
下载链接: https://github.com/aliyun/alibabacloud-maxcompute-tool-migrate/releases
下载解压后:
3.2配置 MMA server
解压安装包之后,运行配置引导脚本:/data/soft/mma/mma-0.1.1/bin
参数说明:
{thrift}:见 hive-site.xml 中"hive.metastore.uris"
{hive2}:通过 beeline 使用 Hive 时输入的 JDBC 连接串,必须为 default 库, 前缀为 jdbc:hive2
{username}:通常通过 beeline 使用 Hive 时输入的 JDBC 连接用户名, 默认值为 Hive
{password}:通常通过 beeline 使用 Hive 时输入的 JDBC 连接密码, 默认值为空
{isKerberos}:在使用 Kerberos 的情况下,需要配置其他参数,这里否
{maxComputeEndpoint}:经典网络Endpoint
{maxComputeProject}:建议配置为目标 MaxCompute project, 规避权限问题
{accesskeyId}:阿里云 accesskey id
{accesskeySecret}:阿里云 accesskey secret
3.3创建 Hive 函数
配置过程中还需要将某些文件上传至 HDFS,并在 beeline 中创建 MMA 需要的 Hive 永久函数。MMA 配置引导脚本会自动生成需要执行的命令,直接复制粘贴到安装有 hdfs 命令与 beeline 的服务器上执行即可。命令示例如下:
上传 Hive UDTF Jar 包至 HDFS:
使用 beeline 创建 Hive 函数:
4.使用
4.1启动 MMA server
MMA server 进程在迁移期间应当一直保持运行。若 MMA server 因为各种原因中断了运行,直接执行以下命令重启即可。MMA server 进程在一台服务器最多只能存在一个。默认端口为 18889
启动成功后,MMA支持WebUI:http://${hostname}:18888
4.2生成任务配置
在生成配置任务前,需要先组织临时映射文件,有表级别和库级别,这里演示表级别,复制模板
然后修改映射文件:vim table_mapping.txt
然后执行生成任务命令:
其他参数
-jobid
:可以指定 Job ID
-output
:可以指定配置文件输出路径,不指定会默认生成到/conf目录下${objectType}-${sourceCatalog}-${destCatalog}-${job_id}.json
修改配置
生成配置文件后,需要指定迁移分区
修改后:
4.3提交任务
4.4查看任务状态
先查看所有迁移任务列表:
4.5其他命令
停止任务
重置任务
- 状态为
SUCCEEDED
FAILED
CANCELED
三种状态下的任务可以被重置 - 当需要增量同步时,重置
SUCCEEDED
状态下的任务 - 当需要重试失败任务时,重置
FAILED
CANCELED
状态下的任务
删除任务
5.优化
为了更自动化执行任务,生成任务配置,修改分区,提交任务,分别编写以下脚本
首先最新目录结构如下,db_crm,db_risk是对应的任务配置目录,后期再有其他库,可按照此方式添加
5.1 生成配置任务脚本
vim /data/soft/mma/mma-0.1.0/bin/mma_gen_job
使用示例:mma_gen_job db_crm
完成后,将生成json文件,目录在 /conf/{db}下
5.2 添加分区任务
任务脚本生成之后,需要添加分区
vim /data/soft/mma/mma-0.1.0/bin/mma_modify_job
使用示例:
mma_modify_job TABLE-db_crm.t_visit_record-edy_dbwarehouse.db_crm_t_visit_record_mma-1658902900181.json 2015-01-01 2022-05-01
5.3 提交任务脚本
vim /data/soft/mma/mma-0.1.0/bin/mma_submit_job
使用示例
mma_submit_job TABLE-db_crm.t_call_log_current-edy_dbwarehouse.db_crm_t_call_log_current_mma-mma_1b37cda58bd446afabe355a86d488309.json
5.4查看任务脚本
vim /data/soft/mma/mma-0.1.0/bin/mma_getinfo_job
5.5一键批量迁移任务
以上各脚本是单独执行,下面把这些脚本合成到一个脚本中,实现更加自动化的操作。
目前按照一个库迁移。
迁移步骤
- mapping映射文件需要手动一次性完成,文件目录:
/data/soft/mma/mma-0.1.0/conf/db_crm/table_mapping.txt
- 根据映射文件生成json配置文件,对应一个表的迁移,使用脚本:
mma_gen_job
- 根据json配置文件添加迁移分区,按照年迁移,一个json配置文件可生成多个,表示一个表对应多个迁移任务,使用脚本:
mma_modify_job
- 按照顺序提交任务,使用脚本:
mma_submit_job
vim /data/soft/mma/mma-0.1.0/bin/mma_batch_job
使用示例:mma_batch_job db_crm
,或者:mma_batch_job db_crm 2015-01-01 2022-05-01
5.6监测任务进度
前面已经指定,完成的配置任务单独备份到 finished 目录下,这里加一个监测任务进度的脚本,成功后将配置迁移走
vim /data/soft/mma/mma-0.1.0/bin/mma_check_job
6.问题排查
查找导致失败的具体 Action
获取失败的jobid
/bin/mma-client --action ListJobs | grep FAILED
获得 Job ID 后可以执行以下命令获取失败的原因:
grep "Job failed" /log/mma_server.LOG | grep mma_1b37cda58bd446afabe355a86d488309
获取失败的Action
grep 2ba83078-9db8-4d68-bf4c-f63aa60139bf.DataTransmission.part.3 mma_server.LOG | grep FAIL
Action失败类型,这里是DataTransmission,继续查找错误
grep 2ba83078-9db8-4d68-bf4c-f63aa60139bf.DataTransmission.part.3 mma_server.LOG | grep "stack trace"
按照这个步骤基本上可以确定错误原因。
更多请在公号平台搜索:选手一号位,本文编号:2005,回复即可获取。
边栏推荐
猜你喜欢
随机推荐
连亏四个月,赚不回电费,预制菜经销商恐成“韭菜”?
Nature, Cell都在用的Relia Tech 抗原亲和纯化LYVE1抗体
d write binary
可视化数据库设计软件有哪些_数据库可视化编程
爱可可AI前沿推介(8.3)
APT组织最喜欢的工具 Cobalt Strike (CS) 实战
利用 NFT 释放网站的潜力
GBase 8c数据库集群中,怎么替换节点呢?比如设置A节点为gtm,换到B节点上。
哥斯拉加密WebShell过杀软
Golang sync.WaitGroup
大势,又一关乎中美竞争的关键行业,走到关键时刻了
The embassy in Iceland reminds Chinese citizens in Iceland to strengthen safety protection
硬件业务收入下滑,为了赚钱,苹果暧昧对待流氓软件和增加广告了
不卷不pua,早9晚6,这个招聘深得我心
go map转struct【mapstructure库】
MySQL数据表操作实战
豪威集团发布新款5000万像素图像传感器OV50E
GDB调试CoreDump文件
网络数据集-骨干网和校园网-IP流量
Nanoprobes FluoroNanogold 偶联物的特色和应用