java - 在EC2上运行Spark,只使用了一个Executor(应该更多)

标签 java amazon-web-services apache-spark amazon-ec2

我使用 Spark 提供的脚本设置了一个包含两个 m1.large(应该都有 2 个核心,对吧?)实例的 Spark 集群。 经过几天的解决多个问题后,我终于成功在 EC2 上运行我的第一个 Spark 算法。

遗憾的是,我很快意识到,我的算法的运行时间并没有随着我在 Spark 提交脚本中配置的执行器数量而变化。即使我将 --master[1] 更改为 --master[2],运行时仍保持不变。如果我在本地计算机上执行此操作,运行时会显着变化,因此我想问题不应该出在算法上......

查看 Spark UI 后,我的怀疑被证明是正确的,尽管我告诉脚本使用更多执行器,但自始至终只使用了一个执行器。

我从 S3 中读取数据,如下所示:JavaRDD logData = sc.textFile("s3n://id:secret@danielssparkbucket/testFolder/file.csv").cache();"

我的spark-submit脚本调用如下所示: sudo/root/spark/bin/spark-submit --class "SimpleApp"--verbose --master local[2] --num-executors 2 --executor-核心 2/home/ec2-user/simple-project-1.0.jar

我手动将 RDD 分成 4 个分区。

有人知道出了什么问题吗?有人可以告诉我, --master local[2] 到底设置了什么以及 --num-executors 2 和 --executor-cores 2 的区别在哪里?

您好, 丹尼尔

最佳答案

--master local[2] 意味着您将拥有 1 个 Spark 进程,使用 2 个线程,其中包含驱动程序/执行程序 (PROCESS_LOCAL)。这也意味着只有 1 个执行程序,因为每个执行程序都被设计为一个单独的进程。

使用--master local[2]时,不使用这些参数:

--num-executors 2 and --executor-cores 2;

如果您有多个节点 - 您可以设置 Spark 独立集群 - cluster-launch-scripts

关于java - 在EC2上运行Spark,只使用了一个Executor(应该更多),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40802261/

相关文章:

amazon-web-services - 你如何看待亚马逊 lambda 函数的 console.log 输出

apache-spark - PySpark LinearRegressionWithSGD,模型预测维度不匹配

java - 让 GAE Shiro 和 Resteasy 协同工作

java - Java字节码中的 `Stack=1, Locals=1, Args_size=1`是什么意思?

amazon-web-services - 在 AWS EC2 上,我无法进行 wget 或 curl 或任何出站连接

amazon-web-services - 在 CloudFormation 中通过别名查找 AWS KMS ID

amazon-s3 - Apache Spark 到 S3 上传性能问题

hadoop - 流学习中的批处理学习以进行聚类

java - Object.intValue() 的奇怪行为

java - 是否可以动态访问 R.drawable 变量?