Диспетчеризация по всему приложению

Я хочу, чтобы запустить приложение Word Word для четырех разных файлов одновременно.

У меня есть автономный кластер с 4 рабочими узлами, каждый узел имеет одно ядро ​​и 1 Гб памяти.

spark работает в автономном режиме... 1.4 рабочих узлов 2.1 ядра для каждого рабочего узла 3.1 Гб памяти для каждого узла 4.core_max установлен в 1

./conf/spark-env.sh

**

export SPARK_MASTER_OPTS="-Dspark.deploy.defaultCores=1"
export SPARK_WORKER_OPTS="-Dspark.deploy.defaultCores=1"
export SPARK_WORKER_CORES=1
export SPARK_WORKER_MEMORY=1g
export SPARK_WORKER_INSTANCES=4

**

я выполнил, используя.sh файл

./bin/spark-submit --master spark://-Aspire-E5-001:7077 ./wordcount.R  txt1 &
./bin/spark-submit --master spark://-Aspire-E5-001:7077 ./wordcount.R  txt2 &
./bin/spark-submit --master spark://-Aspire-E5-001:7077 ./wordcount.R  txt3 &
./bin/spark-submit --master spark://-Aspire-E5-001:7077 ./wordcount.R  txt4

это правильный способ подать заявку параллельно?

когда для одного работающего приложения это занимает 2 секунды (только с использованием одного ядра), когда 4 приложения подаются одновременно, тогда каждое приложение занимает более 4 секунд...как параллельно запустить приложение spark для разных файлов?

1 ответ

Когда вы отправляете несколько заданий в спарк-кластер, мастер приложений / менеджер ресурсов автоматически планирует задания параллельно. (как искра на вершине пряжи).

Вам не нужно делать никаких дополнительных графиков для этого.

И для сценария, который вы показали, вы могли бы прочитать все разные файлы за одно задание.

И поверьте мне, из-за ленивой оценки Spark / оптимизации DAG и преобразований RDD (логические / физические планы) чтение различных файлов и подсчет слов будут идти параллельно.

Вы можете прочитать все файлы в одном задании как:

sc.wholeTextFiles("<folder-path>")

folder-path является родительским каталогом, в котором находятся все файлы.

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