Как я могу убедиться, что DSE Spark Shell распространяется по кластеру

Можно ли проверить из оболочки Spark, какие узлы подключены к кластеру или работают только в локальном режиме? Я надеюсь использовать это для исследования следующей проблемы:

Я использовал DSE для настройки небольшого кластера Cassandra Analytics из 3 узлов. Я могу войти на любой из трех серверов, запустить dse spark и запустить оболочку Spark. Я также проверил, что на всех трех серверах настроен мастер Spark, запустив dsetool sparkmaster.

Однако, когда я запускаю любую задачу с помощью оболочки Spark, кажется, что она выполняется только локально. Я запустил небольшую тестовую команду:

val rdd = sc.cassandraTable("test", "test_table")
rdd.count

Когда я проверяю веб-страницу Spark Master, я вижу, что задание выполняется только на одном сервере.

Я подозреваю, что когда я запускаю dse spark, он запускает оболочку в локальном режиме. Я посмотрел, как указать мастер для оболочки Spark 0.9.1, и даже когда я использую MASTER=<sparkmaster> dse spark (из Руководство по программированию), он по-прежнему работает только в локальном режиме.


person egerhard    schedule 23.09.2014    source источник


Ответы (1)


Вот пошаговое руководство после того, как вы запустили кластер DSE 4.5.1 с 3 узлами, настроенными для режима Analytics Spark.

Как только кластер запущен и запущен, вы можете определить, какой узел является мастером Spark, с помощью команды dsetool sparkmaster. Эта команда просто печатает текущий мастер; это не влияет на то, какой узел является ведущим, и не запускает/останавливает его.

Направьте веб-браузер на веб-интерфейс Spark Master с заданным IP-адресом и портом 7080. Вы должны увидеть 3 рабочих процесса в состоянии ALIVE и никаких запущенных приложений. (У вас могут быть некоторые рабочие процессы DEAD или завершенные приложения, если предыдущие задания Spark выполнялись в этом кластере.)

Теперь на одном узле вызовите оболочку Spark с помощью dse spark. Если вы проверите веб-интерфейс Spark Master, вы увидите одно запущенное приложение с именем «Spark shell». Вероятно, он покажет 1 выделенное ядро ​​(по умолчанию).

Если вы нажмете на ссылку идентификатора приложения ("приложение-2014..."), вы увидите подробную информацию об этом приложении, включая одного исполнителя (работника). Любые команды, которые вы даете оболочке Spark, будут выполняться на этом воркере.

Конфигурация по умолчанию ограничивает мастер Spark тем, что позволяет каждому приложению использовать только 1 ядро, поэтому работа будет возложена только на один узел.

Чтобы изменить это, войдите в главный узел Spark и отредактируйте файл /etc/dse/spark/spark-env.sh с помощью sudo. Найдите строку, которая устанавливает SPARK_MASTER_OPTS, и удалите часть -Dspark.deploy.defaultCores=1. Затем перезапустите DSE на этом узле (sudo service dse restart).

Как только он появится, проверьте основной веб-интерфейс Spark и повторите тест с оболочкой Spark. Вы должны увидеть, что ему выделено больше ядер, и любые задания, которые он выполняет, будут выполняться на нескольких узлах.

В производственной среде вам следует более тщательно устанавливать количество ядер, чтобы одно задание не занимало все ресурсы.

person BrianC    schedule 24.09.2014
comment
Спасибо, однако, похоже, у меня есть еще одна проблема, заключающаяся в том, что ни на одном из моих узлов нет каталога /etc/dse/spark/. Spark установлен и работает, я могу запустить dse spark на любом узле, и он запустится, также можно просмотреть главную страницу. Итак, вроде все установлено правильно (использовал текстовый установщик DSE 4.5.1), но spark-env.sh нет. - person egerhard; 25.09.2014
comment
Расположение будет зависеть от вашего метода установки и от того, установлена ​​ли DSE как служба. Если у вас нет /etc/dse, то, скорее всего, вы найдете файлы в /usr/share/dse/resources/spark, но они могут быть и в другом месте, в зависимости от того, где вы установили. Вы можете увидеть эту страницу конфигурации для примеров: /datastax_enterprise/4.5/ - person BrianC; 25.09.2014