2014-10-16 4 views
1

У меня есть кластер из 3 узлов. Запуск обоих Hadoop 2.4.1 и Spark 1.1.0 (версия, скомпилированная для запуска на Hadoop). Когда я запускаю свое приложение (которое читает и записывает в HDFS результат SQL-запроса Spark) в режиме «пряжа-клиент», оно работает отлично, но когда я запускаю в пряжи-кластере, я замечаю, что только сервер имеет исполнителей.Задачи искры, выполняемые только на сервере в режиме кластеров пряжи

Я вижу приложение в

http://<server>:8088/cluster 

нажмите на нее, чтобы увидеть детали задачи, время выполнения, и т.д., и откройте Спарк Application Master URL отслеживания:

http://<server>:8088/proxy/application_id/ 

В этом URL я обратите внимание, что на вкладке ИСПОЛНИТЕЛИ у меня только есть исполнители из namenode

Вот как я запускаю свое приложение

$ bin/spark-submit --class "categoriasFacturas" --master yarn-cluster --num-executors 3 --driver-memory 512m --executor-memory 512m target/scala-2.10/merge-categoria_2.10-1.0.jar 

Ведомые файлы как в искры, так и в hadoop имеют те же 3 узла, которые указаны в списке, сервер и другие 2 машины. HDFS, по-видимому, хорошо сконфигурирован для

http://<server>:50070/dfshealth.html 

Я вижу, что емкость DFS представляет собой объединенный размер трех машин. А в живых узлах есть 3 машины.

Как я могу убедиться, что рабочая нагрузка приложения разделена на узлы кластера?

P.S: Проводка всех файлов конфигурации загромождает вопрос, поэтому, пожалуйста. Если вам нужна дополнительная информация, пожалуйста, спросите, и я буду комментировать.

ответ

2

Конфликт на сайте-пряже.xml, он был сконфигурирован на главном узле и скопирован через кластер. Это выглядело так:

<property> 
    <name>yarn.resourcemanager.resource-tracker.address</name> 
    <value>localhost:8025</value> 
</property> 
<property> 
    <name>yarn.resourcemanager.scheduler.address</name> 
    <value>localhost:8030</value> 
</property> 
<property> 
    <name>yarn.resourcemanager.address</name> 
    <value>localhost:8050</value> 
</property> 

Менеджер ресурсов указал на localhost вместо namenode. Изменено на «сервер».

<property> 
    <name>yarn.resourcemanager.resource-tracker.address</name> 
    <value>server:8025</value> 
</property> 
<property> 
    <name>yarn.resourcemanager.scheduler.address</name> 
    <value>server:8030</value> 
</property> 
<property> 
    <name>yarn.resourcemanager.address</name> 
    <value>server:8050</value> 
</property> 

Теперь рабочая нагрузка распределяется по кластеру. Tho 'Теперь я столкнулся с проблемой, что я не могу видеть Master Application Spark (подробности о запущенном приложении), но я увижу, что я могу сделать.

+0

Я делаю правильную конфигурацию, как вы сказали выше, но она все еще работает только на одном узле, знаете ли вы, почему? – anunixercoder

Смежные вопросы