не могу добавить alluxio.security.login.username в spark-submit

У меня есть программа драйвера искры, для которой я пытаюсь настроить пользователя alluxio.

Я прочитал этот пост: Как передать -D параметр или переменную среды для задания Spark? и, хотя это полезно, ни один из методов там, кажется, не помогает.

Моя среда:

- Spark-2.2
- Alluxio-1.4
- packaged jar passed to spark-submit

Задание spark-submit выполняется от имени пользователя root (под супервизором), и alluxio распознает только этого пользователя.

Здесь я попытался добавить «-Dalluxio.security.login.username=alluxio»:

  • spark.driver.extraJavaOptions в spark-defaults.conf
  • в командной строке для spark-submit (используя --conf)
  • в файле конфигурации sparkservices моего приложения jar
  • в новом файле с именем «alluxio-site.properties» в моем приложении jar

Ни одна из этих работ не устанавливает пользователя для alluxio, хотя я легко могу установить это свойство в другом (не искровом) клиентском приложении, которое также записывает в alluxio.

Кто-нибудь может применить этот параметр в заданиях с отправкой искры?


person jb44    schedule 23.04.2017    source источник
comment
вы уверены, что используете spark 2.2? для чего именно вы используете alluxio? - если вы читаете/записываете данные: я предлагаю настроить вспомогательный класс в приложении spark, передав master-url вашего alluxio - master ex: val ds = spark.read.parquet(s"alluxio://${master}:19998/${env_param}ds.parquet").as[dsSchema]   -  person elcomendante    schedule 23.04.2017
comment
Да, я использую spark 2.2 (Snapshot). Я использую alluxio в качестве механизма кэширования данных. У меня уже есть вспомогательный класс, который делает что-то очень похожее на то, что вы упомянули. Проблема в том, что когда файлы записываются в alluxio, владельцем файлов всегда является пользователь, под которым отправляется задание spark, а НЕ имя пользователя, которое я добавляю в конфигурацию. Насколько я понимаю, я должен иметь возможность настроить пользователя файлов, написанных для искры, с помощью элемента конфигурации alluxio.security.login.username. Этот элемент конфигурации по какой-то причине не принимается spark-submit.   -  person jb44    schedule 25.04.2017
comment
У меня есть сильное подозрение (основываясь на других сообщениях), что проблема здесь связана с путем к классам и с тем, как этот путь к классам взаимодействует с файлом jar, который я отправляю в spark. Но я плохо разбираюсь во внутренней работе этих двоих. Есть ли флаг отладки, который я могу передать, или какой-либо другой способ получить больше информации о том, как jar интерпретируется с помощью spark-submit?   -  person jb44    schedule 25.04.2017
comment
да, я думаю, вы правы, скорее всего, так оно и есть, если вы используете его как внутренний механизм кэширования - отключите пароль все время, и вы избежите суеты, я построил аналогичное решение без пользователя/пароля, и оно работает в prod для некоторое время без проблем, контролировать доступ к кластеру извне по vpn, группам безопасности и т.д.   -  person elcomendante    schedule 25.04.2017
comment
Понял - спасибо за ответ. Часто следующим лучшим решением является признание того, что вы не одиноки :)   -  person jb44    schedule 26.04.2017


Ответы (1)


Если spark-submit находится в клиентском режиме, вы должны использовать --driver-java-options вместо --conf spark.driver.extraJavaOptions=..., чтобы драйвер JVM запускался с нужными параметрами. Поэтому ваша команда будет выглядеть примерно так:

./bin/spark-submit ... --driver-java-options "-Dalluxio.security.login.username=alluxio" ...

Это должно запустить драйвер с нужными параметрами Java.

Если исполнителям Spark также нужна эта опция, вы можете установить ее с помощью:

--conf "spark.executor.extraJavaOptions=-Dalluxio.security.login.username=alluxio"

person Gene Pang    schedule 05.05.2017