Spark - постоянный RDD с памятью уровня хранения и дисковым сервером не сохраняет данные на диск

У меня есть машина с 4 кластерами (1 мастер и 3 рабочих), каждая машина с 4 ядрами и 16 ГБ памяти, и я использую 2 ядра и 8 ГБ памяти на рабочий узел.

Итого всего 6 ядер с 24 ГБ памяти.

У меня есть файл данных 5 ГБ в формате hdf с 41 блоком, каждый блок имеет 128 МБ.

Я запускаю искровое приложение через SparkLauncher(),

Мое искровое приложение - алгоритм Байеса, написанный на Scala, и я запускаю его через Java.

Я устал сохраняющиеся org.apache.spark.mllib.regression.LabeledPoint СДР в обоих Java (rddLabeledPoints.persist(StorageLevel.MEMORY_AND_DISK_SER())) и Скала (rdd.persist(StorageLevel.MEMORY_AND_DISK_SER))

Каждый раз, когда я запускаю свое приложение, оно вычисляет до 12 задач и сохраняет разделы в памяти, но после этого оно начинает выбрасывать heap space and out of memory exceptions и более того, он даже не хранит ни одного раздела на диске.

Версия Spark - 1.6.2, версия hadoop - 2.6.0, а кластерная ОС - Ubuntu.

Почему это поведение? Даже когда достаточно места доступно. (См. Второе изображение) И почему объем памяти на раздел примерно в 5 раз превышает размер блока, даже когда я использую сериализатор kryo.

Примечание. Когда я сделал снимок экрана с одним из исключений рабочего узла, он очистил все данные раздела этого узла, поэтому на втором изображении видны только два рабочих узла.

Прикрепление снимков экрана для справки Детали этапа работы

Информация о хранилище

0 ответов

Другие вопросы по тегам