linux cpu占用率如何看
264
2022-11-15
MMA安装及使用优化
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。整体的流程大致如下:
┌──────────────────────────────────────────────────────────────────────────────────────────────-┐ │ HiveToMcTableJob │ │ │ │ ┌───────────────────────────┐ │ │ │ SetUpTask │ ┌────────────────────────────────────────────────────────┐ │ │ │ │ │ TableDataTransmissionTask │ │ │ │ DropTableAction │ │ │ │ │ │ | │ │ TableDataTransmissionAction(数据传输) │ │ │ │ CreateTableAction ├────►│ | | │ │ │ │ | │ │ HiveVerificationAction McVerificationAction │ │ │ │ DropPartitionAction │ │ | | │ │ │ │ | │ │ VerificationAction(对比验证结果) │ │ │ │ AddPartitionAction │ └────────────────────────────────────────────────────────┘ │ │ └───────────────────────────┘ │ │ │ └──────────────────────────────────────────────────────────────────────────────────────────────┘
官方文档:mma]# unzip mma-0.1.1-hive-2.x.zip [root@bigdata-01 mma]# cd mma-0.1.1 [root@bigdata-01 mma-0.1.1]# pwd /data/soft/mma/mma-0.1.1 [root@bigdata-01 mma-0.1.1]# ll total 20 drwxr-xr-x 2 root root 4096 Mar 28 12:01 bin drwxr-xr-x 2 root root 4096 Sep 19 2021 conf drwxr-xr-x 5 root root 4096 Apr 22 16:25 lib drwxr-xr-x 3 root root 4096 Apr 22 16:25 res -rw-r--r-- 1 root root 5 Apr 22 16:25 version.txt [root@bigdata-01 mma-0.1.1]#
3.2配置 MMA server
解压安装包之后,运行配置引导脚本:/data/soft/mma/mma-0.1.1/bin
[root@bigdata-01 bin]# ./configure Hive configurations Please input Hive metastore URI(s): HELP: See: "hive.metastore.uris" in hive-site.xml EXAMPLE: thrift://localhost:9083 >{thrift} Please input Hive JDBC connection string HELP: Same as the connection string used in beeline, which starts with jdbc:hive2 EXAMPLE: jdbc:hive2://localhost:10000 >{hive2} Please input Hive JDBC user name HELP: Same as the user name used in beeline. The default value is "Hive" EXAMPLE: Hive >{username} Please input Hive JDBC password HELP: Same as the password used in beeline >{password} Hive security configurations Has Kerberos authentication? (Y/N) >{isKerberos} MaxCompute configurations Please input MaxCompute endpoint HELP: See: https://help.aliyun.com/document_detail/34951.html EXAMPLE: http://service.cn.maxcompute.aliyun-inc.com/api >{maxComputeEndpoint} Please input MaxCompute project name HELP: The target MaxCompute project >{maxComputeProject} Please input Alibaba cloud accesskey id HELP: See: https://help.aliyun.com/document_detail/27803.html >{accesskeyId} Please input Alibaba accesskey secret HELP: See: https://help.aliyun.com/document_detail/27803.html >{accesskeySecret} Generating MMA server configuration MMA server configuration file path: /data/soft/mma/mma-0.1.1/conf/mma_server_config.json Validating MMA server configurations SLF4J: Class path contains multiple SLF4J bindings. SLF4J: Found binding in [jar:file:/data/soft/mma/mma-0.1.1/lib/client/log4j-slf4j-impl-2.17.1.jar!/org/slf4j/impl/StaticLoggerBinder.class] SLF4J: Found binding in [jar:file:/data/soft/mma/mma-0.1.1/lib/connector/hive-uber.jar!/org/slf4j/impl/StaticLoggerBinder.class] SLF4J: See for an explanation. SLF4J: Actual binding is of type [org.apache.logging.slf4j.Log4jLoggerFactory] log4j:WARN No appenders could be found for logger (org.apache.hadoop.util.Shell). log4j:WARN Please initialize the log4j system properly. log4j:WARN See for more info. Passed Please execute the following commands manually to create required Hive UDTF Upload Hive UDTF resource jar to HDFS: hdfs dfs -put -f /data/soft/mma/mma-0.1.1/lib/data-transfer-hive-udtf-0.1.1-jar-with-dependencies.jar hdfs:///tmp/ Create Hive function in beeline: DROP FUNCTION IF EXISTS default.odps_data_dump_multi; CREATE FUNCTION default.odps_data_dump_multi as 'com.aliyun.odps.mma.io.McDataTransmissionUDTF' USING JAR 'hdfs:///tmp/data-transfer-hive-udtf-0.1.1-jar-with-dependencies.jar'; Press "ENTER" to confirm that the Hive UDTF has been created successfully > Congratulations! The configuration is completed! [root@bigdata-01 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:
hdfs dfs -put -f ${MMA_HOME}/res/data-transfer-hive-udtf-${MMA_VERSION}-jar-with-dependencies.jar hdfs:///tmp/
使用 beeline 创建 Hive 函数:
DROP FUNCTION IF EXISTS default.odps_data_dump_multi; CREATE FUNCTION default.odps_data_dump_multi as 'com.aliyun.odps.mma.io.McDataTransmissionUDTF' USING JAR 'hdfs:///tmp/data-transfer-hive-udtf-${MMA_VERSION}-jar-with-dependencies.jar';
4.使用
4.1启动 MMA server
MMA server 进程在迁移期间应当一直保持运行。若 MMA server 因为各种原因中断了运行,直接执行以下命令重启即可。MMA server 进程在一台服务器最多只能存在一个。默认端口为 18889
/bin/mma-server
启动成功后,MMA支持WebUI:~]# cd /data/soft/mma/mma-0.1.1/conf/ [root@bigdata-01 conf]# cp table_mapping.txt.template table_mapping.txt
然后修改映射文件:vim table_mapping.txt
# generated for each of the following lines. Take the first line for an example, the source # catalog(or database) and table are 'source_catalog' and 'source_table1', while the destination # MaxCompute project and table are 'dest_pjt' and 'dest_table1'. # 通过bin/gen-job-conf工具,以下每一行一行将会分别生成一个表迁移任务配置文件。每一行中,冒号(:)前后分别为源表和目标表 # 的全名。全名的格式为库名.表名,如source_catalog.source_table1:dest_pjt.dest_table1表示源表为source_catalog # 库中的表source_table1,目标表为dest_pjt项目下的表dest_table1。 db_assets_pool.t_abs_payable:edy_dbwarehouse.db_assets_pool_t_abs_payable_mma db_assets_pool.t_assets_device_backup:edy_dbwarehouse.db_assets_pool_t_assets_device_backup_mma db_assets_pool.t_customer_received:edy_dbwarehouse.db_assets_pool_t_customer_received_mma
然后执行生成任务命令:
/bin/gen-job-conf --objecttype TABLE --tablemapping ${table_mapping_file}
其他参数
-jobid:可以指定 Job ID
-output:可以指定配置文件输出路径,不指定会默认生成到/conf目录下${objectType}-${sourceCatalog}-${destCatalog}-${job_id}.json
修改配置
生成配置文件后,需要指定迁移分区
{ "mma.filter.partition.begin":"2020-01-01", "mma.filter.partition.end":"2020-05-01", "mma.filter.partition.orders":"lex" }
修改后:
{ "mma.object.source.catalog.name": "db_core_assets", "mma.object.source.name": "b_asset", "mma.object.type": "TABLE", "mma.object.dest.catalog.name": "edy_dbwarehouse", "mma.object.dest.name": "db_core_assets_b_asset_mma" ,"mma.filter.partition.begin":"2020-01-01","mma.filter.partition.end":"2020-05-01","mma.filter.partition.orders":"lex" }
4.3提交任务
/bin/mma-client --action SubmitJob --conf
4.4查看任务状态
先查看所有迁移任务列表:
/bin/mma-client --action ListJobs Job ID: 2263e913e9ba4130ac1e930b909dafab, status: FAILED, progress: 0.00% Job ID: cf2c5f2f335041a1a1729b340c1d5fde, status: SUCCEEDED, progress: 0.00% OK
/bin/mma-client --action GetJobInfo --jobid YOUR_JOB_ID
4.5其他命令
停止任务
/bin/mma-client --action StopJob --jobid YOUR_JOB_ID
重置任务
状态为 SUCCEEDED FAILED CANCELED 三种状态下的任务可以被重置 当需要增量同步时,重置 SUCCEEDED 状态下的任务 当需要重试失败任务时,重置 FAILED CANCELED 状态下的任务
/bin/mma-client --action ResetJob --jobid YOUR_JOB_ID
删除任务
/bin/mma-client --action DeleteJob --jobid YOUR_JOB_ID
5.优化
为了更自动化执行任务,生成任务配置,修改分区,提交任务,分别编写以下脚本
首先最新目录结构如下,db_crm,db_risk是对应的任务配置目录,后期再有其他库,可按照此方式添加
MMA_HOME └── bin ├── configure # 生成 mma server 配置的工具 ├── gen-job-conf # 生成任务配置的工具 ├── mma-client # 客户端命令行工具 └── mma-server # 服务端命令行工具 └── conf ├── gss-jaas.conf.template ├── mma_server_config.json.template └── table_mapping.txt.template └── db_crm ├── finished # 完成的任务存放目录 ├── table_mapping.txt # 任务配置文件 └── TABLE-* # 生成的任务json文件 └── db_risk ├── finished # 完成的任务存放目录 ├── table_mapping.txt # 任务配置文件 └── TABLE-* # 生成的任务json文件
5.1 生成配置任务脚本
vim /data/soft/mma/mma-0.1.0/bin/mma_gen_job
#!/bin/bash #desc: 生成任务job pcount=$# if((pcount==0)); then echo no args; exit; fi mma=/data/soft/mma/mma-0.1.0 db=$@ #所dd有参数 echo $db $mma/bin/gen-job-conf --objecttype TABLE --output $mma/conf/$db --tablemapping $mma/conf/$db/table_mapping.txt
使用示例:mma_gen_job db_crm
[root@data-es21 db_crm]# mma_gen_job db_crm db_crm mma_1bee5728-e5a3-4735-8818-9070ef47d0c1 Job configuration generated: /data/soft/mma/mma-0.1.0/conf/db_crm/TABLE-db_crm.t_visit_record-edy_dbwarehouse.db_crm_t_visit_record_mma-1658900626169.json [root@data-es21 db_crm]# ll total 12 drwxr-xr-x 2 root root 4096 Jul 27 11:44 done -rw-r--r-- 1 root root 232 Jul 27 13:43 TABLE-db_crm.t_visit_record-edy_dbwarehouse.db_crm_t_visit_record_mma-1658900626169.json -rw-r--r-- 1 root root 794 Jul 27 13:38 table_mapping.txt
完成后,将生成json文件,目录在 /conf/{db}下
5.2 添加分区任务
任务脚本生成之后,需要添加分区
vim /data/soft/mma/mma-0.1.0/bin/mma_modify_job
#!/bin/bash #desc: 修改任务文件,添加分区范围 pcount=$# if((pcount <3)); then echo no args; exit; fi #获取文件名称 p1=$1 fname=`basename $p1` fname_bak=`basename $p1`_bak echo fname=$fname #获取上级目录到绝对路径 pdir=`cd -P $(dirname $p1); pwd` echo pdir=$pdir #分区开始时间 p2=$2 #分区结束时间 p3=$3 #自定义jobid uuid=`cat /proc/sys/kernel/random/uuid` jobid=ods_`echo ${uuid//-/}` #新的json文件名 nfname=`echo $fname |cut -d"-" -f1-3`-"$jobid".json echo "最新json文件名"$nfname echo "任务jobid为:"$jobid mma=/data/soft/mma/mma-0.1.0/bin #提交任务 cat $pdir/$fname | jq '. + {"mma.filter.partition.begin":"'$p2'","mma.filter.partition.end":"'$p3'","mma.filter.partition.orders":"lex","mma.job.id":"'$jobid'"}' >> $pdir/$fname_bak #重新生成json文件 rm -rf $pdir/$fname cat $pdir/$fname_bak >> $pdir/$nfname rm -rf $pdir/$fname_bak
使用示例:
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
[root@data-es21 db_crm]# 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 fname=TABLE-db_crm.t_visit_record-edy_dbwarehouse.db_crm_t_visit_record_mma-1658902900181.json pdir=/data/soft/mma/mma-0.1.0/conf/db_crm 最新json文件名TABLE-db_crm.t_visit_record-edy_dbwarehouse.db_crm_t_visit_record_mma-mma_f45c37bd31f64775b73bd6f88518ad07.json 任务jobid为:mma_f45c37bd31f64775b73bd6f88518ad07
5.3 提交任务脚本
vim /data/soft/mma/mma-0.1.0/bin/mma_submit_job
#!/bin/bash #desc: 提交单个mma任务 pcount=$# if((pcount==0)); then echo no args; exit; fi #获取文件名称 p1=$1 fname=`basename $p1` echo fname=$fname #获取上级目录到绝对路径 pdir=`cd -P $(dirname $p1); pwd` echo pdir=$pdir mma=/data/soft/mma/mma-0.1.0/bin #提交任务 nohup $mma/mma-client --action SubmitJob --conf $pdir/$fname 2>&1 &
使用示例
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
#!/bin/bash #desc: 查看任务列表 mma=/data/soft/mma/mma-0.1.0 $mma/bin/mma-client --action GetJobInfo --jobid $1
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
#!/bin/bash #desc: 一键批量迁移任务 # 1.生成任务 # 2.添加分区 # 3.提交任务 # 参数 $1:数据库 $2:分区开始 $3:分区结束 pcount=$# #分区开始时间 p2=2015-01-01 #分区结束时间 p3=2022-05-01 if((pcount==1)); then echo "批量迁移$1,默认迁移分区:$p2~$p3"; elif((pcount==3)); then #分区开始时间 p2=$2 #分区结束时间 p3=$3 else echo "命令实例:mma_batch_job db_crm 2015-01-01 2022-01-01" echo "或者:mma_batch_job db_crm,不填分区,会使用默认分区" exit; fi function ding_alert() { webhook="https://oapi.dingtalk.com/robot/send?access_token=钉钉群机器人" curl ${webhook} \ -H 'Content-Type: application/json' \ -d '{"msgtype": "text", "text": { "content": "'$1'" } }' } path=/data/soft/mma/mma-0.1.0/conf/$1 echo "批量迁移任务 $1 >> 开始分区:$p2,结束分区:$p3" mma=/data/soft/mma/mma-0.1.0/bin #根据映射文件生成配置任务 $mma/mma_gen_job $1 #添加分区 for fname in $path/TABLE* do if [[ $fname =~ "ods_" ]]; # 包含ods_则表示已经添加了分区,跳过即可 then continue fi echo "添加任务分区:$fname" $mma/mma_modify_job $fname $p2 $p3 done #提交任务 for fname in $path/TABLE* do if [[ $fname =~ "ods_" ]]; then echo "提交任务:$fname" $mma/mma_submit_job $fname ding_alert "迁移任务提交:$fname" fi done
使用示例: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
#!/bin/bash #desc: 查看mma任务状态,如果成功,则将配置任务移动到finished目录下 #需要走定时,是环境变量生效 source /etc/profile path=/data/soft/mma/mma-0.1.0/conf mma=/data/soft/mma/mma-0.1.0/bin function ding_alert() { webhook="https://oapi.dingtalk.com/robot/send?access_token=钉钉群机器人" curl ${webhook} \ -H 'Content-Type: application/json' \ -d '{"msgtype": "text", "text": { "content": "'$1\ $2'" } }' } #循环每个库的配置任务是否完成 for db in $path/db* do echo "监测的库:"$db for fname in $db/TABLE* do if [[ $fname =~ "ods_" ]]; then echo "json配置任务:"$fname jobid=`echo "$fname"|cut -d'-' -f5|cut -d'.' -f1` echo "获取任务jobid:"$jobid echo "获取任务进度..." result=`$mma/mma_getinfo_job $jobid |grep "status:"|awk -F ' ' '{print $NF}'` echo "当前任务进度:$result" dt=$(date +'%Y-%m-%d %H:%M:%S') if [[ $result == 'SUCCEEDED' ]];then echo "完成时间:$dt" echo "任务同步完成,完成时间:$dt,将任务移动到finished目录下" mv $fname $db/finished msg="迁移任务<"$fname">已完成,完成时间:"$dt"" ding_alert $msg elif [[ $result != 'PENDING' && $result != 'RUNNING' && $result != 'SUCCEEDED' && $result != 'FAILED' && $result != 'CANCELED' ]];then echo "未获取到任务进度,尝试重新提交任务..." $mma/mma_submit_job $fname fi fi done done
6.问题排查
查找导致失败的具体 Action
获取失败的jobid
/bin/mma-client --action ListJobs | grep FAILED
[root@data-es21 log]# ../bin/mma-client --action ListJobs | grep FAILED Job ID: mma_1b37cda58bd446afabe355a86d488309, status: FAILED, progress: 0.00% Job ID: 4bdc8676092a4dbc9dfd509936a03c07, status: FAILED, progress: 0.00% OK
获得 Job ID 后可以执行以下命令获取失败的原因:
grep "Job failed" /log/mma_server.LOG | grep mma_1b37cda58bd446afabe355a86d488309
[root@data-es21 log]# grep "Job failed" mma_server.LOG|grep mma_1b37cda58bd446afabe355a86d488309 2022-07-27 15:10:46,960 INFO [main] job.AbstractJob (AbstractJob.java:fail(326)) - Job failed, id: mma_1b37cda58bd446afabe355a86d488309, reason: com.aliyun.odps.mma.server.task.HiveToMcTableDataTransmissionTask failed, id(s): 2ba83078-9db8-4d68-bf4c-f63aa60139bf.DataTransmission.part.3,2ba83078-9db8-4d68-bf4c-f63aa60139bf.DataTransmission.part.6,2ba83078-9db8-4d68-bf4c-f63aa60139bf.DataTransmission.part.7 2022-07-27 15:21:39,333 INFO [main] job.AbstractJob (AbstractJob.java:fail(326)) - Job failed, id: mma_1b37cda58bd446afabe355a86d488309, reason: com.aliyun.odps.mma.server.task.HiveToMcTableDataTransmissionTask failed, id(s): 7b0ae9cc-5cb7-4a3d-81c4-381a31ccf1c8.DataTransmission.part.0,7b0ae9cc-5cb7-4a3d-81c4-381a31ccf1c8.DataTransmission.part.1,7b0ae9cc-5cb7-4a3d-81c4-381a31ccf1c8.DataTransmission.part.2 2022-07-27 15:32:36,619 INFO [main] job.AbstractJob (AbstractJob.java:fail(326)) - Job failed, id: mma_1b37cda58bd446afabe355a86d488309, reason: com.aliyun.odps.mma.server.task.HiveToMcTableDataTransmissionTask failed, id(s): 2618bc2e-da37-421b-afd1-ca1c55cf3941.DataTransmission.part.0,2618bc2e-da37-421b-afd1-ca1c55cf3941.DataTransmission.part.1,2618bc2e-da37-421b-afd1-ca1c55cf3941.DataTransmission.part.2 [root@data-es21 log]#
获取失败的Action
grep 2ba83078-9db8-4d68-bf4c-f63aa60139bf.DataTransmission.part.3 mma_server.LOG | grep FAIL
[root@data-es21 log]# grep 2ba83078-9db8-4d68-bf4c-f63aa60139bf.DataTransmission.part.3 mma_server.LOG | grep FAIL 2022-07-27 14:58:19,139 ERROR [main] action.AbstractAction (AbstractAction.java:afterExecution(135)) - Action failed, actionId: 2ba83078-9db8-4d68-bf4c-f63aa60139bf.DataTransmission.part.3.DataTransmission, stack trace: java.util.concurrent.ExecutionException: java.sql.SQLException: org.apache.hive.service.cli.HiveSQLException: Error while processing statement: FAILED: Execution Error, return code 2 from org.apache.hadoop.hive.ql.exec.mr.MapRedTask 2022-07-27 14:58:19,139 INFO [main] action.AbstractAction (AbstractAction.java:setProgress(160)) - Set action status, id: 2ba83078-9db8-4d68-bf4c-f63aa60139bf.DataTransmission.part.3.DataTransmission, from: RUNNING, to: FAILED 2022-07-27 14:58:19,139 INFO [main] task.DagTask (DagTask.java:setStatus(92)) - Set task status, id: 2ba83078-9db8-4d68-bf4c-f63aa60139bf.DataTransmission.part.3, from: RUNNING, to: FAILED 2022-07-27 14:58:20,460 INFO [main] server.JobScheduler (JobScheduler.java:handleTerminatedActions(245)) - Action terminated, id: 2ba83078-9db8-4d68-bf4c-f63aa60139bf.DataTransmission.part.3.DataTransmission, status: FAILED 2022-07-27 14:58:30,547 INFO [main] server.JobScheduler (JobScheduler.java:handleTerminatedTasks(202)) - Task terminated, id: 2ba83078-9db8-4d68-bf4c-f63aa60139bf.DataTransmission.part.3, status: FAILED 2022-07-27 15:11:17,880 INFO [main] job.JobManager (JobManager.java:listSubJobsByStatus(736)) - List sub jobs by status, parent job id: basics: mma_1b37cda58bd446afabe355a86d488309, TABLE, Hive, Hive, MaxCompute, MaxCompute, db_crm, t_call_log_current, PENDING, extended: 98a44535-3bb8-4465-894a-791a557d8095.SetUp, SUCCEEDED, 2ba83078-9db8-4d68-bf4c-f63aa60139bf.DataTransmission.part.0, SUCCEEDED, 2ba83078-9db8-4d68-bf4c-f63aa60139bf.DataTransmission.part.1, SUCCEEDED, 2ba83078-9db8-4d68-bf4c-f63aa60139bf.DataTransmission.part.2, SUCCEEDED, 2ba83078-9db8-4d68-bf4c-f63aa60139bf.DataTransmission.part.3, FAILED, 2ba83078-9db8-4d68-bf4c-f63aa60139bf.DataTransmission.part.4, SUCCEEDED, 2ba83078-9db8-4d68-bf4c-f63aa60139bf.DataTransmission.part.5, SUCCEEDED, 2ba83078-9db8-4d68-bf4c-f63aa60139bf.DataTransmission.part.6, FAILED, 2ba83078-9db8-4d68-bf4c-f63aa60139bf.DataTransmission.part.7, FAILED, 2ba83078-9db8-4d68-bf4c-f63aa60139bf.DataTransmission.part.8, SUCCEEDED, status: PENDING [root@data-es21 log]#
Action失败类型,这里是DataTransmission,继续查找错误
grep 2ba83078-9db8-4d68-bf4c-f63aa60139bf.DataTransmission.part.3 mma_server.LOG | grep "stack trace"
按照这个步骤基本上可以确定错误原因。
更多请在公号平台搜索:选手一号位,本文编号:2006,回复即可获取。
版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。
发表评论
暂时没有评论,来抢沙发吧~