【问题标题】:EMR 6 Beta with Docker Support has S3 Access Issue支持 Docker 的 EMR 6 Beta 存在 S3 访问问题
【发布时间】:2020-04-29 07:54:09
【问题描述】:

我正在探索支持 Docker 的新 EMR 6.0.0,以便我们决定是否要使用它。我们的一个项目是用 Scala 2.11 编写的。但是 EMR 6.0.0 附带了从 Scala 2.12 构建的 Spark。所以我转而尝试 6.00-beta,它是从 Scala 2.11 构建的 Spark 2.4.3。如果它适用于 6.0.0-beta,那么我们将代码升级到 Scala 2.12 并使用 6.0.0。

我在尝试运行 Scala spark 作业时遇到了一些问题:

  1. 当它尝试从 S3 读取 parquet 时,我收到错误:java.lang.RuntimeException: Cannot create temp dirs: [/mnt/s3]
  2. 当我尝试使用 https 进行 API 调用时,出现错误:usun.security.validator.ValidatorException:PKIX 路径构建失败:sun.security.provider.certpath.SunCertPathBuilderException:无法找到请求目标的有效证书路径。
  3. 当它尝试从 S3 读取文件时,出现错误:找不到类 com.amazon.ws.emr.hadoop.fs.EmrFileSystem。我能够通过 --jars 传递路径来破解这个。也许不是最好的解决方案。

我猜我必须在引导期间或在 Docker 文件中设置一些东西。

有人可以帮忙吗?谢谢!

【问题讨论】:

    标签: docker apache-spark amazon-s3 amazon-emr


    【解决方案1】:

    我发现了 S3 问题。在 beta 版本中,/mnt/s3 没有被挂载并被赋予读写权限。

    所以我需要将“docker.allowed.rw-mounts”添加到容器执行器配置中,如下所示:

    docker.allowed.rw-mounts=/etc/passwd,/mnt/s3

    【讨论】:

    • 我一直在努力解决同样的问题。我希望您能为我回答以下问题:(1)您为什么将/etc/passwd 包括在列表中? (2) 您是否将这个额外的配置添加到 JSON 文件中作为"docker.allowed.rw-mounts": "/etc/passwd,/mnt/s3"? (3) 多个挂载点出现错误/mnt/s3/mnt1/s3/mnt2/s3/mnt3/s3。所以我添加了额外的配置"docker.allowed.rw-mounts": "/etc/passwd,/mnt/s3,/mnt1/s3,/mnt2/s3,/mnt3/s3" 并以错误Invalid docker read-write mount 结束。关于如何使它起作用的任何建议?
    猜你喜欢
    • 2012-09-13
    • 2017-07-02
    • 1970-01-01
    • 2015-12-05
    • 2015-03-12
    • 1970-01-01
    • 2017-08-02
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多