Рубрики
Без рубрики

Запуск Apache Zeppelin в облаке

Изучайте и исследуйте мир ноутбуков, например Apache Zeppelin, как его установить с помощью контейнера docker, а затем сделайте то же самое в облаке. С тегами apache zeppelin, java, graalvm, cloud.

Этот пост будет состоять из практических частей двух постов, один из которых был написан в конце прошлого года, а другой – пару месяцев назад соответственно. Сообщения были Apache Zeppelin: stairway to notes* haven! (конец декабря 2018 года) и Запуск ваших ноутбуков JuPyTer в облачной инфраструктуре Oracle (начало сентября 2019 года). Хотя на этот раз мы собираемся заставить Apache Zeppelin работать на Oracle Cloud Infrastructure .

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

Также для краткости мы будем использовать термин OCI при упоминании Oracle Cloud Infrastructure во всей остальной части поста. В некоторых случаях я давал гиперссылки и перенаправлял читателя (с небольшим количеством повествования) с повторяющимися шагами в сообщении, а в некоторых случаях я выражал эти шаги буквально в сообщении, адаптированном к текущей теме, т.е. Apache Zeppelin на OCI .

Пожалуйста, не используйте буквально такую информацию, как DNS или IP-адреса, или любые другие сведения непосредственно из скриншотов или текстовых областей в этом посте и из связанных. Эти детали могут отличаться в вашем случае, поэтому, пожалуйста, постарайтесь следовать идеям и принципам, лежащим в основе процесса. Вы должны использовать сведения, которые отображаются в вашей консоли или интерфейсе браузера, когда вы настраиваетесь на своей стороне, как указано в сообщении.

Итак, чтобы начать, нам нужно иметь учетную запись на OCI , которую очень просто настроить. Я предлагаю прочитать приведенные ниже разделы из поста Запуск ваших записных книжек Jupiter в Oracle Cloud Infrastructure (предоставлены скриншоты, помогающие перемещаться по шагам):

  • Вступление
  • Регистрация
  • Установка

****

****

  • Действия, чтобы попасть в облако

И мы останавливаемся в тот момент, когда доходим до конца раздела Действия, чтобы попасть в облако . Но, пожалуйста, убедитесь, что вы устанавливаете все по пути, чтобы иметь под рукой инструменты, необходимые для остальной части поста. Пропустите все, что появляется Jupyter notebooks , поскольку мы будем настраивать Apache Zeppelin далее.

Когда мы закончим вышесказанное, мы окажемся в хорошей точке, так как у нас будет экземпляр виртуальной машины, доступный как из браузера, так и из CLI. И затем мы можем выполнить дальнейшие шаги по установке Apache Zeppelin и старт. Запишите Общедоступный IP-адрес экземпляра виртуальной машины, созданного выше, прежде чем продолжить, в моем случае это 132.145.60.249 .

Если вы уже знакомы с Zeppelin и чувствуете себя с ним как дома, и уверены в себе после беглого просмотра поста: Apache Zeppelin: stairway to notes* haven! вы можете напрямую перейти к следующему разделу в сообщении, т.е./| Запуск Apache Zeppelin |/.

Но чтобы познакомиться с Apache Zeppelin если вы не использовали его в прошлом, я предлагаю медленно просмотреть сообщение: Apache Zeppelin: stairway to notes* haven! и заставьте его работать на вашем локальном компьютере. Мы будем предпринимать дальнейшие шаги, чтобы заставить его работать в облаке, т.е. OCI . Просто для вашей информации, когда был написан пост, мы использовали Apache Zeppelin 0.8.0, Spark 2.4.3 и запустили его поверх GraalVM 1.0.0-rc10, как это было в комплекте с изображением docker neomatrix369/zeppelin:0.1 с тех пор все пошло своим чередом. Для этого поста мы решили использовать более поздние версии, такие как Apache Zeppelin 0.8.1, Spark 2.4.4 и GraalVM 19.2.0.1, и вы можете получить к ним доступ через изображение docker neomatrix369/zeppelin:0.2 .

Примечание: Я отказался от Apache Zeppelin 0.8.0 и 0.8.2 для этого поста, поскольку он ввел новые вещи, которые вызывают регрессию в нашем рабочем процессе, для всех целей и задач этого поста мы можем использовать Apache Zeppelin 0.8.1. Версия 0.8.0 выдает эта ошибка (устранена в версии 0.8.1), когда мы пытаемся запустить абзац с кодом Scala.

Кроме того, если вы уже заметили, the Zeppelin world call записные книжки как примечания , ячейки |/как пункты и так далее.

Сейчас мы будем запускать Apache Zeppelin непосредственно в облаке, поскольку у нас уже был опыт его запуска на локальном компьютере. Для некоторых из вас это может быть несложно, так как шагов не так много, и сделать это довольно просто, поскольку мы уже заложили основу для этого. Просто для ясности, те же инструкции применимы к голому металлу или экземпляру виртуальной машины.

Затем вы можете ввести ssh в поле (см. docs о подключении через ssh ) и выполнить остальные действия, описанные ниже:

### ### Образы Oracle Linux и CentOS, имя пользователя: opc ### образ Ubuntu, имя пользователя: ubuntu $ ssh -i ~/.ssh/id_rsa ubuntu@132.145.60.249 или $ ssh ubuntu@132.145.60.249

и мы получаем следующее приглашение, на которое мы отвечаем “да”.:

Подлинность хоста ‘132.145.60.249 (132.145.60.249)’ не может быть установлена. Отпечаток ключа ECDSA – SHA256:USafjsySmPItXTdBOsQyiYbEdiFSa7Cs1so+9EnKC4M. Вы уверены, что хотите продолжить подключение (да/нет)? да

за которым следует эта консоль — признак того, что вы теперь вошли в виртуальную машину:

Теперь, когда мы вошли в систему и у нас есть все необходимые скрипты по адресу https://github.com/neomatrix369/awesome-ai-ml-dl/tree/master/examples/apache-zeppelin , мы можем клонировать его и запускать их.

Если у вас этого еще нет, пожалуйста, выполните следующие команды:

$ git clone https://github.com/neomatrix369/awesome-ai-ml-dl/ примеры $ cd/apache- цеппелин

Документы Docker для установки Docker на Ubuntu можно найти на сайте Docker . Также был предоставлен bash-скрипт для ускорения процесса, хотя целевой операционной системой здесь является Ubuntu 16.04 или выше:

$ ./installDocker.sh

Примечание: в случае, если вы выберете другой образ ОС во время создания виртуальной машины, вам придется установить Docker вручную с помощью документов из Docker или изменить приведенный выше сценарий, чтобы он работал для целевой ОС.

Ахтунг! очень жаль, этот процесс может занять больше времени, поэтому, пожалуйста, уходите и приготовьте себе и другим кофе, читайте xkcd , посмотрите комедию, а затем вернитесь через 15-20 минут или около того (в зависимости от пропускной способности вашей сети)!

Следовательно, мы можем выбрать продолжение или перейти к следующему шагу и использовать более старую версию образа docker.

Мы можем начать с запуска сценария сборки для создания нашего последнего контейнера Zeppelin Docker :

$=0,2 ./buildZeppelinDockerImage.sh

и мы видим, как эти сообщения пролетают мимо:

Отправка контекста сборки демону Docker 34.82кБ Шаг 1/21: ARG ZEPPELIN_VERSION Шаг 2/21: ИЗ apache/zeppelin:${ZEPPELIN_VERSION} —> 353d7641c769 Шаг 3/21: Аргумент SPARK_VERSION —> Использование кэша —> 2ca1b6703dd7 Шаг 4/21: ENV SPARK_VERSION=${SPARK_VERSION:-2.4.3} —> Использование кэша —> f507d31d0aca Шаг 5/21: ЗАПУСТИТЕ echo “$LOG_TAG Загрузить двоичный файл Sparc” && wget -O/tmp/spark-${SPARK_VERSION}-bin-hadoop2.7.tgz http://archive.apache.org/dist/spark/spark -${SPARK_VERSION}/искра-${SPARK_VERSION}-bin-hadoop2.7.tgz —> Работает в c94542e7eb00 [ZEPPELIN_0.8.1]: Скачать двоичный файл Spark –2019-10-13 19:55:16– http://archive.apache.org/dist/spark/spark-2.4.4/spark-2.4.4-bin-hadoop2.7.tgz Сохранение в: ‘/tmp/spark-2.4.4-bin-hadoop2.7.tgz’ Сохранение в: ‘/tmp/spark-2.4.4-bin-hadoop2.7.tgz’ ………………………. 94% 51,4Тыс. 3м0с 213400K ………………………………………. 94% 88,1K 2m59s 213450K ………………………………………. 95% 58,7K 2m59s 213500K ………………………………………. 95% 45,5K 2m58s 213550K ………………………………………. 95% 4,40М2 57s 213600K ………………………………………. 95% 83,8K 2m56s 213650K ………………………………………. 95% 91,9K 2m55s 213700K ………………………………………. 95% 67,2K 2m55s 213750K ………………………………………. 95% 166K 2m54s 213800K ………………………………………. 95% 79,8Тыс. 2m53s [–обрезано–] Шаг 21/21: CMD [“bin/zeppelin.sh “] —> Работает в 843684f60302 Извлечение промежуточного контейнера 843684f60302 —> 5833f13ff7c7 Успешно построен 5833f13ff7c7 Успешно помечено neomatrix369/zeppelin:0.2

Вы заметили, у нас есть несколько изменений:

  • изменения, внесенные в Zeppelin-Dockerfile)
  • сценарии сборки и запуска также выглядят по-разному (buildZeppelinDockerImage.ш и runZeppelinDockerImage.sh )
  • и мы также используем, чтобы увидеть использование CLI в сообщении

Надеюсь, все это начинает обретать смысл (я давал намеки, когда мы говорили, что дела пошли дальше …).

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

$=0,2 ./push-apache-zeppelin-docker-image-to-hub.sh

Хотя обратите внимание, что он ожидает нескольких вещей:

  • учетная запись на Docker Hub (т.е. neomatrix369 ) — конечно, ваш собственный аккаунт
  • вы вошли в свою учетную запись Docker Hub локально
  • вы настроили DOCKER_USER_NAME в своей учетной записи Docker hub

В противном случае вы будете получать сообщения об ошибках, надеюсь, они будут направлять вас до тех пор, пока вы не загрузите его.

Примечание: в нашем случае у нас есть доступ к образу docker на Docker hub, см. neomatrix369/цеппелин на Docker Hub .

Мы загрузим уже созданные изображения, размещенные на Docker Hub:

Версия 0.1 (Apache Zeppelin 0.8.0, Spark 2.4.3, GraalVM 1.0.0-rc10) — старое изображение

$ docker pull neomatrix369/zeppelin:0.1 $ ./runZeppelinDockerContainer.sh

или

Версия 0.2 (Apache Zeppelin 0.8.1, Spark 2.4.4, GraalVM 19.2.0.1) — новое изображение

$ docker pull neomatrix369/цеппелин:0,2 доллара.2 ./runZeppelinDockerContainer.sh

приведенные выше команды должны привести к выводу:

ubuntu@inthan herete-20191014-0101:~/a kontzesome-ai-ml-dl/примеры/apaaizthe-zeppelin$.2nd/runZeppelinDockerContainer.sh Пожалуйста, подождите, пока сообщения журнала перестанут перемещаться, это будет признаком того, что сервис готов! (около минуты или около того) Как только служба будет готова, перейдите по ссылке http://localhost:8080 чтобы открыть домашнюю страницу Apache Zeppelin Pid dir не существует, создайте/zeppelin/run OpenJDK GraalVM CE 19.0.0 предупреждение: игнорирование опции; поддержка была удалена в версии 8.0 SLF4J: Путь к классу содержит несколько привязок SLF4J. SLF4J: Найдено связывание в [jar:file:/zeppelin/lib/interpreter/slf4j-log4j12-1.7.10.jar!/org/slf4j/impl/StaticLoggerBinder.class ] SLF4J: Найдена привязка в [jar:file:/zeppelin/lib/slf4j-log4j12-1.7.10.jar !/org/slf4j/impl/StaticLoggerBinder.class ] SLF4J: См. http://www.slf4j.org/codes.html#multiple_bindings для объяснения. SLF4J: Фактическая привязка имеет тип [org.slf4j.impl. Log4jLoggerFactory] [—обрезано—] ПРЕДУПРЕЖДЕНИЕ: метод HTTP GET, общедоступный javax.ws.rs.core. Ответ org.apache.zeppelin.rest. Учетные данные Rest Api.getCredentials(java.lang. Строка) бросает java.io . Исключение IOException,java.lang. IllegalArgumentException, не должен использовать какую-либо сущность. ПРЕДУПРЕЖДЕНИЕ: Метод (sub)resource создает заметку в org.apache.zeppelin.rest. NotebookRestApi содержит пустую аннотацию пути. ПРЕДУПРЕЖДЕНИЕ: Метод (sub)ресурса getnodelist в org.apache.zeppelin.rest. NotebookRestApi содержит пустую аннотацию пути.

Открытие заметок Apache Zeppelin в вашем браузере

Перейдите в браузер и попробуйте открыть это:

http://132.145.60.249:8080

Но это не сработает, потому что мы не открыли порт 8080 из нашей облачной сети (через Правила входа, подробнее об этом читайте здесь ) во внешний мир (общедоступный):

Нам нужно было бы добавить вышеуказанную запись в раздел Правила входа , вы можете перейти на страницу Правила входа через меню навигации: Сеть > Виртуальные облачные сети > Сведения о виртуальной облачной сети (нажав на запись VCN) > Списки безопасности, который приведет вас на страницу со списками безопасности по умолчанию . * * Нажав на список безопасности, соответствующий вашей **Виртуальной облачной сети (VCN) , вы попадете на указанную выше страницу Правила входа .

В случае, если вы все еще не можете его найти, выполните поиск по термину security используя функцию поиска на любой странице облачной консоли (см. Увеличительное стекло 🔍 вверху страницы). Это покажет вам все ** Списки безопасности по умолчанию , и нажатие на него приведет вас на страницу Правила входа выше (у вас может быть только одна запись в списке безопасности). Примечание: Вход означает трафик, поступающий в экземпляр сети/виртуальной машины.

Почему порт 8080, это потому, что мы настроили его таким образом в скриптах docker, посмотрите на sources , чтобы узнать, почему и как.

Сделав все вышесказанное: вуаля! Мы видим стартовую страницу Apache Zeppelin в браузере:

Взгляните на раздел Импорт заметки в Apache Zeppelin: лестница в рай*! далее в этом разделе вы можете увидеть, как импортировать существующие заметки и выполнять их. Как только мы импортируем и откроем примечание и запустим его, это будет выглядеть следующим образом:

При импорте этой заметки также создается файл “notes.json” в папке ~/awesome-ai-ml-dl/examples/apache-zeppelin/notebook экземпляра виртуальной машины.

Дополнительные примеры можно найти на https://github.com/dylanmei/docker-zeppelin , хотя для этого потребуется дополнительная установка и настройка сборки Apache Zeppelin .

Поскольку нам удалось успешно запустить Apache Zeppelin из экземпляра виртуальной машины, мы можем сохранить этот образ для повторного использования в будущем или поделиться им с другими. Прежде чем сделать это, я бы удалил logs и notebook папки из |/~/awesome-ai-ml-dl/examples|apache-zeppelin |/экземпляра виртуальной машины.

Создание образа экземпляра виртуальной машины можно выполнить через Вычисление> Экземпляры > Сведения об экземпляре меню навигации и Создать пользовательский образ из раскрывающегося меню Действия:

Примечание: в процессе создания пользовательского образа ваш исходный экземпляр виртуальной машины завершает работу. Это может занять менее пары минут, в зависимости от размера исходного экземпляра виртуальной машины.

После успешного создания он становится доступным среди списка пользовательских образов на выбор, когда мы в следующий раз перейдем к созданию нового экземпляра виртуальной машины:

Если все это было для вас проще простого или вы выжили без особых хлопот, тогда попробуйте все материалы для глубокого погружения, упомянутые на странице README здесь .

Чтобы иметь возможность кодировать на других языках JVM в среде Apache Zeppelin , все, что вам нужно, это дополнительные расширения — это всего лишь вопрос установки и настройки. Вы можете узнать о них все здесь вы можете увидеть, что вы также можете кодировать на Python на Apache Zeppelin . Узнайте, как вы можете написать свои собственные интерпретаторы для Apache Zeppelin . Доступ как к записной книжке, так и к интерпретаторам можно получить через Notebook API и Интерпретатор API соответственно.

[–обрезано–] 14 октября 2019 г. 1:02:40 УТРА org.glassfish.jersey.internal. Ошибки регистрируют ошибки предупреждение: Были обнаружены следующие предупреждения: ПРЕДУПРЕЖДЕНИЕ: Метод HTTP GET, общедоступный javax.ws.rs.core. Ответ org.apache.zeppelin.rest. InterpreterRestApi.list Интерпретатор(java.lang. Строка), не должна использовать какую-либо сущность. ПРЕДУПРЕЖДЕНИЕ: Метод HTTP GET, общедоступный javax.ws.rs.core. Ответ org.apache.zeppelin.rest. Учетные данные Rest Api.getCredentials(java.lang. Строка) бросает java.io . Исключение IOException,java.lang. IllegalArgumentException, не должен использовать какую-либо сущность. ПРЕДУПРЕЖДЕНИЕ: Метод (sub)resource создает заметку в org.apache.zeppelin.rest. NotebookRestApi содержит пустую аннотацию пути. ПРЕДУПРЕЖДЕНИЕ: Метод (sub)ресурса getnodelist в org.apache.zeppelin.rest. NotebookRestApi содержит пустую аннотацию пути. C

В случае, если вы создали заметку, она сохраняется в подкаталоге с именем (каталог apache zeppelin), вы можете извлечь ее с помощью scp со своего локального компьютера (см. here о том, как это сделать).

Убедитесь, что вы вышли из обоих oracle.com и cloud.oracle.com сеансы входа в систему, легко забыть один или другой. Но прежде чем сделать это, пожалуйста, также взгляните на Очистка ресурсов страница в документах — вы же не хотите, чтобы ваш экземпляр работал вечно, пока вы на него не смотрите!

После этого, похоже, нетрудно запустить службу notebook, например Apache Zeppelin на облачном провайдере, таком как OCI ( Oracle Cloud Infrastructure ).

По сути, если мы суммируем выводы из двух постов, Apache Zeppelin: stairway to notes* haven! и Запуск ваших ноутбуков JuPyTer в облачной инфраструктуре Oracle мы более или менее скажем:

Apache Zeppelin дает нам:

  • аналогичная гибкость, как у ноутбуков Jupyter, и позволяет расширять функциональность с помощью конфигураций и расширений
  • ход выполнения для каждого абзаца (для каждой ячейки) всегда отображается (в режиме реального времени), в отличие от Jupiter тетради
  • отложенное выполнение для повышения эффективности
  • возможность навигации туда и обратно между табличными данными и визуализацией в ячейке (абзаце)
  • время от времени выполнение может казаться немного медленнее, чем в ноутбуках Jupyter
  • но есть решения, позволяющие ускорить это (для освещения в будущих сообщениях)
  • в целом, отличное место для разработчиков Java/JVM, чтобы чувствовать себя как дома и проводить эксперименты domi на JVM

OCI дает нам:

  • простая в использовании облачная среда
  • быстро настройте нашу среду, чтобы вывести на рынок наши приложения и решения, которые мы хотим быстро вывести на рынок
  • позволяет нам запускать Apache Zeppelin (изначально или через образ Docker)
  • экземпляры, которые могут быть общедоступными или частными, в зависимости от настроек сетевой безопасности
  • предоставляет способы защиты вашей инфраструктуры в облаке (мы не рассматривали это здесь подробно), но, пожалуйста, ознакомьтесь с документами по безопасности на странице OCI docs , чтобы узнать больше.

Пожалуйста, следите за этим пространством и делитесь своими комментариями, отзывами или любым вкладом, который поможет нам всем учиться и расти до @theNeomatrix369 , вы можете узнать больше обо мне через * [ Страница обо мне* ]( http://neomatrix369.worpress.com/aboutme ) . **

Apache Zeppelin

Докер

OCI/Облако

Безопасность

Обо мне

Мани Саркар – увлеченный разработчик, в основном в области Java/JVM, в настоящее время укрепляющий команды и помогающий им ускоряться при работе с небольшими командами и стартапами, в качестве внештатного инженера-программиста/data/ml engineer, подробнее ….

Твиттер: @theNeomatrix369 | GitHub: @neomatrix369

Оригинал: “https://dev.to/neomatrix369/running-apache-zeppelin-on-the-cloud-30ke”