pyspark java .lang.OutOfMemoryError: G C превышен предел накладных расходов - PullRequest
0 голосов
/ 11 апреля 2020

Я пытаюсь обработать, 10 ГБ данных с использованием spark выдаёт мне эту ошибку,

java .lang.OutOfMemoryError: G C Превышен предел накладных расходов

Конфигурация ноутбука: 4CPU, 8 логических ядер, 8 ГБ ОЗУ

Конфигурация Spark при отправке задания зажигания.

spark = SparkSession.builder.master('local[6]').config("spark.ui.port", "4041").appName('test').getOrCreate()
spark.conf.set("spark.executor.instances", 1)
spark.conf.set("spark.executor.cores", 5)

После поиска inte rnet об этой ошибке, У меня есть несколько вопросов

Если ответит, это было бы очень полезно.

1) Spark находится в подсистеме вычисления памяти, для обработки 10 ГБ данных в системе должно быть 10 + ГБ ОЗУ. , Spark загружает 10 ГБ данных в оперативную память объемом 10+ ГБ и затем выполняет эту работу?

2) Если пункт 1 верен, то как крупные компании обрабатывают 100 ТБ данных, обрабатывают ли они 100 ТБ данных путем кластеризации? несколько систем, чтобы сформировать 100 + ТБ ОЗУ и затем обработать 100 ТБ данных?

3) Нет ли другого способа обработать 50 ГБ данных с 8 ГБ ОЗУ и 8 ядрами, установив правильные конфигурации искры? Если это то, что является способом и какими должны быть конфигурации свечей.

4) Какая должна быть идеальная конфигурация свечей, если в системе установлены 8 ГБ ОЗУ и 8 ядер? для обработки 8 ГБ данных

конфигурация spark должна быть определена в конфигурации config.

spark = SparkSession.builder.master('local[?]').config("spark.ui.port", "4041").appName('test').getOrCreate()
spark.conf.set("spark.executor.instances", ?)
spark.conf.set("spark.executor.cores", ?)

spark.executors.cores =?

spark.executors.memory =?

spark.yarn.executor.memoryOverhead =?

spark.driver.memory =?

spark.driver.cores =?

spark.executor. instances =?

Количество основных экземпляров =?

spark.default.parallelism =?

1 Ответ

0 голосов
/ 14 апреля 2020

Надеюсь, что следующее поможет, если не все прояснить.

1) Spark - это вычислительный движок в памяти, для обработки 10 ГБ данных система должна иметь 10 ГБ ОЗУ , Spark загружает 10 ГБ данных в оперативную память объемом 10+ ГБ, а затем выполняет эту работу?

Spark, являющийся механизмом вычислений в памяти, берет данные / источник из базового озера данных или распределенной системы хранения. Файл 10 ГБ будет разбит на более мелкие блоки (размер блока 128 МБ или 256 МБ для озера данных на основе Had oop), и Spark Driver получит множество исполнителей / ядер для их чтения с рабочего узла кластера. Если вы попытаетесь загрузить данные 10 ГБ с ноутбука или с одного узла, они, безусловно, будут go нехватки памяти. Он должен загрузить все данные либо на одном компьютере, либо на нескольких подчиненных / рабочих узлах, прежде чем обрабатывать их.

2) Если пункт 1 верен, то как крупные компании обрабатывают 100 ТБ данных, обрабатывают ли они 100 ТБ данных путем кластеризации нескольких систем для формирования ОЗУ объемом более 100 ТБ, а затем обрабатывают 100 ТБ данных ?

Большой проект обработки данных проектирует слой хранения и доступа с большим количеством шаблонов проектирования. Они просто не сбрасывают ГБ или ТБ данных в файловую систему, такую ​​как HDFS. Они используют разделы (например, данные транзакций продаж делятся на месяц / неделю / день), а для структурированных данных доступны различные форматы файлов (особенно столбчатые), которые помогают распределять только те столбцы, которые необходимы для обработки. Таким образом, правильный формат файла, разбиение на разделы и сжатие являются ключевыми атрибутами для больших файлов.

3) Нет ли другого способа обработать 50 ГБ данных с 8 ГБ ОЗУ и 8 ядрами, установив правильные конфигурации искры? Если это то, что является способом и какими должны быть конфигурации искры.

Очень маловероятно, если нет раздела, но есть способы. Это также зависит от того, что это за файл. Вы можете создать пользовательский потоковый считыватель файлов, который может читать логический блок и обрабатывать его. Тем не менее, предприятие не считывает 50 ГБ одного файла, который представляет собой одну единицу. Даже если вы загрузите файл Excel размером 10 ГБ на свой компьютер с помощью инструмента Office, он будет go нехватки памяти.

4) Какая должна быть идеальная конфигурация искры, если системные свойства составляют 8 ГБ ОЗУ и 8 ядер? для обработки 8 ГБ данных

Оставьте 1 ядро ​​и 1 ГБ или 2 ГБ для ОС и используйте оставшиеся для обработки. Теперь зависит от того, какой тип преобразования выполняется, вам нужно выбрать память для драйвера и рабочих процессов. Ваш драйвер должен иметь 2 ГБ оперативной памяти. Но ноутбук в первую очередь для игровой площадки, чтобы изучить синтаксис кода и не подходит для большого набора данных. Лучше создать свою логику c с помощью dataframe.sample (), а затем набрать sh код для большей машины, чтобы сгенерировать вывод.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...