Оглавление:

1. Что такое Apache Zeppelin.

2. Установка и настройка Apache Zeppelin.

3. Apache Zeppelin настройка интерпретатора Hive.

4. Apache Zeppelin настройка интерпретатора Spark.

5. Анализ данных в Apache Zeppelin (Hive).


Что такое Apache Zeppelin.

Apache Zeppelin - это интерактивная среда с web-интерфейсом, позволяющая взаимодействовать с различными источниками данных, обрабатывать эти данные с помощью языков R и Python, а так же визуализировать результаты анализа.

Обща концепция Apache Zeppelin похожа на Jupyter Notebook, где каждый проект представляет собой файл-ноутбук, состоящий из параграфов. Главной особенностью Zeppelin является концепция интерпретаторов, с помощью которых можно настроить параметры подключения к источникам данных или конфигурацию языка программирования. Так же очень полезна такая штука, как интеграция Zeppelin со Spark и наличие интерпретатора для модуля PySpark.

Самое главное достоинство Apache Zeppelin - простая система визуализации результатов с помощью встроенных инструментов, поэтому не надо париться с matplotlib, например. Визуализаторы настраиваемые, что позволяет по-разному представлять результаты.

Итак, приступим к установке и настройке.

Установка и настройка Apache Zeppelin.

Скачаем Apache Zeppelin отсюда, в результате будет скачан архив zeppelin-0.8.2-bin-all.tgz. Далее распакуем архив и скопируем содержимое полученного каталога по следующему пути /usr/local/zeppelin-0.8.2/

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

Теперь можно приступить к настройке, начнем с файла zeppelin-env.sh. Сначала нужно создать этот файл в каталоге установки Zeppelin (у меня /usr/local/zeppelin-0.8.2/conf) из существующего шаблона (template) с помощью команды sudo cp zeppelin-env.sh.template zeppelin-env.sh.

Открыть файл для редактирования:

/usr/local/zeppelin-0.8.2/conf$ sudo gedit zeppelin-env.sh


Теперь нужно раскомментировать или создать (если их нет) следующие параметры:

export JAVA_HOME=/usr/lib/jvm/java-1.8.0-openjdk-amd64 - путь к jvm/jdk.

export MASTER=spark://master:7077 - имя и порт spark-мастера. Вместо имени (в примере master) может быть IP-адрес.

export SPARK_HOME=/usr/local/spark-2.4.4 - каталог, где установлен spark.

export HADOOP_CONF_DIR=/usr/local/hadoop/hadoop-2.9.1/etc/hadoop - каталог, где установлен hadoop.

export PYSPARK_PYTHON=/usr/bin/python3 каталог, где установлен python, в ubuntu по умолчанию в этом каталоге.


Сохраняем, выходим.

Теперь создаем из шаблона и редактируем файл zeppelin-site.xml

В этом файле меняем следующие параметры:

zeppelin.server.addr - значение (value) имя или IP-адрес машины, где установлен Zeppelin.

zeppelin.server.port - порт web-сервера, у меня 8090.


Запускаем сервер с правами администратора: sudo /usr/local/zeppelin-0.8.2/bin/zeppelin-daemon.sh start

Все готово, запускаем браузер, набираем в адресной строке http://IP-адрес:8090/

Если все удачно, видим следующую картинку



Apache Zeppelin настройка интерпретатора Hive.

Для работы с различными источниками данных и запуска скриптов в Apache Zeppelin используются интерпретаторы. Так как у нас уже есть настроенное хранилище Hive, первым делом настроим данный интерпретатор.

Для этого в веб-интерфейсе Zeppelin необходимо открыть выпадающее меню в верхнем правом углу, где указано имя текущего пользователя (по умолчанию Anonimous). По клику появится выпадающее меню, в котором выбираем Interpreter. В результате появится список стандартных интерпретаторов.

Для работы с SQL-базами данных, для которых требуется jdbc-драйвер, внезапно используется интерпретатор jdbc. Находим его и кликаем по кнопке EDIT справа, как показано на рисунке. В результате поля настроек становятся доступны для редактирования. Самая первая группа параметров представлена в виде имя переменной (name) - значение (value), есть также возможность удалить переменную (крестик в поле action). Ну и внизу можно создать новую переменную (кнопка с плюсиком).

Переменные заполнены по умолчанию для Postgre, поэтому внесем изменения в ряд переменных.


Переменная default.driver необходимо установить значение org.apache.hive.jdbc.HiveDriver

Переменная default.url установить значение jdbc:hive2://Master:10003/default;transportMode=http;httpPath=cliservice;

Эти значения зависят от настроек вашего Hive-сервера.

Master:10003 - имя(или IP-адрес) машины, где запущен hive-thrift сервер и порт (у меня 1003, файл hive-site.xml).

default - имя базы данных hive, к которой подключаемся.

transportMode=http - режим взаимодействия с сервером (у меня http, файл hive-site.xml).

httpPath=cliservice - режим взаимодействия через http (у меня cliservice, файл hive-site.xml).

Переменная default.user необходимо установить значение имя пользователя, настроенного для hive в файле hive-site.xml.


Далее необходимо настроить подключаемые зависимости Dependencies, смотрим рисунок.

Здесь нас интересует поле artifact, его значения представлены также на рисунке. Это подключаемые библиотеки для hive (org.apache.hive:hive-jdbc:0.14.0) и для hadoop (org.apache.hadoop:hadoop-common:2.6.0). Следует отметить, что здесь можно указать путь к требуемому файлу, далее для MySQL мы рассмотрим данную возможность.

На этом настройка завершена, необходимо нажать кнопку SAVE, после чего, если нет ошибок, интерпретатор будет доступен в параграфах notebook.



Apache Zeppelin настройка интерпретатора Spark.


Для настройки интерпретатора в списке (смотрите предыдущий раздел) найти Spark и кликнуть по кнопке Edit в правом верхнем углу, после чего поля с параметрами станут доступны для редактирования.

Для нас важны следующие переменные:

master - установить значение spark://master:7077. Вместо имени может быть IP-адрес мастера Spark.

zeppelin.pyspark.python - указать каталог установки Python нужной вам версии. У меня это /usr/bin/python3.

На этом все, нажимаем на кнопку Save, и можно приступать к работе.



Анализ данных в Apache Zeppelin (Hive).


Итак, у нас все готово к работе: данные в Hive загружены, Hive-сервер и Hadoop (HDFS) на мастере запущены, Spark запущен, Zeppelin тоже работает.

Создаем новый Notebook в Zeppelin. Вкладка Notebook->Create new note.

В открывшемся модальном окне указать имя новой записной книжки и интерпретатор по умолчанию, в нашем случае настроенный ранее jdbc (последнее не обязательно, так как в каждом параграфе указываем в начале интерпретатор). Нажимаем кнопку CREATE и оказываемся в новой записной книжке с первым параграфом. В правом верхнем углу каждого параграфа имеется небольшая панель управления, через которую мы можем запускать содержимое параграфа (треугольник или Shift+Enter) или изменять интерфейс.

В параграфе пишем наш первый запрос к базе: show tables, нажимаем треугольник в правом верхнем углу (Shift+Enter) и видим список таблиц в нашей базе данных.

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

%jdbc

show tables

Теперь можно приступить к выполнению запросов к данным в таблице. Если вы не знаете SQL хотя бы на начальном уровне, делать вам тут нечего, бегом учить азы языка!

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

Если вы хотите получить записи (например SELECT * FROM table), то он выдаст результат в виде таблицы. Тут я не вижу никаких трудностей, если есть вопросы, спрашивайте в группе Вконтакте.

Для анализа данных нам важны количественные характеристики каких либо событий, например, количество сообщений в день, содержащих какое-то слово или количество всех сообщений от каждого источника. Напомню, что на странице размещено описание моей таблицы и ее дамп.

Для получения количества новостей от каждого новостного агентства необходимо выполнить следующий запрос в новом или в том же параграфе:

select agency, count(*) as cnt from mynews group by agency order by cnt

Результат получаем в виде таблицы, но нам нужна столбиковая диаграмма, поэтому в появившемся меню интерфейса вывода жмем на Bar Chart, вторая кнопка слева и видим чудо!

Вы должны получить на выходе что-то похожее на то, что есть на рисунке. Если ничего нет, или график не очень, нужно кликнуть по вкладке Settings и настроить значения по осям с помощью drug-n-drop.

По оси Х(keys) - то, что считаем, по оси Y(values) - значения счета.

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

Комментарии

Комментировать могуть только зарегистрированные пользователи

Мы в социальных сетях
Перевести страницу (translate page)
Реклама