Распределение памяти Spark - сценарий в реальном времени
Я пытаюсь найти лучший способ использовать ресурсы кластера для выполнения искрового задания. Ниже приведены сведения о моем кластере:
- Общее количество активных узлов в кластере: 100
- Общее количество ядер на каждом узле: 16 ядер
- Общее количество ядер, доступных в кластере: 100 узлов * 16 ядер = 1600 ядер
- Распределение памяти на каждом узле (RAM): 64 ГБ
- Общий объем памяти в кластере: 64 ГБ * 100 узлов = 6400 ГБ
Теперь мне нужно обработать два файла с помощью искрового задания и выполнить операцию соединения с помощью Spark sql и сохранить выходной фрейм данных в Hive Table. Два размера файлов: file1.csv (30 ГБ) и file2.csv (10 ГБ).
Итак, вот мои вопросы:
- Сколько памяти драйвера Spark (--driver-memory) мне нужно выделить и почему?
- Сколько исполнителей Spark (--num-Executors) мне нужно определить и почему?
- Сколько памяти Spark Executor (--executor-memory) мне нужно выделить и почему?
- Сколько ядер драйвера и исполнителя нужно указать?
- Сообщите мне, нужны ли дополнительные конфигурации памяти для лучшей параллельной обработки?
Заранее спасибо.