繁体   English   中英

AWS数据管道错误

[英]AWS Data Pipeline Error

使用数据管道aws进程的dynamoDB表备份出现错误:

02 May 2017 07:19:04,544 [WARN] (TaskRunnerService-df-0940986HJGYQM1ZJ8BN_@EmrClusterForBackup_2017-04-25T13:31:55-2) df-0940986HJGYQM1ZJ8BN amazonaws.datapipeline.cluster.EmrUtil: EMR job flow named 'df-0940986HJGYQM1ZJ8BN_@EmrClusterForBackup_2017-04-25T13:31:55' with jobFlowId 'j-2SJ0OQOM0BTI' is in status 'RUNNING' because of the step 'df-0940986HJGYQM1ZJ8BN_@TableBackupActivity_2017-04-25T13:31:55_Attempt=2' failures 'null'
02 May 2017 07:19:04,544 [INFO] (TaskRunnerService-df-0940986HJGYQM1ZJ8BN_@EmrClusterForBackup_2017-04-25T13:31:55-2) df-0940986HJGYQM1ZJ8BN amazonaws.datapipeline.cluster.EmrUtil: EMR job '@TableBackupActivity_2017-04-25T13:31:55_Attempt=2' with jobFlowId 'j-2SJ0OQOM0BTI' is in  status 'RUNNING' and reason 'Running step'. Step 'df-0940986HJGYQM1ZJ8BN_@TableBackupActivity_2017-04-25T13:31:55_Attempt=2' is in status 'FAILED' with reason 'null'
02 May 2017 07:19:04,544 [INFO] (TaskRunnerService-df-0940986HJGYQM1ZJ8BN_@EmrClusterForBackup_2017-04-25T13:31:55-2) df-0940986HJGYQM1ZJ8BN amazonaws.datapipeline.cluster.EmrUtil: Collecting steps stderr logs for cluster with AMI 3.9.0
02 May 2017 07:19:04,558 [INFO] (TaskRunnerService-df-0940986HJGYQM1ZJ8BN_@EmrClusterForBackup_2017-04-25T13:31:55-2) df-0940986HJGYQM1ZJ8BN amazonaws.datapipeline.taskrunner.LogMessageUtil: Returning tail errorMsg :    at org.apache.hadoop.mapred.FileOutputFormat.checkOutputSpecs(FileOutputFormat.java:132)
 at org.apache.hadoop.mapreduce.JobSubmitter.checkSpecs(JobSubmitter.java:460)
 at org.apache.hadoop.mapreduce.JobSubmitter.submitJobInternal(JobSubmitter.java:343)
 at org.apache.hadoop.mapreduce.Job$10.run(Job.java:1285)
 at org.apache.hadoop.mapreduce.Job$10.run(Job.java:1282)
 at java.security.AccessController.doPrivileged(Native Method)
 at javax.security.auth.Subject.doAs(Subject.java:415)
 at org.apache.hadoop.security.UserGroupInformation.doAs(UserGroupInformation.java:1548)
 at org.apache.hadoop.mapreduce.Job.submit(Job.java:1282)
 at org.apache.hadoop.mapred.JobClient$1.run(JobClient.java:562)
 at org.apache.hadoop.mapred.JobClient$1.run(JobClient.java:557)
 at java.security.AccessController.doPrivileged(Native Method)
 at javax.security.auth.Subject.doAs(Subject.java:415)
 at org.apache.hadoop.security.UserGroupInformation.doAs(UserGroupInformation.java:1548)
 at org.apache.hadoop.mapred.JobClient.submitJobInternal(JobClient.java:557)
 at org.apache.hadoop.mapred.JobClient.submitJob(JobClient.java:548)
 at org.apache.hadoop.mapred.JobClient.runJob(JobClient.java:833)
 at org.apache.hadoop.dynamodb.tools.DynamoDbExport.run(DynamoDbExport.java:79)
 at org.apache.hadoop.util.ToolRunner.run(ToolRunner.java:70)
 at org.apache.hadoop.dynamodb.tools.DynamoDbExport.main(DynamoDbExport.java:30)
 at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
 at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
 at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
 at java.lang.reflect.Method.invoke(Method.java:606)
 at org.apache.hadoop.util.RunJar.main(RunJar.java:212)

有大量数据(600万)。 管道工作了4天,出现了错误。 无法弄清楚错误。

从分析您的日志,特别是这条线...

org.apache.hadoop.dynamodb.tools.DynamoDbExport

您似乎正在运行在一个名为“将DynamoDB表导出到S3”的预定义模板上创建的AWS Data Pipeline。

此数据管道采用了几个可以在管道架构师中编辑的输入参数,但最重要的参数是:

  1. myDDBTableName - 要导出的DynamoDB表的名称。
  2. myOutputS3Loc - 您希望MapReduce作业导出数据的完整S3路径。 这必须是s3:///格式。 然后,MR作业将根据日期时间戳将您的数据导出到具有S3前缀的S3位置(例如s3://<S3_BUCKET_NAME>/<S3_BUCKET_PREFIX>/2019-08-13-15-32-02
  3. myDDBReadThroughputRatio - 指定MR作业将用于完成操作的DDB表RCU的比例。 建议根据您最近的指标+ MR作业的额外RCU将其设置为预配置吞吐量。 换句话说,不要让您的DDB表具有“按需”配置 - 它将不起作用。 此外,我建议您慷慨地使用MR作业所需的额外RCU,因为它将确保您的EMR群集资源更快完成,并且额外的RCU几小时比额外的EMR计算资源更便宜。
  4. myDDBRegion - DDB表的区域(请记住:DDB是多区域服务,无论全局表的概念如何)。

既然我们熟悉了这个数据管道所需的这些参数,那么让我们看看这个日志行:

02 May 2017 07:19:04,558 [INFO] (TaskRunnerService-df-0940986HJGYQM1ZJ8BN_@EmrClusterForBackup_2017-04-25T13:31:55-2) df-0940986HJGYQM1ZJ8BN amazonaws.datapipeline.taskrunner.LogMessageUtil: Returning tail errorMsg :    at org.apache.hadoop.mapred.FileOutputFormat.checkOutputSpecs(FileOutputFormat.java:132)

虽然它没有在ERROR日志级别上冒泡,但这是来自Hadoop框架的错误消息,无法识别Hadoop作业的输出格式位置。 当您的数据管道向Hadoop的TaskRunner提交任务时,它会评估输出位置格式并意识到它不是可以支持的。 这可能意味着多种事情:

  1. 您的数据管道参数myOutputS3Loc在两次运行之间已更改为无效值。
  2. 您的Data Pipeline参数myOutputS3Loc指向同时删除的S3存储桶。

我建议检查myOutputS3Loc参数并传递值以确保您的MR作业正在获得正确的输入。 您还可以通过在作业运行时检查EMR控制台中的控制器日志来验证提交给EMR任务的参数。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM