【发布时间】:2014-07-23 19:39:10
【问题描述】:
我正在尝试在我的单机集群上运行 spark tutorial 中的简单应用程序。我的机器上运行着 Hadoop 2.2。我正在使用带有 8GB RAM 的 mac。
steven@eva-2 /o/s/a/t/scala-2.10> jps
6160 Jps
5841 Worker
4005 SecondaryNameNode
1460 NailgunRunner
3828 NameNode
3907 DataNode
1382
4106 ResourceManager
5751 Master
4185 NodeManager
另外,我能够访问 Web UI(能够看到程序已完成但被终止)。问题是当我运行这个程序时:
import org.apache.spark.SparkContext
import org.apache.spark.SparkConf
object SimplyApp extends App {
val logFile = "/opt/spark-0.9.0-incubating-bin-hadoop2/README.md"
val conf = new SparkConf()
.setMaster("spark://eva-2.local:7077")
.setAppName("Simple App")
.set("spark.executor.memory", "1g")
val sc = new SparkContext(conf)
val logData = sc.textFile(logFile, 2).cache()
val numAs = logData.filter(line => line.contains("a")).count()
val numBs = logData.filter(line => line.contains("b")).count()
println("Lines with a: %s, Lines with b: %s".format(numAs, numBs))
println(numAs)
}
错误是:
14/06/03 20:46:19 INFO storage.BlockManagerMasterActor$BlockManagerInfo: Registering block manager 10.10.121.52:53320 with 589.2 MB RAM
14/06/03 20:46:20 WARN scheduler.TaskSetManager: Lost TID 1 (task 0.0:1)
14/06/03 20:46:20 WARN scheduler.TaskSetManager: Loss was due to java.lang.OutOfMemoryError
java.lang.OutOfMemoryError: Java heap space
我试图给它更多的内存,但仍然是同样的问题。有谁知道如何处理这个?谢谢。
【问题讨论】:
-
你试过
setMaster("local[4]")吗?那是本地模式。看起来您的从站配置错误。示例文件非常小,无法生成此错误。也不要忽视显而易见的事情:你的机器上有足够的空闲内存吗? -
你是如何启动本地集群的?
-
@maasg 嘿。我只是启动集群(奇怪,更改 IP 并且启动脚本有效)。现在,我正在尝试使用您的解决方案。我将内存更改为一个小数字,但仍然面临问题。比我将master设置为
local[4],它有效。但是我要做的是使用spark URL设置master,因为我可以在本地测试并方便地部署到集群。我说的对吗? -
你在 master 旁边部署了多少个 worker?他们有多少内存?
-
@maasg 我只在我的机器上使用一名工人。它有默认内存(因为我没有更改
spark-env.sh),即系统内存减去1GB
标签: scala out-of-memory apache-spark