AlibabaCloud MaxCompute

Материал из Национальной библиотеки им. Н. Э. Баумана
Последнее изменение этой страницы: 11:19, 7 октября 2018.
AlibabaCloud MaxCompute
AlibabaCloud MaxCompute.png
Разработчики: Alibaba Cloud
Выпущена: April 2010; 10 years ago (2010-04)[1]
Операционная система: Кросс-платформенное
Локализация: Английский
Тип ПО: RDBMS
Лицензия: Проприетарное
Веб-сайт www.alibabacloud.com/product/maxcompute

AlibabaCloud MaxCompute (ранее известная как ODPS – Open Data Processing Service) – это универсальная, полностью управляемая вычислительная платформа для крупномасштабного хранения данных. MaxCompute поддерживает различные решения для импорта данных и распределенные вычислительные модели, позволяя пользователям эффективно работать с большими наборами данных. При этом снижаются издержки производства и обеспечивается безопасность данных[Источник 1].

MaxCompute легко встраивается в интегрированную среду разработки AlibabaCloud DataWorksPaaS-решение, предоставляющее единый интерфейс разработки и управления данными. DataWorks использует MaxCompute в качестве вычислительного движка и системы хранения данных. Функциями MaxCompute можно воспользоваться не только в DataWorks, но и в клиентской консоли.

MaxCompute позволяет производить вычисления над наборами структурированных данных и предоставляет широкий спектр решений для их хранения, включая анализ «больших данных» (Big Data) и моделирование. По мере того как методы сбора данных становятся все более разнообразными и всеобъемлющими, отрасли промышленности собирают все бо́льшие и бо́льшие объемы данных, достигающие 100 ТБ и даже ПБ[Источник 2].

Массивные объемы данных и ограниченная пропускная способность одного сервера побудили аналитиков использовать распределенные вычисления. Однако такие вычислительные модели нелегко поддерживать, так как для этого требуются высококвалифицированные специалисты по анализу данных. Цель MaxCompute – предоставить удобный способ анализа и обработки огромного массива данных без необходимости разбираться в деталях распределенных вычислений.

История

Идея о создании востребованной платформы для обработки и хранения данных возникла еще с момента основания компании облачных вычислений Alibaba Cloud в сентябре 2009 года. В апреле 2010 года осуществление этой идеи приблизилось к реальности: был создан продукт под названием "Open Data Processing Service" (ODPS) – будущий MaxCompute. Изначально он служил в качестве операционного компонента кредитной системы компании Ant Financial, дочерней по отношению к Alibaba Group. К концу 2013 года ODPS v1.0 был способен обрабатывать огромные объемы данных – например, утверждалось, что 100 ПБ данных обрабатывались всего лишь около 6 ч[Источник 3]. С 2014 по 2015 год платформа ODPS была усовершенствована, а в 2016 году появился MaxCompute 2.0, обладающий различными решениями для хранения «больших данных» и широкими возможностями моделирования.

Преимущества

AlibabaCloud MaxCompute обладает следующими преимуществами:

  • Крупномасштабные вычисления и система хранения: MaxCompute подходит для хранения и обработки больших объемов данных (до уровня ПБ).
  • Несколько вычислительных моделей: MaxCompute поддерживает методы обработки данных на основе SQL, MapReduce, итеративных алгоритмов MPI и других моделей программирования.
  • Надежная защита данных: MaxCompute более семи лет предоставляет стабильные службы анализа, функционирующие в автономном режиме, и обеспечивает многоуровневую защиту и мониторинг песочницы.
  • Эффективность с точки зрения затрат: MaxCompute может помочь снизить затраты на закупки на 20-30% по сравнению с использованием собственных облачных моделей[Источник 4].

Описание

Особенности AlibabaCloud MaxCompute заключаются в следующем:

  • Поддержка нескольких туннелей данных (Data Tunnel).
  • Поддержка нескольких вычислительных моделей.
  • Наличие SDK.
  • Обеспечение защиты данных.

Туннели данных

MaxCompute использует туннели для передачи данных. Туннели масштабируемы и позволяют импортировать и экспортировать данные объемом в сотни ПБ. Можно импортировать данные через несколько туннелей. Служба туннелей поддерживает Java SDK. Также возможно использование команд на клиенте MaxCompute для обмена файлами и данными с облаком.

MaxCompute Tunnel поддерживает следующие операции:

  • upload – загрузка данных в таблицу. При этом данные могут быть загружены только в одну таблицу или часть таблицы из одного файла или каталога.
  • download – выгрузка данных из таблицы. При этом данные могут быть выгружены только из одной таблицы или части таблицы в один файл.
  • resume – возобновление предыдущей операции загрузки данных в случае возникновения ошибки загрузки.
  • show – предоставление истории предыдущих команд.
  • purge – очистка истории команд за указанный промежуток времени (в днях).

MaxCompute предоставляет услугу DataHub для загрузки данных в режиме реального времени. Эта услуга отличается малым временем отклика и простотой в использовании, что очень подходит для импорта инкрементальных данных. DataHub поддерживает несколько плагинов для передачи данных, таких как Logstash, Flume, Fluentd и Sqoop. Также можно использовать Log Service для легкой отправки логов в MaxCompute и Big Data Development Kits для их анализа.

Вычислительные модели

MaxCompute предоставляет несколько вычислительных моделей.

SQL

MaxCompute поддерживает стандартный синтаксис SQL и Apache Hive. Этот комбинированный синтаксис похож на Hibernate Query Language (HQL), поэтому программисты SQL или HQL могут легко использовать MaxCompute. Однако синтаксис MaxCompute SQL отличается от Oracle и MySQL; в частности, вы не можете легко перенести SQL-запросы других баз данных в MaxCompute.

MaxCompute SQL предоставляет более эффективный вычислительный фреймворк, чем общая модель MapReduce. Однако MaxCompute SQL не поддерживает транзакции, индексы, обновление и удаление.

Преимущество MaxCompute SQL – низкая стоимость обучения. Вам не нужно понимать концепцию сложных распределенных вычислений. Если у вас есть опыт работы с базами данных, вы можете быстро ознакомиться с MaxCompute SQL.

MaxCompute SQL предоставляет множество встроенных функций:

  • функции для работы с датой и временем (dateadd, datediff, datepart, datetrunc и др.);
  • математические функции (abs, ceil, floor, round, exp, log, pow и др.);
  • оконные функции, или Window Functions (count, avg, max, min, median, sum, rank и др.);
  • функции для работы со строками (concat, length, split_part, substr, tolower, toupper и др.);
  • другие функции (cast, decode, greatest, least, sample, split и др.)[2].

Кроме того, MaxCompute SQL поддерживает создание функций, определенных пользователем (UDF).

MapReduce

MaxCompute поддерживает модель MapReduce с использованием Java.

MaxCompute предоставляет три версии модели MapReduce:

  1. MaxCompute MapReduce: собственная версия модели MapReduce для MaxCompute, работающая быстрее других версий[Источник 5].
  2. MR2 (Extended MapReduce): расширение для MaxCompute, которое поддерживает более сложную логику планирования заданий. MR2 реализован так же, как и MaxCompute MapReduce.
  3. Совместимая с Hadoop версия: не совместима с MaxCompute MapReduce и MR2.

Модель MapReduce в MaxCompute отличается от модели MapReduce в сообществе ПО с открытым исходным кодом. Модифицированная модель может быть менее гибкой. Например, вы не можете настраивать алгоритмы сортировки и хеширования. Однако процесс разработки упрощается. Более того, MaxCompute предоставляет модель Extended MapReduce, в которой за одной операцией Map могут следовать несколько операций Reduce.

Graph

В случае использования некоторых сложных вычислительных алгоритмов, таких как алгоритм k-средних, поиск кратчайшего пути (SSSP) или PageRank, MapReduce требует много времени, чтобы выполнить задачу. Поэтому MaxCompute использует модель Graph для достижения большей эффективности.

MaxCompute Graph – это платформа обработки данных, использующая ориентированные графы для построения моделей. Графы состоят из вершин и ребер, содержащих какие-либо значения.

MaxCompute Graph поддерживает следующие элементарные операции над графами:

  • изменение значения вершины или ребра;
  • добавление/удаление вершин;
  • добавление/удаление ребер.

SDK

MaxCompute предоставляет Java и Python SDK – удобный инструментарий для разработчиков. Он поддерживает основные операции над объектами MaxCompute, интерфейс для создания функций, определенных пользователем (UDF), MapReduce и Graph.

Безопасность данных

MaxCompute – многопользовательская вычислительная платформа. По умолчанию пользователи системы изолированы и не имеют доступа к данным других пользователей без соответствующих разрешений. Maxcompute предлагает мощные средства безопасности для защиты данных.

Система безопасности MaxCompute включает в себя:

  • аутентификацию пользователей;
  • ролевое разграничение доступа;
  • авторизацию с использованием ACL;
  • безопасное совместное использование ресурсов (основано на использовании пакетов[3]);
  • защиту данных проектов.

Установка

Для начала необходимо создать аккаунт и сгенерировать ключ доступа (Access Key) в Alibaba Cloud. После этого переходим сюда и нажимаем на кнопку Buy Now (см. рисунок 1).

Рисунок 1 – Фрагмент официального сайта AlibabaCloud MaxCompute

Выбираем подходящий регион (для Москвы это EU Central 1) и нажимаем на кнопку Buy Now (см. рисунок 2).

Рисунок 2 – Выбор региона

После активации нажимаем на кнопку Console (см. рисунок 3).

Рисунок 3 – Расположение кнопки Console

Это консоль DataWorks. Здесь мы создадим проект, с которым будем работать на клиенте MaxCompute. Снова указываем регион (рисунок 4) и добавляем детальную информацию о проекте (рисунок 5).

Рисунок 4 – Выбор региона в консоли DataWorks

Рисунок 5 – Ввод детальной информации о проекте в консоли DataWorks

Теперь мы готовы приступить к установке консольного клиента MaxCompute. Скачиваем и распаковываем архив. В папке conf редактируем файл odps_config.ini: вводим имя проекта, который только что создали, идентификатор и ключ доступа, а также URL конечной точки в соответствии с таблицей (см. рисунок 6).

Рисунок 6 – Редактирование файла odps_config.ini

Для запуска клиента MaxCompute в Windows достаточно открыть файл /bin/odpscmd.bat, а в Linux перейти в папку bin и набрать следующую команду:

$ ./odpscmd

Будет выведена строка с возможностью ввода команды MaxCompute:

odps@ maxcomputeproject>

Примеры использования

Работа с таблицами

В проекте maxcomputeproject создадим таблицу sale_detail с колонками shop_name и customer_id типа string и колонкой total_price типа double. Колонки sale_date и region включим в раздел (partition).

odps@ maxcomputeproject>create table sale_detail(shop_name string, customer_id string, total_price double) partitioned by (sale_date STRING, region STRING);

Просмотрим информацию о данной таблице:

odps@ maxcomputeproject>desc sale_detail;
+------------------------------------------------------------------------------------+
| Owner: ALIYUN$odpsuser@aliyun.com | Project: maxcomputeproject |
| TableComment: |
+------------------------------------------------------------------------------------+
| CreateTime: 2018-09-24 17:32:13 |
| LastDDLTime: 2018-09-24 17:57:38 |
| LastModifiedTime: 1970-01-01 08:00:00 |
+------------------------------------------------------------------------------------+
| Internaltable: Yes | size: 0 |
+------------------------------------------------------------------------------------+
| Native Columns: |
+------------------------------------------------------------------------------------+
| Field | Type | Comment |
+------------------------------------------------------------------------------------+
| shop_name | string | |
| customer_id | string | |
| total_price | double | |
+------------------------------------------------------------------------------------+
| Partition Columns: |
+------------------------------------------------------------------------------------+
| sale_date | string | |
| region | string | |
+------------------------------------------------------------------------------------+

Рассмотрим еще примеры создания таблиц.

  1. Таблица без разделов (partition):
    odps@ maxcomputeproject>create table test1 (key string);
  2. Таблица с разделом (partition):
    odps@ maxcomputeproject>create table test2 (key bigint) partitioned by (pt string, ds string);
  3. Таблица с временем жизни 100 дней:
    odps@ maxcomputeproject>create table test3 (key boolean) partitioned by (pt string, ds string) lifecycle 100;
  4. Таблица, имеющая такие же типы полей, как и предыдущая, за исключением свойства времени жизни:
    odps@ maxcomputeproject>create table test4 like test3;
  5. Копия таблицы test2 (раздел и время жизни скопированы не будут):
    odps@ maxcomputeproject>create table test5 as select * from test2;

Удалить таблицу можно следующей командой:

odps@ maxcomputeproject>drop table sale_detail;

Работа с проектами

Чтобы переключиться на проект maxcomputeproject (т.е. все таблицы из него стали доступны по имени), нужно выполнить следующую команду:

odps@ maxcomputeproject>use maxcomputeproject;

Если таблица test_src существует в проекте maxcomputeproject, то можно получить все ее данные следующей командой:

odps@ maxcomputeproject>select * from test_src;

Если таблица test_src находится в другом проекте, скажем, maxcomputeproject2, то все ее данные можно получить следующим образом:

odps@ maxcomputeproject>select * from maxcomputeproject2.test_src;

Работа с туннелями данных

Чтобы импортировать и экспортировать данные из файлов в таблицы через консоль MaxCompute, используются туннели данных. Например, создадим файл example.txt, как показано на рисунке 7.

Рисунок 7 – Содержимое файла example.txt

Создадим таблицу test_table с колонкой word типа string:

odps@ maxcomputeproject>create table test_table (word string);

Прежде чем загружать данные из файла example.txt с помощью туннеля данных, проверим, что в файле конфигурации odps_config.ini (см. раздел Установка) стоит правильный tunnel_endpoint (см. рисунок 8).

Рисунок 8 – Правильный tunnel_endpoint в файле odps_config.ini

Теперь можно осуществить экспорт данных из файла example.txt в таблицу test_table:

odps@ maxcomputeproject>tunnel upload example.txt test_table;

Выведем теперь данные, содержащиеся в test_table:

odps@ maxcomputeproject>select * from test_table;
+------+
| word |
+------+
| Hello, |
| world!!! |
+------+

Источники

  1. AlibabaCloud MaxCompute [Электронный ресурс]: Официальный сайт / Дата обращения: 23.09.2018. Режим доступа: https://www.alibabacloud.com/product/maxcompute.
  2. Документация AlibabaCloud MaxCompute [Электронный ресурс]: Общая информация о MaxCompute / Дата обращения: 23.09.2018. Режим доступа: https://www.alibabacloud.com/help/doc-detail/27800.htm?spm=a2c63.p38356.b99.2.55f747bcOP9ydk.
  3. TechCrunch [Электронный ресурс]: Catherine Shu. Alibaba’s Cloud Computing Group Says Its New Artificial Intelligence Platform Is China’s First / Дата обращения: 23.09.2018. Режим доступа: https://techcrunch.com/2015/08/25/aliyun-ai/.
  4. Документация AlibabaCloud MaxCompute [Электронный ресурс]: Преимущества MaxCompute / Дата обращения: 23.09.2018. Режим доступа: https://www.alibabacloud.com/help/doc-detail/27800.htm?spm=a2c63.p38356.b99.2.18fe7908OCJm4e.
  5. Документация MaxCompute [Электронный ресурс]: MapReduce / Дата обращения: 24.09.2018. Режим доступа: https://www.alibabacloud.com/help/doc-detail/27875.htm?spm=a2c63.p38356.b99.110.29de4214chOgs6

Примечания

  1. Документация AlibabaCloud MaxCompute [Электронный ресурс]: Ключевые этапы развития / Дата обращения: 23.09.2018. Режим доступа: https://www.alibabacloud.com/help/doc-detail/59180.htm?spm=a2c63.p38356.b99.3.f0b133b5yiPgJj.
  2. Подробнее обо всех функциях MaxCompute SQL см. в документации.
  3. Подробнее об этом см. здесь