在Amazon EC2中以群集模式在Spark中读取文件

时间:2015-09-22 14:35:29

标签: hadoop amazon-ec2 apache-spark

我尝试使用

在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仍然无法读取文件。知道我做错了什么。感谢。

1 个答案:

答案 0 :(得分:0)

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

  • 该文件是否真的在持久性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

请尝试这些东西,我希望他们能为你服务。