Я получаю java.lang.OutOfMemoryError с моим заданием Spark, хотя используется только 20% всей памяти.
Я пробовал несколько конфигураций:
- 1x n1-highmem-16 + 2x n1-highmem-8
- 3x n1-highmem-8
Мой набор данных состоит из 1,8 млн записей, прочитанных из локального файла json на главном узле. Весь набор данных в формате json составляет 7 ГБ. Задание, которое я пытаюсь выполнить, включает в себя простое вычисление, за которым следует метод reduceByKey. Ничего экстраординарного. Работа выполняется нормально на моем единственном домашнем компьютере с оперативной памятью всего 32 ГБ (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"))