Если вы работаете на локальной машине, вполне нормально просто запустить одного работника с несколькими процессорами, как показано в выводе.Он по-прежнему разделит вашу задачу о доступных процессорах в машине.
Разделение вашего файла произойдет автоматически в зависимости от количества доступных ресурсов, в большинстве случаев это работает довольно хорошо.Spark (и разбиение файлов) идет с некоторыми накладными расходами, поэтому часто, особенно на одной машине, Spark добавляет столько накладных расходов, что замедляет процесс.Добавленные значения поставляются с большими объемами данных в кластере машин.
Предполагая, что вы запускаете автономный кластер, я бы предложил использовать файлы конфигурации для настройки кластера и использовать start-all.sh
длязапустите кластер.
- сначала в вашем
spark/conf/slaves
(скопировано с spark/conf/slaves.template
добавьте IP-адреса (или имена серверов) ваших рабочих узлов. - настройте
spark/conf/spark-defaults.conf
(скопировано с spark/conf/spark-defaults.conf.template
Установите хотя бы главный узел на сервер, на котором работает ваш мастер. - Используйте
spark-env.sh
(скопировано с spark-env.sh.template
) для настройки ядер на одного работника, памяти и т. д .:
export SPARK_WORKER_CORES="2"
export SPARK_WORKER_MEMORY="6g"
export SPARK_DRIVER_MEMORY="4g"
export SPARK_REPL_MEM="4g"
Поскольку он является автономным (и не размещен в среде Hadoop), вам необходимо предоставить (или скопировать) конфигурацию (или, скорее, полный каталог spark) всем узлам в вашем кластере.Кроме того, данные, которые вы обрабатываете, должны быть доступны на всех узлах, например, напрямую из корзины или общего диска.
Как подсказывает @skjagini проверка различных файлов журнала в spark/logs/
, чтобы увидеть, чтопродолжается.Каждый узел будет записывать свои собственные файлы журнала.
См. https://spark.apache.org/docs/latest/spark-standalone.html для всех опций.
( У нас есть такая установка, работающая в течение нескольких лет, и она прекрасно работает! )