Как использовать другую версию Spark (Spark 2.4) на кластере YARN, развернутом с Spark 2.1? - PullRequest
0 голосов
/ 26 декабря 2018

У меня есть кластер пряжи Hortonworks с Spark 2.1.

Однако я хочу запустить свое приложение с использованием версии 2.3+ (поскольку это требуется для существующей библиотеки ML сторонних производителей).

Нужно ли нам использовать spark-submit из версии Spark 2.1 или нам нужно отправить работу на пряжу с использованием Java или Scala с банкой FAT?Это вообще возможно?А как насчет библиотек Hadoop?

Ответы [ 2 ]

0 голосов
/ 02 января 2019

В кластере Hortonworks для запуска пользовательской версии Spark в режиме клиента / кластера пряжи необходимо выполнить следующие действия:

  1. Загрузить предварительно созданный файл Spark с соответствующей версией Hadoop
  2. Извлечь и распаковать впапка с искрами.например./home/centos/spark/spark-2.3.1-bin-hadoop2.7/
  3. Скопируйте банку из джерси в комплекте 1.19.1 в папку с банкой для искры [Скачать здесь] [1]
  4. Создайте zip-файл, содержащий все банки в папке спарочных банок.Spark-jar.zip
  5. Поместите этот файл spark-jar.zip в доступное для всех место в формате hdfs, например (hdfs dfs -put spark-jars.zip / user / centos / data / spark /)

  6. получить версию hdp (hadp-select status hadoop-client): например, вывод.hadoop-client - 3.0.1.0-187

  7. Используйте вышеуказанную версию hdp в командах экспорта ниже

  8. export HADOOP_CONF_DIR= $ {HADOOP_CONF_DIR: - / usr / hdp / 3.0.1.0-187 / hadoop / conf}

  9. export HADOOP_HOME = $ {HADOOP_HOME: - / usr / hdp / 3.0.1.0-187 / hadoop}
  10. export SPARK_HOME = / home / centos / spark / spark-2.3.1-bin-hadoop2.7 /

  11. Отредактируйте файл spark-defaults.conf в каталоге spark_home / conf, добавьте следующие записи

spark.driver.extraJavaOptions -Dhdp.version = 3.0.1.0-187

spark.yarn.am.extraJavaOptions -Dhdp.version = 3.0.1.0-187

создайте файл java-opts в каталоге spark_home / conf, добавьте следующие записи и используйте упомянутую выше версию hdp

-Dhdp.version = 3.0.1.0-187

export LD_LIBRARY_PATH = / usr / hdp / 3.0.1.0-187 / hadoop / lib / native: /usr/hdp/3.0.1.0-187/hadoop/lib/native/Linux-amd64-64 spark-shell - мастер пряжи - клиент режима развертывания --conf spark.yarn.archive = hdfs: ///user/centos/data/spark/spark-jars.zip
0 голосов
/ 26 декабря 2018

Я предполагаю, что вы используете sbt в качестве инструмента сборки в вашем проекте.Сам проект может использовать Java или Scala.Я также думаю, что ответ в целом был бы аналогичным, если бы вы использовали gradle или maven, но плагины были бы просто другими.Идея та же.


Вы должны использовать плагин сборки (например, sbt-assembly ), который собирается связать все не-1008 * зависимости, включая ApacheSpark, для создания так называемой толстой банки или uber-jar .

Если пользовательская версия Apache Spark является частью jar приложения, эта версиябудет использоваться все, что вы используете spark-submit для развертывания.Хитрость заключается в том, чтобы обмануть загрузчик классов, чтобы он загружал файлы jar и классы по вашему выбору, а не spark-submit (и, следовательно, все, что используется в кластере).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...