当我通过DynamoDB控制台中的导出功能设置重新发生的备份时,它创建的任务会在运行时自动创建新的EMR集群。我的一些表需要备份但相当小。我最终得到的是大量的大型服务器运行来备份一些相对较小的表。有没有简单的方法将这些任务链接在一个服务器组上串联或并行运行?
答案 0 :(得分:1)
是的,有可能。没有直接的方法,但需要在Data-Pipeline端进行一些额外的调整。您需要了解默认情况下Data-Pipeline如何实际运行导出作业。
当您单击DDB控制台上的导出按钮时,它会将您带到Data-Pipelines控制台以创建导出的管道。
填写完模板后,您可以使用Edit in Architect
功能更改当前仅适用于一个表的模板,而不是运行。
在架构师页面上,如果您观察Activities
部分,您会发现EmrAcvity使用以下参数运行EMR STEP。此EMR STEP将使用您最初在模板上传递的参数运行导出作业。请注意,您还可以在资源部分找到RunsOn
EMRclusterforBackup
资源。
s3://dynamodb-emr-#{myDDBRegion}/emr-ddb-storage-handler/2.1.0/emr-ddb-2.1.0.jar,org.apache.hadoop.dynamodb.tools.DynamoDbExport,#{output.directoryPath},#{input.tableName},#{input.readThroughputPercent}
Add
创建另一个EMRActivity对象,然后在架构师上添加EMRActivity。在此活动上,您可以使用与之前的活动相同的RunsOn
,并且在STEP参数中,您可以手动编辑以包含其他表名及其导出路径
喜欢 s3://dynamodb-emr-#{myDDBRegion}/emr-ddb-storage-handler/2.1.0/emr-ddb-2.1.0.jar,org.apache.hadoop.dynamodb.tools.DynamoDbExport,s3://myexport-bucket/table2/,table2,0.9
注意:对于使用JSON文件作为Data-Pipeline定义的多个表,可以轻松完成此操作,编辑它以添加更多活动和参数,然后将其导出到稍后运行。