Apache Kylin

Материал из Национальной библиотеки им. Н. Э. Баумана
Последнее изменение этой страницы: 00:45, 22 декабря 2017.
Apache Kylin
Kylin.png
Разработчики: Apache Software Foundation
Выпущена: 10 апреля 2017
Постоянный выпуск: 2.2.0
Состояние разработки: Active
Написана на: Java
Операционная система: Кросс-платформенная
Локализация: English
Лицензия: Apache License 2.0
Веб-сайт https://flink.apache.org/

Apache Kylin является распределенной платформой обработки данных для использования данных в больших приложениях, прежде всего, включая анализ данных, хранящихся в кластерах Hadoop. Изначально разрабатывался eBay, в последствие проект перешел к Apache Software Foundation. [Источник 1].

Описание

Apache Kylin предоставляет движок для анализа данных распределенных систем, предоставляя интерфейс поддержки SQL и OLAP для интерактивного анализа данных.

Apache Kylin

Apache Kylin ™ позволяет вам запрашивать массивные данные, установленные на второй секунде за 3 шага.

  • 1) Определите схему звезд на Hadoop.
  • 2) Build Cube из идентифицированных таблиц.
  • 3) Запрос с ANSI-SQL и получение результатов в пол-секунды через API ODBC, JDBC или RESTful.[Источник 2].

Среди своих преимуществ производители выделяют:

  • быстрый OLAP движок, который разработан специально для уменьшения задержки выполнения запросов для кластеров Hadoop с более чем 10 миллионов строк данных;
  • поддержка ANSI SQL интерфейса
  • бесшовная интеграция с "BI Tools"
  • мониторинг и управление заданиями
  • поддержка сжатия и кодирования
  • понятный веб-интерфейст для настройки и управления
  • поддержка LDAP и SAML

Экосистема

Apache Kylin можно разбить на следующие составляющие.

  • Kylin Core. Основа из фрейморка Kylin OLAP Engine, который в свою очередь включает Metadata Engine, Query Engine, Job Engine и Storage Engine. Так же в ядро входит REST-сервер для обработки запросов пользователей.
  • Расширения. Уровень для поддержки плагинов и дополнительного подключаемого функционала
  • Уровень интеграции. Состоит их систем мониторинга и оповещений, ETL-процессов и планировщика заданий
  • Пользовательский интерфейс. Поддерживает возможность внесений изменений в пользовательский
  • Драйвера. Включают в себя ODBC и JDBC для поддержки сторонних продуктов.

Установка

Apache Kylin поставляется в виде бинарных файлов, которые доступны для загрузки с официального сайта.

Настройка окружения

Прежде чем приступать к установке самого Apache Kylin необходимо удостовериться, что Hadoop установлен, а окружение настроено, включая команды:

  • hive
  • hbase
  • hadoop
  • hdfs

А также пользовательская учетная запись имеет все необходимые права для Hadoop-кластера, включая права:

  • на запись/чтение
  • назначение и подтверждение заданий в планировщике
  • на работу с таблицами

Установка пакета Apache Kylin

  • Сначала необходимо загрузить дистрибутив с официального сайта и разархивировать его.
  • Установитe переменную окружения на папку с дистрибутувом:
Export KYLIN_HOME
  • Далее проверьте достаточно ли привилегий для работы. Для теста можно выполнить команду проверки:
bin/check-env.sh

Запуск Apache Kylin

Для запуска необходимо запустить скрипт:

bin/kylin.sh start

После запуска записи журнала будут доступны по пути "logs/kylin.log". Для остановки сервиса необходимо запустить скрипт со следующими параметрами:

bin/kylin.sh stop

RESTful API

Apache Kylin предоставляет также обширный API для настройки и управлению. Включая выполнение запросов, взаимодействие с заданиями, OLAP-кубами, мета-данными и настройку кэширования.

Аутентификаци

Для доступа к API необходимо пройти процедуру аутентификации, которая выполнена в виде HTTP basic. Т.е. параметры аутентификации необходимо передавать в заголовке с использованием хэширования Base64. Чтобы получить доступ к API необходимо отправить запрос:

POST /kylin/api/user/authentication

В качестве ответа отправляется JSON с информацией о пользователе и его правах в случае успешной авторизации:

{  
   "userDetails":{  
      "password":null,
      "username":"sample",
      "authorities":[  
         {  
            "authority":"ROLE_ANALYST"
         },
         {  
            "authority":"ROLE_MODELER"
         }
      ],
      "accountNonExpired":true,
      "accountNonLocked":true,
      "credentialsNonExpired":true,
      "enabled":true
   }
}

Пример прохождения аутентификации с использованием curl:

curl -c /path/to/cookiefile.txt -X POST -H "Authorization: Basic XXXXXXXXX" -H 'Content-Type: application/json' http://<host>:<port>/kylin/api/user/authentication

Выполнение запросов

Для взаимодействиями с запросами и их выполнения необходимо отправить запросы на URL:

POST /kylin/api/query

В качестве параметров Apache Kylin принимает JSON. Пример представлен ниже, который выполняет select-запрос с ограничением по число строк ответа:

{  
   "sql":"select * from TEST_KYLIN_FACT",
   "offset":0,
   "limit":50000,
   "acceptPartial":false,
   "project":"DEFAULT"
}

Этот запрос можно также протестировать с помощью curl:

curl -X POST -H "Authorization: Basic XXXXXXXXX" -H "Content-Type: application/json" -d '{ "sql":"select count(*) from TEST_KYLIN_FACT", "project":"learn_kylin" }' http://localhost:7070/kylin/api/query

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

Взаимодействие с кубами

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

GET /kylin/api/cubes

API предоставляет функционал:

  • получения всех кубов
  • получение модификатора куба
  • добавление нового
  • отключение и подключение существующего по имени
  • получение модели данных
  • удаление сегментов

В качестве результата, как и для предыдущих команд, API возвращает JSON, пример одного из них представлен ниже:

[  
   {  
      "uuid":"1eaca32a-a33e-4b69-83dd-0bb8b1f8c53b",
      "last_modified":1407831634847,
      "name":"test_kylin_cube_with_slr_empty",
      "owner":null,
      "version":null,
      "descriptor":"test_kylin_cube_with_slr_desc",
      "cost":50,
      "status":"DISABLED",
      "segments":[  
      ],
      "create_time":null,
      "source_records_count":0,
      "source_records_size":0,
      "size_kb":0
   }
]

Взаимодействие с заданиями

Для взаимодействия с заданиями необходимо обращаться по URL:

GET /kylin/api/jobs/{jobId}

Поддерживаемый функционал:

  • получение списка заданий
  • отключение и возобновление задания
  • получение статуса задания

Возможности интеграции

Apache Kylin имеет широкие возможности по интеграции со сторонним ПО, включая:

  • ODBC Driver
  • JDBC Driver
  • Tableau 8
  • Tableau 9
  • MS Excel and Power BI
  • MicroStrategy
  • Apache Flink

В качестве пример рассмотрим интеграцию с использованием JDBC Driver для Java решений. Прежде всего необходимо загрузить сам драйвер, который так же доступен с помощью Maven:

<!-- https://mvnrepository.com/artifact/org.apache.kylin/kylin-jdbc -->
<dependency>
    <groupId>org.apache.kylin</groupId>
    <artifactId>kylin-jdbc</artifactId>
    <version>2.2.0</version>
    <scope>test</scope>
</dependency>

Строка подключения имеет следующий вид:

  jdbc:kylin://<hostname>:<port>/<kylin_project_name>

Далее представлен пример выполнения запроса:

Driver driver = (Driver) Class.forName("org.apache.kylin.jdbc.Driver").newInstance();

Properties info = new Properties();
info.put("user", "ADMIN");
info.put("password", "KYLIN");
Connection conn = driver.connect("jdbc:kylin://localhost:7070/kylin_project_name", info);
Statement state = conn.createStatement();
ResultSet resultSet = state.executeQuery("select * from test_table");

while (resultSet.next()) {
    assertEquals("foo", resultSet.getString(1));
    assertEquals("bar", resultSet.getString(2));
    assertEquals("tool", resultSet.getString(3));
}

Так же JDBC драйвер предоставляет возможность:

  • создавать и выполнять PreparedStatement
  • настраивать. метаданные
  • управлять кэшированием

Источники

  • Apache Kylin//Wikipedia. [2017 - 2017]. Дата обновления: 10.11.2017. URL:https://en.wikipedia.org/wiki/Apache_Kylin (дата обращения: 27.11.2017)
  • Официальный сайт//Apache Kylin[2017-2017]. Дата обновления: 17.11.2017. URL:http://kylin.apache.org (дата обращения: 27.11.2017)
  • Документация по использованию//Apache Kylin[2017-2017]. Дата обновления: 17.11.2017. URL:http://kylin.apache.org/docs21/ (дата обращения: 17.11.2017)

Примечания

  1. Apache Software Foundation. [2001-2017]. Дата обновления: 15.04.2016. URL: https://blogs.apache.org/foundation/entry/the_apache_software_foundation_announces85 ( Дата обращения: 04.11.2017.)
  2. APACHE KYLIN™ OVERVIEW [2001-2017]. Дата обновления: 15.04.2016. URL: https://kylin.apache.org/ ( Дата обращения: 04.11.2017.)