В этой статье мы рассмотрим, что такое Apache Zeppelin, как он полезен для интерактивной аналитики и визуализации больших данных (Big Data), а также чем этот инструмент отличается от популярного среди Data Scientist’ов и Python-разработчиков Jupyter Notebook.
Что такое Apache Zeppelin и чем он полезен Data Scientist’у
Начнем с определения: Apache Zeppelin – это интерактивный веб-блокнот (или «ноутбук» от notebook) с открытым исходным кодом, который поддерживает практически все этапы работы с данными в Data Science, от извлечения до визуализации, в т.ч. интерактивный анализ и совместное использование документов. Он интегрирован с Apache Spark, Flink, Hadoop, множеством реляционных и NoSQL-СУБД (Cassandra, HBase, Hive, PostgreSQL, Elasticsearch, Google Big Query, Mysql, MariaDB, Redshift), а также поддерживает различные языки программирования, популярные в области Big Data: Python, PySpark, R, Scala, SQL. Такая многофункциональность обеспечивается за счет интерпретаторов — плагинов для поддержки языка программирования, базы данных или фреймворка.
С точки зрения работы с большими данными, отдельного упоминания заслуживает встроенная интеграция с Apache Spark, что дает общие контексты (SparkContext и SQLContext), загрузку jar-зависимостей из локальной файловой системы или репозитория maven во время выполнения задачи, а также возможность отмены задания и отображение хода его выполнения. Также Цеппелин поддерживает работу с REST-API Apache Spark – Livy, о котором мы подробно писали здесь. Благодаря интерпретатору Python, Apache Zeppelin предоставляет все возможности этого языка, ориентированные на Data Science, например, специализированные библиотеки (Matplotlib, Conda, Pandas и пр.) для аналитики больших данных и визуализации. Это позволяет автоматически построить круговые, столбчатые и прочие наглядные диаграммы, чтобы визуализировать статистику датасета или результатов исследования. Также в Zeppelin можно создавать интерактивные дэшборды с формами ввода данных, которые будут выглядеть как веб-страницы, чтобы поделиться их URL-адресами для совместной работы. Для многопользовательского режима Zeppelin поддерживает LDAP-авторизацию с настройками доступа [1].
Впрочем, при всех этих достоинствах, на практике можно столкнуться со следующими ограничениями Apache Zeppelin, которые могут рассматриваться как недостатки [2]:
- нестабильная работа под высокой нагрузкой;
- интерактивный веб-интерфейс требует много оперативной памяти;
- отсутствие полного набора возможностей современных специализированных IDE;
- меньшая «зрелость» и популярность по сравнению с Jupyter Notebook.
Тем не менее, Apache Zeppelin завоевывает свою нишу, конкурируя с Jupyter Notebook в некоторых кейсах работы с большими данными. В каких случаях аналитику Big Data или Data Scientist’у следует предпочесть Apache Zeppelin вместо Jupyter Notebook, мы рассмотрим далее.
Apache Zeppelin vs Jupyter Notebook: что и когда выбирать для аналитики Big Data
Прежде всего, отметим, что оба инструмента относятся к open-source и являются веб-блокнотами для разработки и визуализации данных. Однако, Jupyter позиционируется как многоязычная интерактивная вычислительная среда, с поддержкой кода, уравнений, текстов, графиков и интерактивных дэшбордов. Apache Zeppelin не претендует на лавры IDE, хотя и включает некоторые функции для разработки ПО, фокусируясь на возможностях для интерактивного анализа больших данных. Разберем, как оба блокнота отличаются по следующим критериям, важных с точки зрения работы с Big Data [3]:
- безопасность и многопользовательские возможности, которые Jupyter не поддерживает по умолчанию, в отличие от Zeppelin. Кроме того, в Jupyter нет возможности обеспечения конфиденциальности конечных пользователей. Zeppelin позволяет гибко настраивать конфигурации безопасности, включая конфиденциальность программного кода, через LDAP/Active Directory и специально определенные группы безопасности. Он использует только один серверный процесс, аутентифицируя пользователей в настроенной системе, прежде чем разрешить дальнейший доступ, чтобы делиться информацией только с ограниченным кругом лиц с определенными правами.
- визуализация – благодаря возможности использовать разные интерпретаторы в одном блокноте, Zeppelin выигрывает по сравнению с Jupyter, в котором нет параметров построения диаграмм. В Jupyter есть библиотека plotly, которая выводит диаграмму в блокнот, тогда как Zeppelin поддерживает только содержимое Matplotlib – Python-библиотеку построения двумерных графиков, которая просто сохраняет вывод в HTML-файл.
- описание отчетов – оба инструмента поддерживают markdown-разметку, но Zeppelin быстрее создает интерактивные формы и визуализацию результатов. Кроме того, Цеппелин-отчеты более доступны для конечных пользователей и могут быть экспортированы в формат CSV или TSV. Zeppelin позволяет скрыть код, предоставляя читаемые интерактивные отчеты конечным пользователям.
- кластерная интеграция – Цеппелин является частью экосистемы Apache Hadoop и хорошо интегрируется со Spark, Pig, Hive и другими ее компонентами.
- удобство разработки – в отличие от Jupyter, Zeppelin позволяет комбинировать несколько параграфов в одну строку, однако, редактор кода и параграфов в Jupyter кажутся более эффективными, поскольку имеют больше быстрых комбинаций (т.н. «горячих клавиш») и функцию автозаполнения.
- производственная эксплуатация (production) – поскольку Zeppelin зависит от емкости кластера, то при недостатке ресурсов или большом количестве пользователей (более 10), возможны сбои и зависания, которые не характерны для Jupyter.
Подводя итоги, отметим, что Apache Zeppelin – отличный инструмент для аналитики больших данных в экосистеме Hadoop. Он упрощает разработку Spark-приложений и ориентирован на корпоративных пользователей, обеспечивая интеграцию с LDAP, управление разрешениями и интерактивную визуализацию при достаточном количестве ресурсов кластера. Поэтому неслучайно, отечественный разработчик Big Data решений для корпоративных целей, компания Аренадата Софтвер, включила Apache Zeppelin в свой новый продукт – Arenadata Analytic Workspace (AAW), который представляет собой самообслуживаемый сервис (Self-Service) DataScience и BI [4]. Подробнее о нем мы поговорим в следующей статье.
В свою очередь, Jupyter Notebook требует меньше накладных расходов на настройку и создание разработанных шаблонов благодаря автономному характеру. А благодаря большому количеству IDE-функций, расширений и поддержке фреймворков машинного обучения (Machine Learning) и других методов искусственного интеллекта, он стал весьма популярным среди индивидуальных Data Science-исследователей [3].
Как на практике эффективно использовать Apache Zeppelin со Spark и другими компонентами экосистемы Hadoop для аналитики больших данных в проектах цифровизации своего бизнеса, а также государственных и муниципальных предприятий, вы узнаете на специализированных курсах в нашем лицензированном учебном центре обучения и повышения квалификации для разработчиков, менеджеров, архитекторов, инженеров, администраторов, Data Scientist’ов и аналитиков Big Data в Москве:
- Построение эффективных конвейеров обработки данных с Apache Airflow и Arenadata Hadoop
- Анализ данных с Apache Spark
- Использование Apache Zeppelin
Источники