Amazon web services 如何在EC2 t2micro实例上组装Spark(并避免“java.lang.OutOfMemoryError:java堆空间”错误)?

Amazon web services 如何在EC2 t2micro实例上组装Spark(并避免“java.lang.OutOfMemoryError:java堆空间”错误)?,amazon-web-services,amazon-ec2,sbt,apache-spark,Amazon Web Services,Amazon Ec2,Sbt,Apache Spark,我正在尝试使用sbt/sbt assembly在t2micro实例上构建Apache Spark,结果总是出现错误: [错误]java.util.concurrent.ExecutionException: java.lang.OutOfMemoryError:java堆空间 我尝试了各种在线建议的技巧,例如修改\u JAVA\u OPTS以限制内存使用量、并行线程的数量,以及限制sbt命令的内存。所有这些都没有帮助 我运行Ubuntu14.04AMI。我已经用free-m检查了空闲内存以设置上

我正在尝试使用
sbt/sbt assembly
在t2micro实例上构建Apache Spark,结果总是出现错误:

[错误]java.util.concurrent.ExecutionException: java.lang.OutOfMemoryError:java堆空间

我尝试了各种在线建议的技巧,例如修改
\u JAVA\u OPTS
以限制内存使用量、并行线程的数量,以及限制
sbt
命令的内存。所有这些都没有帮助

我运行Ubuntu14.04AMI。我已经用
free-m
检查了空闲内存以设置上述参数

注意:如果我使用Spark distribution附带的ec2脚本并指定t2.micro实例,它可以正常工作。

根据t1.micro,它的内存更少。这对于Spark(或任何Java程序)来说都是非常低的。
对于Spark,我建议使用带有4G内存的*.medium机器。

以下链接应该会有所帮助


它描述了如何调整内存以执行程序

请显示您为失败的
-Xmx
输入的值。请注意,显而易见的答案是使用比micro更大的东西。@tedder42我尝试了从128m到700m的各种
-Xmx
设置,具体取决于我在内存使用情况报告中看到的内容在micro实例的EBS驱动器上创建交换文件?它不会很快,但应该可以工作…你能包括错误的整个堆栈跟踪吗?您是否也可以在内部执行
sbt/sbt
组装
?如果错误仍然存在,您是否可以执行
last assembly
,并将输出包含到问题中?这将有助于缩小问题范围,使答案有意义。谢谢嗨,苏吉!是的,这是有道理的。但是,即使Spark的环境非常脆弱,我还是应该能够以某种方式使用SBT组装来构建它。另外,当我使用Spark EC-2脚本启动t1.micro时,实例正在设置中,Spark运行没有问题。显然,我可以切换到更强大的机器,但现在理解它很有趣。另外,AWS免费层只允许微实例——因为我处于实验阶段,所以在EC2上免费练习Spark将非常有益