Я пытаюсь настроить и запустить кластер Spark, работающий поверх YARN и использующий HDFS.
Сначала я настроил Hadoop для HDFS, используя hadoop-3.1.0.Затем я настроил YARN и запустил оба.Я был в состоянии загрузить данные в HDFS, и пряжа также, кажется, работает нормально.
Затем я установил spark-2.3.0-bin-without-hadoop только на свой мастер и попытался подать заявку.Поскольку это искра без Hadoop, мне пришлось изменить spark-env.sh, добавив следующую строку, как указано в документации:
export SPARK_DIST_CLASSPATH=$(/usr/local/hadoop/bin/hadoop classpath)
Используя только эту строку, я получил следующее исключение:
Error: Could not find or load main class org.apache.spark.deploy.yarn.ApplicationMaster
Что, я думаю, означает, что он не находит Spark-библиотеки.Поэтому я добавил банки с искрой в путь к классам:
export SPARK_DIST_CLASSPATH=$(/usr/local/hadoop/bin/hadoop classpath):/usr/local/spark/jars/*
Но теперь я получаю следующее исключение:
com.fasterxml.jackson.databind.JsonMappingException: Incompatible Jackson version: 2.7.8
Как оказалось, Hadoop 3.1.0 предоставляет Jackson 2.7.8в то время как Spark 2.3.0 обеспечивает Джексона 2.6.7.На мой взгляд, оба теперь находятся в пути к классам, что приводит к конфликту.
Поскольку мне кажется, что мне действительно нужны библиотеки Hadoop и Spark для отправки чего-либо, я не знаю, как обойти эту проблему.