Docker — можно локально ссылаться на файл из контейнера Docker?

#docker #apache-spark #livy

#docker #apache-spark #ливи

Вопрос:

У меня есть искровой кластер, работающий в контейнере Docker (с использованием образа, который я сделал сам). Все работает нормально.

Теперь я хочу использовать Apache Livy, и в соответствии с документацией в нем говорится, что мне нужно разместить пару переменных среды: https://livy.incubator.apache.org/get-started /

 export SPARK_HOME=/usr/lib/spark
export HADOOP_CONF_DIR=/etc/hadoop/conf
  

Мой вопрос в том, что, поскольку Spark работает в Docker, а не в локальной установке, какие параметры у меня есть для ссылки на эти 2 каталога в экспорте.

На самом деле это распространенная проблема, с которой я сталкиваюсь, поэтому любая помощь в отношении лучших практик действительно поможет.

Спасибо.

Ответ №1:

Самым простым вариантом было бы установить livy вместе со spark внутри того же контейнера docker, в котором работает spark, и выставить необходимые порты снаружи.

Лучшим решением было бы создать отдельный контейнер для livy (с теми же конфигурационными файлами, которые используются в /usr/lib/spark и /etc/hadoop/conf ) и подключиться с помощью docker-network. И выставлять только внешние порты livy.

Ответ №2:

Вы можете создать том. Том — это общая папка между вашим компьютером и вашим docker.

 docker run -v /home/userName/Docker/spark:/usr/lib/spark 
           -v /home/userName/Docker/hadoop:/etc/hadoop/ 
           ...
  

Затем вы можете создать переменные среды для своего path. export SPARK_HOME=/home/userName/Docker/spark и export HADOOP_CONF_DIR=/home/userName/Docker/hadoop/conf должен работать с этим примером.