【问题标题】:aws: EMR cluster fails "ERROR UserData: Error encountered while try to get user data" on submitting spark jobaws:EMR 集群在提交 Spark 作业时失败“错误用户数据:尝试获取用户数据时遇到错误”
【发布时间】:2019-12-07 15:11:39
【问题描述】:

已成功启动 aws EMR 集群,但任何提交都失败了:

19/07/30 08:37:42 ERROR UserData: Error encountered while try to get user data
java.io.IOException: File '/var/aws/emr/userData.json' cannot be read
    at com.amazon.ws.emr.hadoop.fs.shaded.org.apache.commons.io.FileUtils.openInputStream(FileUtils.java:296)
    at com.amazon.ws.emr.hadoop.fs.shaded.org.apache.commons.io.FileUtils.readFileToString(FileUtils.java:1711)
    at com.amazon.ws.emr.hadoop.fs.shaded.org.apache.commons.io.FileUtils.readFileToString(FileUtils.java:1748)
    at com.amazon.ws.emr.hadoop.fs.util.UserData.getUserData(UserData.java:62)
    at com.amazon.ws.emr.hadoop.fs.util.UserData.<init>(UserData.java:39)
    at com.amazon.ws.emr.hadoop.fs.util.UserData.ofDefaultResourceLocations(UserData.java:52)
    at com.amazon.ws.emr.hadoop.fs.util.AWSSessionCredentialsProviderFactory.buildSTSClient(AWSSessionCredentialsProviderFactory.java:52)
    at com.amazon.ws.emr.hadoop.fs.util.AWSSessionCredentialsProviderFactory.<clinit>(AWSSessionCredentialsProviderFactory.java:17)
    at com.amazon.ws.emr.hadoop.fs.rolemapping.DefaultS3CredentialsResolver.resolve(DefaultS3CredentialsResolver.java:22)
    at com.amazon.ws.emr.hadoop.fs.guice.CredentialsProviderOverrider.override(CredentialsProviderOverrider.java:25)
    at com.amazon.ws.emr.hadoop.fs.s3.lite.executor.GlobalS3Executor.executeOverriders(GlobalS3Executor.java:130)
    at com.amazon.ws.emr.hadoop.fs.s3.lite.executor.GlobalS3Executor.execute(GlobalS3Executor.java:86)
    at com.amazon.ws.emr.hadoop.fs.s3.lite.AmazonS3LiteClient.invoke(AmazonS3LiteClient.java:184)
    at com.amazon.ws.emr.hadoop.fs.s3.lite.AmazonS3LiteClient.doesBucketExist(AmazonS3LiteClient.java:90)
    at com.amazon.ws.emr.hadoop.fs.s3n.Jets3tNativeFileSystemStore.ensureBucketExists(Jets3tNativeFileSystemStore.java:139)
    at com.amazon.ws.emr.hadoop.fs.s3n.Jets3tNativeFileSystemStore.initialize(Jets3tNativeFileSystemStore.java:116)
    at com.amazon.ws.emr.hadoop.fs.s3n.S3NativeFileSystem.initialize(S3NativeFileSystem.java:508)
    at com.amazon.ws.emr.hadoop.fs.EmrFileSystem.initialize(EmrFileSystem.java:111)
    at org.apache.hadoop.fs.FileSystem.createFileSystem(FileSystem.java:2859)
    at org.apache.hadoop.fs.FileSystem.access$200(FileSystem.java:99)
    at org.apache.hadoop.fs.FileSystem$Cache.getInternal(FileSystem.java:2896)
    at org.apache.hadoop.fs.FileSystem$Cache.get(FileSystem.java:2878)
    at org.apache.hadoop.fs.FileSystem.get(FileSystem.java:392)
    at org.apache.spark.deploy.DependencyUtils$.org$apache$spark$deploy$DependencyUtils$$resolveGlobPath(DependencyUtils.scala:190)
    at org.apache.spark.deploy.DependencyUtils$$anonfun$resolveGlobPaths$2.apply(DependencyUtils.scala:146)
    at org.apache.spark.deploy.DependencyUtils$$anonfun$resolveGlobPaths$2.apply(DependencyUtils.scala:144)
    at scala.collection.TraversableLike$$anonfun$flatMap$1.apply(TraversableLike.scala:241)
    at scala.collection.TraversableLike$$anonfun$flatMap$1.apply(TraversableLike.scala:241)
    at scala.collection.IndexedSeqOptimized$class.foreach(IndexedSeqOptimized.scala:33)
    at scala.collection.mutable.WrappedArray.foreach(WrappedArray.scala:35)
    at scala.collection.TraversableLike$class.flatMap(TraversableLike.scala:241)
    at scala.collection.AbstractTraversable.flatMap(Traversable.scala:104)
    at org.apache.spark.deploy.DependencyUtils$.resolveGlobPaths(DependencyUtils.scala:144)
    at org.apache.spark.deploy.SparkSubmit$$anonfun$prepareSubmitEnvironment$3.apply(SparkSubmit.scala:354)
    at org.apache.spark.deploy.SparkSubmit$$anonfun$prepareSubmitEnvironment$3.apply(SparkSubmit.scala:354)
    at scala.Option.map(Option.scala:146)
    at org.apache.spark.deploy.SparkSubmit.prepareSubmitEnvironment(SparkSubmit.scala:354)
    at org.apache.spark.deploy.SparkSubmit.submit(SparkSubmit.scala:143)
    at org.apache.spark.deploy.SparkSubmit.doSubmit(SparkSubmit.scala:86)
    at org.apache.spark.deploy.SparkSubmit$$anon$2.doSubmit(SparkSubmit.scala:924)
    at org.apache.spark.deploy.SparkSubmit$.main(SparkSubmit.scala:933)
    at org.apache.spark.deploy.SparkSubmit.main(SparkSubmit.scala)

userData.json 不是我的应用程序的一部分,看起来它是 emr 内部的。

任何想法有什么问题吗?我通过 livy requests 提交工作。 集群设置: 2 个核心节点 m4.large 7 个任务节点 m5.4xlarge 1 个主节点 m5.xlarge

【问题讨论】:

  • 可能dupe
  • 我不认为这是相关的,除非这是亚马逊做错的事情。此 SO 中的目录是 EMR 的内部目录,而不是 spark 作业的目标目录。

标签: amazon-web-services apache-spark amazon-emr


【解决方案1】:

我在 AWS EMR emr-5.24.1(spark 2.4.1) 中遇到过类似的问题,但工作从未失败。

【讨论】:

  • 我实际上意识到它并没有失败,但仍然不知道是什么
  • AWS Glue 开发终端节点上的 Spark 2.4.3 - 也显示相同的错误..烦人..
【解决方案2】:

解决此问题的正确方法是在启动 EMR 时将以下命令作为引导脚本的一部分运行(或者,如果在 Glue 端点上运行,则在端点上的任意位置运行以下命令):

chmod 444 /var/aws/emr/userData.json

【讨论】:

  • 好的,我使用 root 用户 ssh 进入我的胶水 EMR 开发人员端点,并尝试运行此命令,但它显示不允许操作。然后用sudo试了一下,不知道root的密码。我可以从哪里得到它的任何想法?
  • 正确,根本原因是/var/aws/emr/userData.json默认权限为440,-r--r--r-- 1 hadoop hadoop /var/aws/emr/userData.json,如果与其他用户一起运行则存在权限问题。
  • @AnumSheraz - 你使用过引导脚本吗? docs.aws.amazon.com/emr/latest/ManagementGuide/…
  • 你知道如何在 scala 脚本中运行这个命令吗? @EricMeadows
  • @Doe - 据我所知,由于操作的启动方式,我不相信它可以在运行时完成。引导脚本最好:)。
猜你喜欢
  • 1970-01-01
  • 2016-07-22
  • 1970-01-01
  • 1970-01-01
  • 2021-08-19
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多