Zeppelin

Обзор

Zeppelin — это интерактивный web-блокнот (notebook), предназначенный для решения следующих задач при работе с Big Data:

  • Получение данных из различных источников. Благодаря механизму интерпретаторов (Interpreter), Zeppelin совместим фактически с любым языком программирования или платформой обработки данных.

  • Визуализация и аналитика данных. Web-интерфейс Zeppelin поддерживает множество способов визуализации результатов выполнения кода: таблицы, гистограммы (bar chart), круговые диаграммы (pie chart), линейные диаграммы (line chart), диаграммы рассеяния (scatter chart). Для добавления полей ввода можно использовать динамические формы. Кроме этого, Zeppelin позволяет добавлять html, таблицы и графики непосредственно в поля вывода. Эти и иные функции Zeppelin помогают специалистам в области данных (data scientists) получать исчерпывающую информацию для аналитики.

  • Совместная работа с данными. Zeppelin-заметки (Note) имеют собственный URL, который можно предоставить пользователям. Любые изменения в заметках отслеживаются в режиме реального времени.

Архитектура

Верхнеуровневая архитектурная схема Zeppelin представлена ниже.

arch dark
Архитектура Zeppelin
arch light
Архитектура Zeppelin

Остановимся на основных моментах схемы:

  • Пользователи подключаются к Zeppelin, используя одну из систем аутентификации. Например, Nginx, Apache Shiro и так далее.

  • Авторизованные пользователи могут работать с Zeppelin через web-интерфейс либо напрямую с Zeppelin server, используя доступные REST API.

  • Заметки (Note), создаваемые пользователями, могут храниться в различных системах. Среди них: Git, S3, MongoDB, ZeppelinHub.

  • Ключевую роль в Zeppelin играют интерпретаторы (Interpreter). Они отвечают за использование различных языков программирования и backend-систем: Spark, Python, JDBC, SQL и так далее. Интерпретаторы взаимодействуют с Zeppelin Server через Apache Thrift.

  • По умолчанию Zeppelin использует центральный Maven-репозиторий для разрешения зависимостей и загрузки библиотек, необходимых для интерпретаторов. Также существует возможность загрузки библиотек из локальной файловой системы и внешних источников. Дополнительная информация о разрешении зависимостей доступна в документации Zeppelin.

Интерпретаторы (Interpreter)

Интерпретатор (Interpreter) в Zeppelin — это плагин, который позволяет использовать определенный язык программирования или backend-платформу для извлечения и анализа данных. Например, интерпретатор %sh предназначен для запуска shell-команд, интерпретатор %jdbc — для jdbc-запросов и так далее.

Каждый интерпретатор входит в определенную группу. Интерпретаторы из одной группы запускаются в рамках одного JVM-процесса. Таким образом, группа — это средство запуска и остановки интерпретаторов. Каждая группа может включать несколько интерпретаторов, но один интерпретатор всегда принадлежит только одной группе. Например, группа интерпретаторов Spark состоит из таких интерпретаторов, как %spark, %sql, %pyspark, %ipyspark, %r, а для разрешения зависимостей использует %dep. Интерпретаторы, входящие в одну группу, могут обращаться друг к другу.

Список доступных community-интерпретаторов можно найти в документации Zeppelin. Фактически они представляют собой группы интерпретаторов. Некоторые из групп включают один интерпретатор, некоторые — несколько. Новый интерпретатор можно добавить в одну из существующих групп. Кроме этого, существует несколько сторонних (3rd party) интерпреторов — они также могут быть загружены в Zeppelin. Наконец, есть возможность создать собственный интерпретор, не входящий ни в одну из существующих групп.

В таблице ниже описаны основные действия, применимые к интерпретаторам Zeppelin.

Возможные действия с интерпрераторами
Действие Пример/Документация

Добавление нового интерпретатора в существующую группу

Пример

Создание нового интерпретатора

Документация

Установка стороннего (3rd party) интерпретатора

Пример

Заметки (Note) и параграфы (Paragraph)

Заметка (Note) в Zeppelin — это набор фрагментов кода (code snippets), написанных на языках программирования, которые поддерживаются интерпретаторами, связанными с данной заметкой. У каждой заметки есть URL-адрес, которым можно поделиться с другими пользователями.

Одна заметка может состоять из нескольких Параграфов (Paragraph). Эти параграфы могут быть как запросами к различным backend-системам, так и пояснительными текстами, построенными с помощью html, таблиц и графиков. Каждый параграф включает два раздела: программный код и результат его выполнения. Любой из этих разделов может быть скрыт.

Веб-интерфейс Zeppelin поддерживает несколько режимов отображения заметок, включая полное сокрытие программного кода.

notes dark
Структура заметок
notes light
Структура заметок
ПРИМЕЧАНИЕ
Для получения дополнительной информации о заметках и параграфах можно обратиться к документации Zeppelin.
Нашли ошибку? Выделите текст и нажмите Ctrl+Enter чтобы сообщить о ней