【问题标题】:Unable to execute a step on a running EMR无法在正在运行的 EMR 上执行步骤
【发布时间】:2020-01-15 02:50:43
【问题描述】:

我有一个在 AWS 中运行的 EMR 集群 5.28.1,但作为引导操作的一部分,我忘记从 python 库进行安装。现在集群正在运行,我只是尝试通过 EMR 控制台添加一个步骤。这是我的设置

JAR: s3://us-east-1.elasticmapreduce/libs/script-runner/script-runner.jar
Main class: None
Arguments: s3://xxxx/install_python_libraries.sh

很遗憾,我收到以下错误。

Cannot run program "s3://xxxxx/install_python_libraries.sh" (in directory "."): error=2, No such file or directory

我不确定我做错了什么。 shell 脚本如下所示。

#!/bin/bash -xe

# Non-standard and non-Amazon Machine Image Python modules:
sudo pip-3.6 install boto3
sudo pip-3.6 install xmltodict

我也尝试过简单地使用“command-runner.jar”,但我得到了同样的错误。你能帮我找出问题,所以我可以通过控制台来解决这个问题吗?我想在所有节点上安装库 - 主节点和核心节点。

谢谢

【问题讨论】:

  • 这看起来像是权限问题。您确定用于 EMR 的角色具有访问脚本的适当 s3 权限吗?
  • @bdcloud。我想你可能有一点。从来没有想过这个错误会意味着权限问题。会试试看。
  • 您能否确认 IAM 政策是否存在问题?
  • 修复了这个角色,我想我已经通过了那个消息。现在,我得到 java.io.IOException: Cannot run program "/mnt/var/lib/hadoop/steps/s-36C0OJUGLXXXX/./install_python_libraries.sh" (in directory "."): error=2, No such文件或目录。当我转到该目录时,shell 文件已成功传输,但请注意上面路径中的句点 (.),我仍在添加步骤,如上面的原始问题所示。所以,不知道如何解决这个问题。而且shell文件确实有自动执行权限。

标签: amazon-web-services amazon-s3 amazon-emr


【解决方案1】:

问题在于 xxx.sh 文件 EOL/回车类型。

换句话说,如果是 Windows ("\r\n") 那么它将不起作用并返回 ./ file not found 错误。

使用notepad++之类的东西将其转换为unix类型(“\n”),它会运行良好。

(在notepad++编辑>EOL转换>Unix(LF)点击保存再试)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2017-08-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-04-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多