Hologres (китайское название интерактивного анализа) — это универсальное хранилище данных в режиме реального времени, разработанное Alibaba Cloud. Эта облачная система объединяет сервисы в реальном времени и сценарии анализа больших данных. Она полностью совместима с протоколом PostgreSQL и легко подключается. с экосистемой больших данных.Одна и та же архитектура данных поддерживает одновременную запись в режиме реального времени, запросы в режиме реального времени и автономный федеративный анализ в реальном времени. Его появление упрощает структуру бизнеса, дает бизнесу возможность принимать решения в режиме реального времени и позволяет использовать большие данные для повышения ценности бизнеса. С момента создания Alibaba Group до коммерциализации облака, с развитием бизнеса и развитием технологий Hologres также постоянно оптимизирует конкурентоспособность своих основных технологий.От высокопроизводительного механизма хранения до высокоэффективного механизма запросов, высокопроизводительной записи к запросу с высоким QPS и т. д., всесторонняя интерпретация Hologres, пожалуйста, продолжайте обращать внимание!Прошлые основные моменты:
- Газета VLDB 2020 г. "Alibaba Hologres: A cloud-Native Service for Hybrid Serving/Analytical Processing》
- Представлены гологры: первая публика! Представлена базовая технология облачного хранилища данных в реальном времени Alibaba
- Демистификация Hologres: впервые демистификация облачного механизма хранения Hologres
- Демистификация Hologres: Демистификация Hologres для высокоэффективного распределенного механизма запросов Hologres Демистификация:
В этом выпуске мы представим анализ технических принципов высокопроизводительного нативного ускоренного запроса Hologres MaxCompute.
Благодаря постоянному обогащению методов сбора данных и накоплению промышленных данных масштабы данных выросли до уровня массивных данных (TB, PB, EB), которые не могут быть перенесены в традиционную индустрию программного обеспечения.MaxCompute (ранее известная как ODPS). ) также появился, как того требует время, с упором на пакетную структуру.Это быстрое, полностью управляемое решение для хранилища данных уровня EB, предоставляющее решения для хранения массивных данных, а также услуги анализа и моделирования.
Hologres легко интегрируется с MaxCompute в автономных сценариях работы с большими данными. Он может ускорить запросы MaxCompute без импорта и экспорта данных. Он полностью совместим с различными форматами файлов MaxCompute и обеспечивает интерактивный анализ автономных данных на уровне PB на уровне миллисекунд. За всем этим стоит исполнитель SQE (S Query Engine), стоящий за Hologres, неотделимый от собственного доступа к MaxCompute через SQE, а затем объединенный с обработкой высокопроизводительного механизма распределенного выполнения Hologres HQE для достижения максимальной производительности.
Hologres ускоряет выполнение запросов MaxCompute в основном имеет следующие преимущества:
- высокая производительность:Он может напрямую ускорить запрос к данным MaxCompute и имеет скорость ответа менее секунды.В сценариях OLAP это может быть прямой нерегламентированный запрос, который соответствует большинству сценариев анализа, таких как отчеты.
- бюджетный:После нескольких лет разработки MaxCompute пользователи сохранили большой объем данных на MaxCompute, к которым можно получить прямой доступ без избыточного хранилища.С другой стороны, пользователи могут только перенести некоторые данные в высокопроизводительных сценариях на SSD и анализировать отчеты, такие как в виде отчетов Данные сценария могут храниться в MaxCompute для дальнейшего снижения затрат.
- Более эффективным:Реализуйте собственный доступ к MaxCompute без переноса и импорта данных, вы можете получить доступ к различным форматам файлов MaxCompute и сложным таблицам, таким как Hash/Range Clustered Table, с высокой производительностью и полной совместимостью, что снижает затраты пользователей на использование.
Введение в архитектуру SQE
Как показано на рисунке выше, это общая архитектура SQE, видно, что вся архитектура также очень проста. Данные MaxCompute единообразно хранятся в Pangu. Когда Hologres выполняет запрос для ускорения запроса данных MaxCompute, на стороне Hologres:
- Интерфейс Hologres запрашивает метаданные и другую связанную информацию от мастера SQE через RPC.
- Hologres Blackhole запрашивает у SQE Executor определенную информацию, связанную с данными, через RPC.
- SQE состоит из процессов с двумя ролями:
- Мастер SQE отвечает за обработку запросов, связанных с метаданными, и в основном отвечает за такие функции, как получение таблиц, метаданных разделов, аутентификацию и разделение файлов.
- Как ядро SQE, SQE Executor отвечает за чтение запросов данных, включая такие функции, как блочный кэш, предварительное чтение, обработка UDF, обработка выражения, обработка индекса, метрика и счетчик.
Инновации в базовой технологии MaxCompute Appearance Engine
Архитектура на основе SQE обеспечивает высокопроизводительные ускоренные запросы к данным MaxCompute, в основном за счет следующих преимуществ технологических инноваций:
1) Абстрактный распределенный внешний вид
В сочетании с распределенными характеристиками MaxCompute, Hologres абстрагируется от распределенного внешнего вида для поддержки доступа к распределенным данным MaxCompute. В настоящее время он поддерживает доступ к распределенным файлам Pangu MaxCompute между кластерами и считывает их в соответствии с ближайшим вычислительным кластером MaxCompute.
2) Полная взаимосвязь с MaxCompute Meta, поддержка кеша метаданных с версией
SQE и метаданные MaxCompute беспрепятственно обмениваются данными, позволяя получать метаданные и данные в режиме реального времени.Он поддерживает команду импорта внешней схемы для автоматической синхронизации метаданных MaxCompute с внешней таблицей Hologres, чтобы реализовать автоматическое создание внешней таблицы и автоматический обновление структуры.
3) Поддержка выталкивания UDF/выражения
SQE реализует определяемые пользователем вычисления UDF, поддерживая преобразование UDF/выражений; подавление выражений может уменьшить накладные расходы, вызванные бесполезной передачей данных, и еще больше повысить производительность.
4) Асинхронный считыватель ORC, асинхронная предварительная выборка
В настоящее время большая часть данных MaxCompute находится в формате ORC.В Hologres V0.10 и выше в Hologres обновлен исполнительный механизм, использующий асинхронный считыватель для более эффективного асинхронного чтения, а также поддерживающий асинхронныйprefetch, чтобы еще больше сократить задержку чтения; кроме того, Hologres поддерживает **объединение операций ввода-вывода, отложенное чтение, отложенное декодирование** и другие методы оптимизации столбцов, чтобы уменьшить задержку ввода-вывода во всем запросе и добиться максимальной производительности.
5) Поддержка блочного кэша
Чтобы избежать использования ввода-вывода для выборки данных из файла каждый раз, SQE также использует BlockCache для хранения часто используемых и недавно использованных данных в памяти, уменьшая количество ненужных операций ввода-вывода и повышая производительность чтения. В том же узле одни и те же данные доступа совместно используются в блочном кэше посредством согласованного хэша. Например, в сценарии Scan производительность может быть улучшена более чем в 2 раза, что значительно повышает производительность запросов.
6) Резидентный процесс для сокращения накладных расходов на планирование
Традиционная модель процесса и другие архитектуры требуют динамического создания процессов в реальном времени и других операций планирования, что приводит к большим накладным расходам планирования. SQE использует режим резидентного процесса, чтобы избежать ненужных накладных расходов на планирование, а также может значительно повысить частоту попаданий и коэффициент эффективного использования блочного кэша.
7) Network Shuffle, уменьшающий накладные расходы на размещение дисков
Network Shuffle должен обеспечивать быстрый и стабильный механизм отказоустойчивости. Потому что Network Shuffle должен гарантировать, что процессы отправителя и получателя активны одновременно, чтобы завершить перемешивание данных. Точно так же, если для повторной попытки Network Shuffle используется традиционный метод размещения на диске, несмотря на то, что стабильность может быть гарантирована, это может привести к относительно большому снижению производительности из-за дискового ввода-вывода во время процесса повторной попытки. Чтобы решить эту проблему, мы оптимизируем поэтапное планирование, чтобы решить проблему быстрой и стабильной отказоустойчивости.
Движок внешнего вида MaxCompute обновлен до HQE
Как упоминалось выше, мы используем SQE для ускорения запроса представлений MaxCompute.При запросе через SQE производительность может быть очень хорошей.Однако при взаимодействии с Hologres посередине будет слой взаимодействия RPC.Когда количество объем данных велик, в сети будет определенное узкое место.
Поэтому, основываясь на существующих возможностях Hologres, мы оптимизировали механизм выполнения в Hologres V0.10 и выше для поддержкиМеханизм запросов Hologres HQE напрямую считывает таблицы MaxCompute, производительность была улучшена более чем на 30% по сравнению с чтением SQE.
В основном это связано со следующими аспектами:
- Взаимодействие между SQE и промежуточным RPC Hologres сохраняется, что эквивалентно сохранению одной сериализации и десериализации данных и дополнительно повышает производительность.
- Блочный кэш Hologres можно использовать повторно, так что второму запросу не требуется доступ к хранилищу, он избегает операций ввода-вывода в хранилище и напрямую обращается к данным из памяти, что может лучше ускорить запрос.
- Существующую функцию выталкивания фильтра можно повторно использовать для уменьшения объема данных, которые необходимо обработать.
- Упреждающее чтение и кэширование реализованы на базовом уровне ввода-вывода, что еще больше повышает производительность сканирования.
Ниже приведены данные об эффективности фактического бизнес-запроса клиента в Интернете:
E2E-среда выполнения | SQL Num | Производительность запросов SQE (средний ответ) | Производительность запросов HQE (средний ответ) | повышение производительности |
---|---|---|---|---|
2-10s | 547 | 4,956 ms | 2,609 ms | +47.34% |
10-30s | 207 | 16,757 ms | 5,457 ms | +67.43% |
более 30 с | 63 | 78,686 ms | 12,666 ms | +83.90% |
Total | 817 | 13,631 ms | 4,106 ms | +69.87% |
Выполнено 817 SQL-запросов, и общая производительность была улучшена на 70%, из них длинные запросы были улучшены более чем на 80%.
Примечание. Эта оптимизация была запущена в Hologres V0.10, пожалуйста, проверьте документацию по использованию.
Выбор сценария ускорения MaxCompute
Есть два способа ускорить запрос MaxCompute в Hologres: 1) Создать внешнюю таблицу (данные все равно хранятся в MaxCompute), производительность улучшится в 2-5 раз по сравнению с запросом в MaxCompute 2) Импорт внутренней таблицы, производительность примерно в 10-100 раз выше, чем у внешней таблицы. Принцип создания внешней таблицы заключается в том, что внешние обертки данных в PostgreSQL получают доступ к внешним данным через внешний интерфейс доступа.Для создания внешней таблицы рекомендуется использовать более удобный метод IMPORT FOREIGN SCHEMA, который может лучше упростить синхронизацию метаданных, не обращая внимания на сопоставление типов полей.
Способ прямого построения слияния таблиц фактически использует возможности оптимизации механизма запросов для повышения эффективности, но не использует возможности индексации Hologres. Таким образом, при импорте внешней таблицы во внутреннюю таблицу можно указать структуру индекса внутренней таблицы в соответствии с методом запроса и повысить производительность запроса за счет этих возможностей индексирования. Вот почему внешняя таблица импортируется во внутреннюю таблицу, а производительность внутренней таблицы выше, что позволяет в полной мере использовать возможности оптимизации индексов хранилища данных.
В настоящее время два метода в основном сравниваются следующим образом:
сцена/размер | представление | стоимость хранения | Объем данных | показатель | Удобство |
---|---|---|---|---|---|
Внутренний стол Hologres | очень хороший | высокий | |||
(SSD) | Может поддерживать уровень PB | Поддерживает различные индексы, такие как растровые изображения и кластеризация. | нужно импортировать данные | ||
Внешний вид гологра | лучше | Низкий | |||
(HDD) | Ограничение 200 ГБ для одного запроса | Поддерживает только индексацию ODPS | Нет необходимости переносить и импортировать данные |
Из приведенного выше сравнения видно, что:
- Если у вас есть большой объем данных и высокие требования к производительности (например, в пределах 100 мс), вы чувствительны к задержке запросов и у вас есть требования SLA для запросов, рекомендуется импортировать данные во внутренние таблицы Hologres для запросов. доступ.
- Если это временный исследовательский анализ или внутренний бизнес, который не чувствителен к задержке, вы можете использовать внешний метод MaxCompute, чтобы уменьшить перемещение данных.
- В дополнение к приведенным выше сценариям вы можете выбрать подходящие сценарии использования в зависимости от конкретной бизнес-ситуации.
Отношения между MaxCompute и Hologres
Выше описано множество сценариев, в которых внешний механизм запросов Hologres может ускорить запрос MaxCompute, однако это не означает, что все типы запросов подходят для выполнения на внешнем механизме запросов Hologres.
Hologres – это механизм синхронных запросов, предназначенный для сценариев интерактивного анализа. Он ориентирован на ввод больших данных и вывод небольших данных и обычно используется в сценариях обслуживания и аналитики. MaxCompute – это механизм асинхронной обработки данных, предназначенный для сценариев обработки и обработки больших объемов данных. Он ориентирован на сценарии ввода и вывода больших данных и обычно используется в сценариях ETL. В сценарии ETL задания отправляются асинхронно, интерфейс ввода-вывода оптимизирован для сканирования, вычислительный процесс требует избыточной конструкции узлов для поддержки высокой доступности, а состояние вычислений необходимо поместить на диск, чтобы он мог автоматически повторять попытки в событие отказа.Это все возможности, которых нет у Hologres. Таким образом, комбинация MaxCompute и Hologres формирует единый процесс обработки данных и сервисов, который уменьшает изоляцию и избыточность данных, обеспечивает разумную архитектуру решения для хранилищ больших данных и поддерживает интегрированную разработку в режиме реального времени и в автономном режиме.
Суммировать
Hologres глубоко интегрируется с MaxCompute через SQE и в полной мере использует преимущества Hologres и MaxCompute.С целью достижения максимальной производительности он может напрямую ускорить запрос данных MaxCompute, позволяя пользователям проводить интерактивный анализ более удобно и эффективно, а также в то же время это также значительно снижает стоимость анализа, чтобы реализовать интеграцию служб автономного хранилища данных.
Об авторе: Ван Ци (цветочное имя Хуэйцин), технический эксперт Alibaba, в настоящее время занимается исследованиями и разработкой механизма интерактивного анализа Hologres.
В будущем мы запустим серию раскрытий основных принципов технологии Hologres Конкретные планы таковы, пожалуйста, продолжайте обращать внимание!