【发布时间】:2015-11-14 01:25:20
【问题描述】:
我有一个简单的 DataPipeline 作业,它只有一个 EmrActivity,一步尝试从我的 s3 存储桶执行配置单元脚本。
EmrActivity 的配置如下所示:
{
"name" : "Extract and Transform",
"id" : "HiveActivity",
"type" : "EmrActivity",
"runsOn" : { "ref" : "EmrCluster" },
"step" : ["command-runner.jar,/usr/share/aws/emr/scripts/hive-script --run-hive-script --args -f s3://[bucket-name-removed]/s1-tracer-hql.q -d INPUT=s3://[bucket-name-removed] -d OUTPUT=s3://[bucket-name-removed]"],
"runsOn" : { "ref": "EmrCluster" }
}
以及运行它的相应 EmrCluster 资源的配置:
{
"id" : "EmrCluster",
"type" : "EmrCluster",
"name" : "Hive Cluster",
"keyPair" : "[removed]",
"masterInstanceType" : "m3.xlarge",
"coreInstanceType" : "m3.xlarge",
"coreInstanceCount" : "2",
"coreInstanceBidPrice": "0.10",
"releaseLabel": "emr-4.1.0",
"applications": ["hive"],
"enableDebugging" : "true",
"terminateAfter": "45 Minutes"
}
我收到的错误信息总是如下:
java.io.IOException: Cannot run program "/usr/share/aws/emr/scripts/hive-script --run-hive-script --args -f s3://[bucket-name-removed]/s1-tracer-hql.q -d INPUT=s3://[bucket-name-removed] -d OUTPUT=s3://[bucket-name-removed]" (in directory "."): error=2, No such file or directory
at com.amazonaws.emr.command.runner.ProcessRunner.exec(ProcessRunner.java:139)
at com.amazonaws.emr.command.runner.CommandRunner.main(CommandRunner.java:13)
...
主要错误消息是“...(在目录“.”中):错误=2,没有这样的文件或目录”。
我已经登录到主节点并验证了/usr/share/aws/emr/scripts/hive-script 的存在。我还尝试为 hive-script 指定一个基于 s3 的位置,以及其他一些地方;总是相同的错误结果。
我可以直接在 EMR 中手动创建一个集群,该集群看起来与我在此 DataPipeline 中指定的完全一样,其中一个步骤使用相同的 "command-runner.jar,/usr/share/aws/emr/scripts/hive-script ..." 命令字符串,并且它可以正常工作。
有没有人遇到过这种情况,并且可以就我缺少什么和/或做错了什么向我提供建议?我在这家已经有一段时间了。
【问题讨论】:
标签: hadoop amazon-web-services hive amazon-emr amazon-data-pipeline