【问题标题】:Reading a file in Spark in cluster mode in Amazon EC2在 Amazon EC2 中以集群模式在 Spark 中读取文件
【发布时间】:2015-09-22 23:26:56
【问题描述】:

我正在尝试在 Amazon Ec2 中使用集群模式执行 spark 程序

spark-submit --master spark://<master-ip>:7077 --deploy-mode cluster --class com.mycompany.SimpleApp ./spark.jar

并且该类有一行尝试读取文件:

JavaRDD<String> logData = sc.textFile("/user/input/CHANGES.txt").cache();

即使我能够在独立模式下阅读,我也无法在集群模式下阅读此 txt 文件。在集群模式下,它正在寻找从 hdfs 读取。所以我使用

将文件放在 /root/persistent-hdfs 的 hdfs
hadoop fs -mkdir -p /wordcount/input
hadoop fs -put /app/hadoop/tmp/input.txt /wordcount/input/input.txt

我可以使用hadoop fs -ls /workcount/input 查看该文件。但 Spark 仍然无法读取该文件。知道我做错了什么。谢谢。

【问题讨论】:

    标签: hadoop amazon-ec2 apache-spark


    【解决方案1】:

    您可能需要检查以下几点:

    • 文件真的在持久性 HDFS 中吗?

    看来您只是将输入文件从/app/hadoop/tmp/input.txt 复制到/wordcount/input/input.txt,都在节点磁盘中。我相信你误解了hadoop 命令的功能。

    相反,您应该尝试将文件显式放入持久性 HDFS (root/persistent-hdfs/),然后使用 hdfs://... 前缀加载它。

    • 持久性 HDFS 服务器是否已启动?

    请看here,似乎 Spark 默认只启动临时 HDFS 服务器。为了切换到持久 HDFS 服务器,您必须执行以下操作:

    • 1) 停止临时 HDFS 服务器:/root/ephemeral-hdfs/bin/stop-dfs.sh
    • 2) 启动持久化HDFS服务器:/root/persistent-hdfs/bin/start-dfs.sh

    请尝试这些东西,希望它们能很好地为您服务。

    【讨论】:

      猜你喜欢
      • 2019-03-03
      • 1970-01-01
      • 2019-12-30
      • 1970-01-01
      • 1970-01-01
      • 2021-12-02
      • 1970-01-01
      • 1970-01-01
      • 2017-04-17
      相关资源
      最近更新 更多