【问题标题】:FileNotFoundException when submitting to Spark Cluster提交到 Spark 集群时出现 FileNotFoundException
【发布时间】:2014-09-22 08:17:06
【问题描述】:

我使用 Apache Spark 创建了一个小型应用程序,当我在本地运行该应用程序时,一切运行良好。但是当我将它提交到 6 节点集群时,我得到了 FileNotFoundException,因为他找不到输入文件。

这是我的小应用程序。

def main (args: Array[String]) {
  val sparkContext = new SparkContext(new SparkConf())
  val tweets = sparkContext.textFile(args(0))

  tweets.map { line => (line, LanguageDetector.create().detect(line)) }
     .saveAsTextFile("/data/detected")
}

我使用以下命令提交申请:

/opt/spark-1.0.2-bin-hadoop2/bin/spark-submit --class YarnTest --master spark://luthor-v1:7077 lang_detect.jar twitter_data 

提交后我得到以下异常:

Exception in thread "main" org.apache.spark.SparkException: Job aborted due to stage failure: Task 0.0:1 failed 4 times, most recent failure: Exception failure in TID 6 on host luthor-v5: java.io.FileNotFoundException: File file:/opt/bb/twitter_data does not exist

文件肯定有,jar和文件在同一个目录下,可以解析完整路径。

提前致谢

【问题讨论】:

  • 您是否也尝试过输入文件扩展名?这可能是问题的原因。
  • 尝试给出输入文件的完整路径(例如:/root/twitter_data)。它存在于所有工人身上吗?
  • @DanOsipov 不,该文件并不存在于所有工作节点上。它仅驻留在主节点上。我猜那是我的问题。我可以按照下面的建议将我的文件存储在 HDFS 集群上。
  • 我遇到了和 OP 一样的问题。我已将文件复制到 HDFS,但仍然出现同样的错误。有什么建议吗?

标签: scala cluster-computing apache-spark filenotfoundexception


【解决方案1】:

spark-submit 假定jar 位于当前工作目录中,并且提到的文件在 hdfs 中。将您的文件 twitter_data 从本地文件系统复制到 hdfs,如下所示:

hadoop fs -copyFromLocal twitter_data /twitter_data

它将文件复制到hdfs的/目录中。现在运行命令:

spark-submit --class YarnTest --master spark://luthor-v1:7077 lang_detect.jar /twitter_data

【讨论】:

  • 我遇到了和 OP 一样的问题。我已将文件复制到 HDFS,但仍然出现相同的错误。有什么建议吗?
  • 有没有办法让 Spark 上下文做到这一点?我不想手动将文件放入 HDFS。它不能自己做吗
  • @salvob 请参阅this 问题。
【解决方案2】:

Hadoop 配置目录“spark-env.sh”可能不正常。请检查一下。应该是:“your_hadoop_dir /etc/hadoop/

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2019-08-26
    • 1970-01-01
    • 2019-04-09
    • 2019-04-17
    • 2015-05-05
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多