Запустите приложение spark на другой версии spark удаленно - PullRequest
0 голосов
/ 08 мая 2018

У меня есть несколько искровых тестов, которые я нормально выполняю удаленно через maven на spark 1.6.0 и использую scala. Теперь я хочу запустить эти тесты на spark2. Проблема клоудера, которая по умолчанию использует спарк 1.6. Откуда cloudera берет эту версию и что мне нужно сделать, чтобы изменить версию spark по умолчанию? Кроме того, в одном кластере присутствуют spark 1.6 и spark 2. Обе версии искры присутствуют сверху пряжи. Конфигурационные файлы hadoop присутствуют в кластере, который я использую для запуска тестов в тестовой среде, и вот так я получаю контекст spark.

def getSparkContext(hadoopConfiguration: Configuration): SparkContext ={
val conf = new SparkConf().setAppName("SparkTest").setMaster("local")     
hadoopConfiguration.set("hadoop.security.authentication", "Kerberos")
UserGroupInformation.loginUserFromKeytab("alice", "/etc/security/keytab/alice.keytab")
val sc=new SparkContext(conf)
return sc
}

Можно ли указать версию в файлах conf или в самом cloudera?

Ответы [ 2 ]

0 голосов
/ 21 мая 2018

Мне удалось успешно запустить его для свечи 2.3.0. Проблема в том, что я не смог запустить его на spark 2.3.0 ранее, потому что я добавил зависимость spark-core в pom.xml для версии 1.6. Вот почему, независимо от того, какое расположение фляги мы указали, по умолчанию он использовал spark 1.6 (все еще выясняя, почему). При изменении версии библиотеки я смог запустить ее.

0 голосов
/ 08 мая 2018

При отправке новой Spark Job, есть два места, где вы должны изменить Spark-версию:

  1. Установите SPARK_HOME на (локальный) путь, который содержит правильную установку Spark. (Иногда - особенно для небольших изменений выпуска - версия в SPARK_HOME не обязательно должна быть на 100% правильной, хотя я бы порекомендовал содержать вещи в чистоте.)
  2. Сообщите вашему кластеру, где находятся банки Spark. По умолчанию spark-submit загружает файлы jar в SPARK_HOME в ваш кластер (это одна из причин, по которой вам не следует смешивать версии). Но вы можете пропустить этот процесс загрузки, указав менеджеру кластера использовать jar-файлы, расположенные в hdfs. Поскольку вы используете Cloudera, я предполагаю, что вашим менеджером кластера является Yarn. В этом случае либо установите spark.yarn.jars, либо spark.yarn.archive на путь, в котором находятся банки для правильной версии Spark. Пример: --conf spark.yarn.jar=hdfs://server:port/<path to your jars with the desired Spark version>

В любом случае вы должны убедиться, что версия Spark, которую вы используете во время выполнения, совпадает с версией во время компиляции. Версия, указанная вами в конфигурации Maven, Gradle или Sbt, всегда должна соответствовать версии, на которую ссылаются SPARK_HOME или spark.yarn.jars.

...