Цеппелин с Кубернетами. SPARK_HOME не указан в настройках интерпретатора для нелокального режима - PullRequest
0 голосов
/ 12 апреля 2019

У меня есть кластер Spark (мастер + 2 рабочих) в кластере Kubernetes (Minikube).

Я хочу добавить Zeppelin в мой кластер k8s и настроить его для использования моего кластера Spark.

Поэтому я попытался сделать это, используя Zeppelin 0.8.1 из apache / zeppelin или другое изображение, построенное на Zeppelin 0.9.0-SNAPSHOT (все еще в разработке)

Я следовал официальной документации Zeppelin (для которой требуется как минимум Zeppelin 0.9.0, хотя он еще не выпущен ¯ \ _ (ツ) _ / ¯)

Что я сделал:

  • Потянув изображение докера Zeppelin
  • Сборка здания Spark
  • Скачивание zeppelin-server.yaml из документации
  • Редактирование так, чтобы он имел правильный путь к моему локальному изображению Spark и изображению Zeppelin
  • kubectl apply -f (файлы yaml для spark и zeppelin)

Затем я просматриваю свой Блокнот Zeppelin и пытаюсь запустить небольшой искровой тест, чтобы проверить, работает ли он, но я получаю следующую ошибку:

java.lang.RuntimeException: SPARK_HOME is not specified in interpreter-setting for non-local mode, if you specify it in zeppelin-env.sh, please move that into interpreter setting 
    at org.apache.zeppelin.interpreter.launcher.SparkInterpreterLauncher.setupPropertiesForSparkR(SparkInterpreterLauncher.java:181) 
    at org.apache.zeppelin.interpreter.launcher.SparkInterpreterLauncher.buildEnvFromProperties(SparkInterpreterLauncher.java:63) 
    at org.apache.zeppelin.interpreter.launcher.StandardInterpreterLauncher.launch(StandardInterpreterLauncher.java:86) 
    at org.apache.zeppelin.interpreter.InterpreterSetting.createInterpreterProcess(InterpreterSetting.java:698) 
    at org.apache.zeppelin.interpreter.ManagedInterpreterGroup.getOrCreateInterpreterProcess(ManagedInterpreterGroup.java:63) 
    at org.apache.zeppelin.interpreter.remote.RemoteInterpreter.getOrCreateInterpreterProcess(RemoteInterpreter.java:110) 
    at org.apache.zeppelin.interpreter.remote.RemoteInterpreter.internal_create(RemoteInterpreter.java:163) 
    at org.apache.zeppelin.interpreter.remote.RemoteInterpreter.open(RemoteInterpreter.java:131) 
    at org.apache.zeppelin.interpreter.remote.RemoteInterpreter.getFormType(RemoteInterpreter.java:290) 
    at org.apache.zeppelin.notebook.Paragraph.jobRun(Paragraph.java:402) 
    at org.apache.zeppelin.notebook.Paragraph.jobRun(Paragraph.java:75) 
    at org.apache.zeppelin.scheduler.Job.run(Job.java:172) 
    at org.apache.zeppelin.scheduler.AbstractScheduler.runJob(AbstractScheduler.java:121) 
    at org.apache.zeppelin.scheduler.RemoteScheduler$JobRunner.run(RemoteScheduler.java:187) 
    at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511) 
    at java.util.concurrent.FutureTask.run(FutureTask.java:266) 
    at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.access$201(ScheduledThreadPoolExecutor.java:180) 
    at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run(ScheduledThreadPoolExecutor.java:293) 
    at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149) 
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624) 
    at java.lang.Thread.run(Thread.java:748)

Прежде всего, я вижу, что ошибка исходит от функции setupPropertiesForSparkR(), хотя я не использую Spark R.

Но главное, что я теряю, это то, что, поскольку я использую образ докера Zeppelin и Spark, я понятия не имею, как установить мой SPARK_HOME и какое значение оно должно иметь.

Примечания:

  • Я использую Spark 2.4.0
  • Я также пытался собрать образ Zeppelin вручную, но при использовании источника, находящегося в разработке, сборка не удалась)

1 Ответ

0 голосов
/ 12 апреля 2019

Вы можете настроить переменные среды, используя:

docker run --env SPARK_HOME=/path ...

Также вы можете создать том с помощью кластера Spark

docker run --env SPARK_HOME=/pathInCluster -v /pathYourSparkCluster:/pathInCluster ...
...