我的 Spark 作业出现 java.lang.OutOfMemoryError,即使只有 20% 的总内存在使用中。
我尝试了几种配置:
- 1x n1-highmem-16 + 2x n1-highmem-8
- 3x n1-highmem-8
我的数据集包含 180 万条记录,从主节点上的本地 json 文件中读取。整个json格式的数据集是7GB。我正在尝试执行的工作涉及一个简单的计算,然后是一个 reduceByKey。没什么特别的。这项工作在我只有 32GB 内存 (xmx28g) 的单台家用计算机上运行良好,尽管它需要对磁盘进行一些缓存。
作业通过 spark-submit 在服务器本地 (SSH) 提交。
堆栈跟踪和 Spark 配置可以在这里查看:https ://pastee.org/sgda
编码
val rdd = sc.parallelize(Json.load()) // load everything
.map(fooTransform) // apply some trivial transformation
.flatMap(_.bar.toSeq) // flatten results
.map(c => (c, 1)) // count
.reduceByKey(_ + _)
.sortBy(_._2)
log.v(rdd.collect.map(toString).mkString("\n"))