2015-08-13 43 views
1

我有一个apache spark full stack +运行在机器上的Apache zeppelin,只有很少的资源(512MB)正在崩溃。如何减少apache的spark内存占用?

Spark Command: /usr/lib/jvm/java/bin/java -cp /home/ec2-user/spark-1.4.1-bin-hadoop2.6/sbin/../conf/:/home/ec2-user/spark-1.4.1-bin-hadoop2.6/lib/spark-assembly-1.4.1-hadoop2.6.0.jar:/home/ec2-user/spark-1.4.1-bin-hadoop2.6/lib/datanucleus-api-jdo-3.2.6.jar:/home/ec2-user/spark-1.4.1-bin-hadoop2.6/lib/datanucleus-core-3.2.10.jar:/home/ec2-user/spark-1.4.1-bin-hadoop2.6/lib/datanucleus-rdbms-3.2.9.jar -Xms512m -Xmx512m -XX:MaxPermSize=256m org.apache.spark.deploy.master.Master --ip ip-172-31-24-107 --port 7077 --webui-port 8080 
======================================== 
OpenJDK 64-Bit Server VM warning: INFO: os::commit_memory(0x00000000daaa0000, 357957632, 0) failed; error='Cannot allocate memory' (errno=12) 
# 
# There is insufficient memory for the Java Runtime Environment to continue. 
# Native memory allocation (malloc) failed to allocate 357957632 bytes for committing reserved memory. 
# An error report file with more information is saved as: 
# /tmp/jvm-17290/hs_error.log 

我知道这是一个坏主意,但我没有其他地方进行测试,并希望能够学习斯卡拉+ apache的火花一些代码...

有一种可以减少火花上的内存占用的方式,以便我可以测试?

感谢

+0

用这么小的记忆就没有太多的事可做。如果您没有可用的群集,请尝试使用Amazon EC2以及Spark发行版附带的脚本'spark-ec2'文件夹。 –

+0

是的我试过了,它会创建一个集群(1个主和1个工人)。我想在同一台机器上安装这两台计算机,这样我就可以在整个月内运行它... –

回答

5

阿帕奇飞艇是一个伟大的工具,但我已经看到了同样的事情,占用了大量的内存。你可以使用这个命令,就像在spark home文件夹中,bin/spark-shell会给你一个spark scala shell,但是它不够漂亮和直观。

您可以使用eclipse(scala IDE)或IntelliJ(具有scala插件)​​进行spark scala开发,只需添加带有maven或sbt的jar即可。

你可以在scala shell中做你的原型,并将粘贴复制到IDE中。

也检查出https://github.com/andypetrella/spark-notebook,它需要一个较小的RAM足迹。由它引发的火花自身需要的更少,但是齐柏林飞船从我所看到的需要大量的空间。

另外对于scala notebook:https://github.com/alexarchambault/jupyter-scala,那么你可以在env中添加火花瓶,创建sparkContext对象并使用它。 希望有所帮助。

请注意,如果有帮助upvote。

+0

与此相同,我为Zeppelin使用1 GB免费级Amazon EC2实例。并找不到失败的原因。所以,我在我的最后做的是取消Free Tier实例并创建一个更大尺寸(RAM)的实例。它工作得很好.. –

相关问题