Amazon EMR Spark 集群:output/result 不可见

Amazon EMR Spark Cluster: output/result not visible

我是 运行 Amazon EMR 上的 Spark 集群。我是 运行 集群上的 PageRank 示例程序。

虽然 运行 我本地机器上的程序,但我能够正确地看到输出。但同样不适用于 EMR。 S3文件夹只显示空文件。

我正在使用的命令: 启动集群:

aws emr create-cluster --name SparkCluster --ami-version 3.2 --instance-type m3.xlarge --instance-count 2 \
  --ec2-attributes KeyName=sparkproj --applications Name=Hive \
  --bootstrap-actions Path=s3://support.elasticmapreduce/spark/install-spark  \
  --log-uri s3://sampleapp-amahajan/output/ \
  --steps Name=SparkHistoryServer,Jar=s3://elasticmapreduce/libs/script-runner/script-runner.jar,Args=s3://support.elasticmapreduce/spark/start-history-server 

添加职位:

aws emr add-steps --cluster-id j-9AWEFYP835GI --steps \
Name=PageRank,Jar=s3://elasticmapreduce/libs/script-runner/script-runner.jar,Args=[/home/hadoop/spark/bin/spark-submit,--deploy-mode,cluster,--master,yarn-cluster,--class,SparkPageRank,s3://sampleapp-amahajan/pagerank_2.10-1.0.jar,s3://sampleapp-amahajan/web-Google.txt,2],ActionOnFailure=CONTINUE

在几次不成功的尝试之后...我为作业的输出创建了一个文本文件,并在我的本地机器上成功创建了它。但是当我通过 SSH 进入集群时,我无法查看相同的内容。我尝试使用 FoxyProxy 查看实例的日志,但那里没有显示任何内容。

你能告诉我哪里错了吗?

谢谢!

您如何在本地编写文本文件?通常,EMR 作业将其输出保存到 S3,因此您可以使用 outputRDD.saveToTextFile("s3n://<MY_BUCKET>") 之类的东西。您也可以将输出保存到 HDFS,但将结果存储到 S3 对 "ephemeral" 集群很有用——您可以在其中配置 EMR 集群,提交作业,并在完成后终止。

"While running the programs on my local machine, I am able to see the output properly. But the same doesn't work on EMR. The S3 folder only shows empty files"

新手福利:

如果您正在打印输出到控制台,它将以本地模式显示,但是当您在 EMR 集群上执行时,reduce 操作将在 worker 节点上执行,它们无法直接显示到 Master/Driver节点!

通过正确的路径,您应该能够将结果写入 s3。