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。
我是 运行 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。