Понимание Apache Kylin в этой статье основано на крупномасштабном использовании, эксплуатации и обслуживании, а также углубленной разработке Apache Kylin в производственной среде за последние два года.Я внес 98 коммитов в сообщество Kylin, в том числе многие новые функции и глубокая оптимизация. Понимание Baidu Palo в этой статье основано на чтении официальных документов и документов, поверхностном чтении кода и более глубоком тестировании.
Для получения дополнительных галантерейных товаров, пожалуйста, обратите внимание на публичный аккаунт WeChat «AI Frontline» (ID: ai-front)
1 Архитектура системы
1.1 What is Kylin
1.2 What is Palo
2 Модель данных
2.1 Модель агрегации Кайлина
2.2 Модель агрегации Пало
2.3 Kylin Cuboid VS Palo RollUp
2.4 Детальная модель Пало
3 Механизм хранения
4 Импорт данных
5 запросов
6 Точная дедупликация
7 Метаданные
8 Высокая производительность
9 Высокая доступность
10 Ремонтопригодность
10.1 Развертывание
10.2 Эксплуатация и техническое обслуживание
10.3 Служба поддержки клиентов
11 Простота использования
11.1 Доступ к запросу
11.2 Стоимость обучения
11.3 Schema Change
12 функций
13 Сообщество и экология
14 Резюме
15 ссылок
Примечание: сравнение этой статьиНа основе Apache Kylin 2.0.0 и Baidu Palo 0.8.0.
Основная идея Kylin заключается в предварительном вычислении, используя пространство вместо времени дляУскоряет запросы OLAP с фиксированными шаблонами запросов.
Теоретической основой Kylin является теория куба, каждая комбинация измерений называется кубоидом, а совокупность всех кубоидов — кубом. Кубоид, состоящий из всех измерений, называется базовым кубоидом, а (A, B, C, D) на рисунке является базовым кубоидом, и все кубоиды могут быть рассчитаны на основе базового кубоида. При запросе Kylin автоматически выберет наименьший «самый маленький» кубоид, который удовлетворяет условиям. Например, следующий SQL будет соответствовать кубоиду (A, B):
select xx from table where A=xx group by B
Kylin-cube
На следующем рисунке представлена схема потока данных Kylin, который состоит только из двух компонентов:Сервер заданий и сервер запросов.Kylin JobServer в основном отвечает за создание кубов из источников данных (Hive, Kafka) с помощью вычислительных механизмов (MapReduce, Spark) и их хранение в механизмах хранения (HBase); QueryServer в основном отвечает за синтаксический анализ SQL, создание и оптимизацию логического плана, а HBase Инициируются несколько регионов запроса, и результаты нескольких регионов объединяются для создания окончательного набора результатов.
kylin-data
На следующем рисунке показана схема подключаемой архитектуры Kylin.С точки зрения проектирования архитектуры источник данных Kylin используется для построения куба.И вычислительный движок, и движок хранения являются подключаемыми.Ядром Kylin является подключаемая архитектура, модель данных Cube и алгоритм Cuboid.
Kylin
Palo — это система OLAP на основе MPP, которая в основном интегрируетGoogle Mesa (модель данных), Apache Impala (движок запросов MPP) и Apache ORCFile(Формат хранения, кодирование и сжатие).
baidu-palo
Системная архитектура Palo выглядит следующим образом: Palo в основном делится на два компонента: FE и BE.FE в основном отвечает за компиляцию запросов, распределение и управление метаданными (на основе памяти, аналогично HDFS NN); BE в основном отвечает за запросы система исполнения и хранения.
baidu-palo
Kylin делит столбцы в таблице на столбцы измерений и столбцы индикаторов. Во время импорта данных и запроса показатели в одном и том же столбце измерения будут агрегированы в соответствии с соответствующей функцией агрегирования (сумма, количество, минимум, максимум, точная дедупликация, приблизительная дедупликация, процентиль, TOPN).
При сохранении в HBaseИзмерение Cuboid+ будет использоваться как Rowkey для HBase, а индикатор будет использоваться как значение HBase., как правило, все индикаторы будут находиться в семействе столбцов HBase, каждый столбец соответствует индикатору, но для более крупных индикаторов дедупликации они будут разбиты на второе семейство столбцов отдельно.
Kylin-model
Модель агрегации Palo заимствована у Mesa, но по сути она такая же, как модель агрегации Kylin, за исключением того, что в Palo измерение называется Key, а индикатор называется Value.
palo-data-model
Более уникальной функцией агрегирования в Palo является функция замены, которая гарантирует то же самое.Запись ключей сохраняет только последнее значение,Вы можете использовать эту функцию замены для достиженияточечное обновление. Как правило, данные системы OLAP поддерживают только добавление, но, например, при возмещении транзакций в электронной коммерции, обработке недействительных кликов по рекламным кликам необходимо обновить один фрагмент данных, записанный ранее. чтобы обновить все данные сегмента, содержащие соответствующие записи обновления, но с функцией Relpace нам нужно добавить только 1 новую запись. Но у функции Repalce в Palo есть недостаток:не поддерживает предварительную агрегацию,То есть, пока ваш SQL содержит функцию Repalce, даже если есть другие индикаторы Sum и Max, которые можно предварительно агрегировать, они должны быть рассчитаны на месте.
Почему Palo поддерживает обновления точек?
Сегмент в Kylin является неизменяемым, что означает, что после создания HFile он не изменится. Однако файл сегмента в Palo, как и в HBase, можно сжать.Подробности см. в разделе Управление версиями данных Mesa в Google Mesa Paper Interpretation (https://blog.bcmeng.com/post/google-mesa.html#mesa). %E6%95%B0%E6%8D%AE%E7%89%88%E6%9C%AC%E5%8C%96%E7%AE%A1%E7%90%86)
Модель агрегации Palo имеет недостаток по сравнению с Kylin:То есть столбец может иметь только одну функцию предварительного агрегирования, и нельзя задать несколько функций предварительного агрегирования.Однако Palo может вычислять другие агрегатные функции на месте. Разработчик Baidu Palo упомянул в обзоре, что у Palo есть другое решение этой проблемы:Поскольку Palo поддерживает атомарные обновления для импорта нескольких таблиц, поэтому, когда столбцу требуется несколько функций агрегирования, вы можете создать несколько таблиц в Palo. Когда одни и те же данные импортируются, Palo может атомарно обновлять несколько таблиц Palo одновременно. Недостатком является то, что для маршрутизации запросов нескольких таблиц Palo требуется прикладной слой Готово.
Концепция, эквивалентная кубоиду Кайлина в Пало, - это таблица RollUp,Таблицы Cuboid и RollUp можно рассматривать как разновидность материализованных представлений или индексов.. Таблица RollUp Palo такая же, как Cuboid Kylin, ** не нужно указывать при запросе, и система будет маршрутизировать в соответствии с условиями запроса. Как показано ниже:
Palo Rollup
Правила маршрутизации для таблицы RollUp в Palo следующие:
Выберите сводную таблицу со всеми столбцами запроса.
Отфильтровать наиболее подходящую таблицу RollUp по отфильтрованному и отсортированному столбцу
Отфильтруйте наиболее подходящую таблицу RollUp в соответствии с столбцом соединения.
наименьшее количество строк
наименьшее количество столбцов
Kylin cuboid vs palo rollup
Из-за следующих недостатков агрегированной модели Пало, Пало вводит детальную модель.
Необходимо различать столбцы параметров и показателей.
Когда есть много столбцов измерений, стоимость сортировки высока.
Подсчет стоит дорого и должен считывать все столбцы измерений (вы можете обратиться к решению Kylin для оптимизации)
В подробной модели Palo не будет агрегирования и не будет различаться столбцы измерений и столбцы индикаторов, но при создании таблицы необходимо указать столбцы сортировки.Когда данные импортируются, они будут отсортированы по столбцам сортировки, и будет более эффективно фильтровать по столбцу сортировки при запросе.
Как показано на изображении ниже, столбцы сортировки — это год и город.
Kylin-detail-model
Здесь следует отметить одну вещь,Таблица в Palo может иметь только одну модель данных, то есть агрегированную или детализированную модель, и модель данных сводной таблицы должна быть согласована с базовой таблицей.То есть базовая таблица детализированной модели не может иметь сводную таблицу агрегированной модели.
Механизм хранения Kylin HBase:
Как показано на рисунке выше, в Kylin куб можно разделить на несколько сегментов в зависимости от времени.Сегмент — это наименьшая единица импорта и обновления данных в Kylin.Сегмент в Kylin соответствует таблице в HBase. Таблица в HBase будет разделена на несколько регионов в соответствии с разделом Range, и каждый регион будет разделен на несколько HFiles в соответствии с размером.
В Интернете было много статей о принципе HFile, поэтому я кратко представлю его здесь. Прежде всего, HFile можно разделить на метаинформацию в целом, блоки Blcoks, части Index3, блоки и индекс можно разделить на две части: данные и мета. Блок — это наименьшая единица чтения данных. Блок состоит из нескольких пар "ключ-значение". Один ключ-значение представляет строку записей в HBase. Ключ-значение состоит из четырех частей: Kylin-Len, Value-Len, Key-Bytes и Композиция Value-Bytes. Для получения более подробной информации вы можете обратиться к следующему рисунку (рисунок ниже взят из Интернета, конкретный источник неизвестен):
HBase-HFile
Механизм хранения Palo:
Как показано на рисунке выше, Palo's Table поддерживает вторичное секционирование.Вы можете сначала выполнить первичное секционирование в соответствии с столбцом даты, а затем сегментировать в соответствии с указанным столбцом Hash. В частности, таблица может быть разделена на несколько разделов в соответствии с столбцом даты, и каждый раздел может содержать несколько планшетов,Планшет — это наименьшая физическая единица хранения для перемещения данных, репликации и других операций.Данные между каждым планшетом не пересекаются и хранятся физически независимо. Раздел можно рассматривать как наименьшую логическую единицу управления,Импорт и удаление данных можно выполнить только для одного Раздела.Количество планшетов в таблице = номер раздела * номер корзины. Таблетка будет разделена на несколько файлов сегментов в соответствии с определенным размером (256M). Сегмент хранится в столбцах, но будет разделен на несколько блоков строк по строкам (1024).
palo segment file
Давайте посмотрим на конкретный формат файла Palo Segment.Формат файла Palo в основном относится к Apache ORC. Как показано на рисунке выше, файл Palo в основном состоит из двух частей: метаданных и данных.Мета в основном включает в себя заголовок, метасегмент, метаданные столбца самого файла и метаданные каждого потока данных столбца. каждую часть можно увидеть на картинке., подробнее. Часть данных в основном включает в себя индекс и данные каждого столбца, где индекс относится к минимальным и максимальным значениям каждого столбца и позиции потока данных Stream; данные — это конкретное содержимое данных каждого столбца, и данные будут использовать различные потоки в соответствии с различными типами данных.Storage, Present Stream представляет, является ли каждое значение Null, Data Stream представляет собой поток двоичных данных, Length Stream представляет длину типа данных нефиксированной длины. На следующем рисунке показан пример String с использованием словарного кодирования и прямого хранения Stream.
Palo String encoding
Давайте посмотрим на префиксный индекс Пало:
Palo index
По сути, хранилище данных Palo представляет собой структуру данных, аналогичную SSTable (Sorted String Table). Эта структура представляет собой упорядоченную структуру данных, которая может храниться упорядоченным образом в указанном столбце. В такой структуре данных очень эффективно использовать отсортированный столбец в качестве условия поиска. Индекс префикса, то есть на основе сортировки, реализует метод индекса для быстрого запроса данных в соответствии с заданным столбцом префикса. Формат индексного файла префикса показан выше.Ключ индекса — это первые 36 байтов ключа сортировки, записанные в первой строке каждого блока строк, а значение — это смещение блока строк в файле сегментов.
С префиксным индексом процесс запроса определенного ключа представляет собой два бинарных поиска:
Сначала загрузите файл индекса, выполните поиск файла индекса по двоичному коду, чтобы получить смещение блоков строк, содержащих определенный ключ, а затем получите указанный блок строк из файлов сегментов;
Бинарный поиск определенного ключа в Rowblocks
Импорт данных Kylin:
Kylin data loading
Как показано на рисунке выше, импорт данных Kylin в основном разделен на этапы построения таблицы большой ширины Hive (на этом этапе будет обработано соединение), построения словаря со столбцами измерений, построения кубоида послойно, преобразования кубоида в HFile; загрузить HFile в HBase; обновление метаданных.
Среди них функция шага перераспределения широкоформатной таблицы состоит в том, чтобы сделать данные всей таблицы единообразными и избежать перекоса данных на последующих шагах.У Kylin есть конфигурация, позволяющая пропустить этот шаг.
Функция шага «Извлечь отдельные столбцы» состоит в том, чтобы получить уникальное значение столбца измерения, которое необходимо для построения словаря. Если столбец измерения идентификатора имеет 8 строк со значениями 1, 2, 1, 2, 2, 1, 1, 2, то после этого шага значение столбца идентификатора будет иметь только две строки со значениями 1 и 2. Этот шаг предназначен для следующий шаг. Столбцы измерений быстрее при построении словарей.
Остальные шаги относительно просты для понимания, поэтому я не буду их повторять. Для получения более подробной информации см. Принцип построения куба Apache Kylin (https://blog.bcmeng.com/post/kylin-cube.html).
Импорт данных Пало:
palo data loading
Двумя основными этапами импорта данных Palo являются ETL и ЗАГРУЗКА, Этап ETL в основном выполняет следующие задачи:
Проверка типа и формата данных
Разделить данные по Teblet
Сортировка по ключевому столбцу и совокупное значение
Этап ЗАГРУЗКА в основном выполняет следующие задачи:
BE, соответствующий каждому планшету, извлекает отсортированные данные.
Преобразуйте формат данных и обновите метаданные после создания индекса LOADING.
Килин запрос:
Kylin query
Как показано на рисунке выше, весь процесс запроса Kylin относительно прост и представляет собой модель Scatter-Gather. Содержимое круглого поля на рисунке находится на стороне Kylin QueryServer, а содержимое квадратного поля — на стороне HBase. После того, как Kylin QueryServer получит SQL, он сначала проанализирует SQL, затем сгенерирует и оптимизирует план, затем сгенерирует и скомпилирует код в соответствии с планом, а затем сгенерирует запрос сканирования HBase в соответствии с планом. , сторона HBase также будет выполнять фильтрацию и агрегацию (на основе реализации сопроцессора HBase), а Kylin объединит результаты, возвращенные стороной HBase, и передаст сгенерированный код в Calcite для расчета.
Пало-запрос:
palo-impala-query
Механизм запросов Palo использует Impala, архитектуру MPP. FE Пало в основном отвечает за разбор SQL, анализ синтаксиса, создание и оптимизацию плана запросов. Генерация плана запроса в основном делится на два этапа:
Создайте план запроса с одним узлом (нижний левый угол рисунка выше).
Распространите план запроса одного узла и сгенерируйте PlanFragment (правая половина рисунка выше).
Первый шаг в основном включает в себя создание дерева планов, выталкивание предикатов, сокращение разделов таблицы, проекции столбцов, оптимизацию на основе затрат и т. д. Второй шаг — распространение плана запроса одного узла.Минимизируйте перемещение данных и максимизируйте локальное сканирование, распределенный метод заключается в добавлении ExchangeNode, а дерево плана выполнения будет разделено на PlanFragments с ExchangeNode в качестве границы, а один PlanFragment инкапсулирует часть PlanTree для одного и того же набора данных на одном компьютере. Как показано на рисунке выше: поток данных каждого фрагмента и конечная зависимость отправки результата: DataSink.
После того, как FE сгенерирует дерево плана запроса, различные узлы плана (сканирование, объединение, объединение, агрегирование, сортировка и т. д.), соответствующие BE, могут выполнять операции, за которые они отвечают.
Точная дедупликация Kylin:
Точная дедупликация Kylin основана на глобальном словаре и реализации предварительно вычисленной точной дедупликации RoaringBitmap. Дополнительные сведения см. в официальном руководстве Apache Kylin Precise Deduplication and Global Dictionary (https://blog.bcmeng.com/post/kylin-distinct-count-global-dict.html).
Точная дедупликация в Palo:
Точная дедупликация Palo — это точная дедупликация на месте. Расчет точной дедупликации Palo будет разделен на два этапа:
Агрегировать по всей группе по полям и полям с точной дедупликацией
Агрегировать по всем группам по полям
Вот пример простого преобразования эквивалентности:
Точная производительность дедупликации Palo на месте иМощность дедупликации, количество индикаторов дедупликации и размер отфильтрованных данных имеют отрицательную корреляцию;
Метаданные Kylin:
Метаданные Kylin хранятся с использованием HBase, который хорошо масштабируется. Каждые конкретные метаданные Kylin представляют собой файл Json, Rowkey HBase — это имя файла, а значение — это содержимое файла Json. Таблица метаданных Kylin устанавливается с атрибутом IN_MEMORY => 'true', и таблица метаданных будет находиться в памяти HBase RegionServer, поэтому производительность запросов метаданных очень хорошая, обычно от нескольких мс до десятков РС.
Одна из проблем с использованием HBase для хранения метаданных Kylin заключается в том, что в подключаемой архитектуре Kylin, даже если мы реализуем другой механизм хранения, мы должны развернуть HBase для хранения метаданных, поэтому Kylin действительно должен сделать механизм хранения подключаемым. необходимо реализовать независимое хранилище метаданных.
Метаданные Пало:
Метаданные Palo размещаются в памяти, что обеспечивает хорошую производительность и отсутствие дополнительных системных зависимостей. Недостатком является то, что память одной машины ограничена, а возможности расширения ограничены.Однако, согласно отзывам разработчиков Palo, поскольку у самого Palo не так много метаданных, сами метаданные не занимают много памяти.В настоящее время , физические машины с большим объемом памяти должны представлять собой кластеры OLAP, способные поддерживать сотни машин. Кроме того, система OLAP отличается от распределенной системы хранения, такой как HDFS, а стоимость эксплуатации и обслуживания развертывания нескольких кластеров не сильно отличается от стоимости одного кластера.
Конкретные принципы метаданных Palo можно найти в официальном документе Palo Metadata Design Document (https://github.com/baidu/palo/wiki/Metadata-Design).
Почему Kylin Query Fast:
Kylin query
Основной причиной быстрого запроса Kylin являются предварительные вычисления, как показано на рисунке (рисунок из Apache kylin 2.0: от классического olap к хранилищу данных в реальном времени https://www.slideshare.net/YangLi43/apache-kylin). -20-от-классического-olap-к-хранилищу-данных-реального-времени),Kylin не нуждается в Join при запросе на сайте и почти не нуждается в агрегации, в основном Scan + Filter.
Почему Palo Query Fast:
Метаданные в памяти. Метаданные Palo находятся в памяти, и доступ к метаданным осуществляется быстро.
Модели агрегации могут быть предварительно агрегированы при импорте данных.
Как и Kylin, он также поддерживает предварительно вычисленную таблицу RollUp.
Механизм запросов MPP.
Векторизованное исполнение. По сравнению с генерацией кода Calcite в Kylin, векторизованное выполнение лучше работает при обработке запросов с высокой степенью параллелизма и малой задержкой.Сама генерация кода Kylin может занимать десятки и даже сотни мс.
Столбчатое хранилище + индекс префикса.
Высокая доступность Kylin:
Высокая доступность Kylin JobServer: сервер заданий Kylin не имеет состояния.После того, как сервер заданий умирает, другие серверы заданий быстро берут на себя выполнение текущего задания. Высокая доступность JobServer основана на Zookeeper.Подробности см. в подробном объяснении создания и планирования заданий Apache Kylin (https://blog.bcmeng.com/post/kylin-job.html).
Высокая доступность Kylin QueryServer:Kylin QueryServer также не имеет состояния, и его высокая доступность обычно достигается за счет компонентов балансировки нагрузки, таких как Nginx.
Высокая доступность, на которую опирается Kylin Hadoop:Нетрудно просто обеспечить высокую доступность собственных компонентов Kylin, но обеспечить высокую доступность общего импорта данных и запросов Kylin не составляет труда.очень сложно, потому что одновременно должна быть гарантирована высокая доступность таких сервисов, как HBase, Hive, Hive Metastore, Spark, Mapreduce, HDFS, Yarn, Zookeeper и Kerberos.
Пало Высокая доступность:
Высокая доступность Palo FE:Высокая доступность Palo FE в основном реализована на основе Java-версии BerkeleyDB,BDB-JE реализует алгоритм протокола консенсуса, подобный Paxos.
Высокая доступность Palo BE:Palo гарантирует, что несколько копий каждого планшета будут выделены для разных BE, поэтому сбой BE не повлияет на доступность запросов.
Развертывание Kylin:Если вы начинаете с нуля, вам потребуется развернуть кластер Hadoop и кластер HBase. Даже если у компании уже есть относительно полная экосистема Hadoop, перед развертыванием Kylin необходимо сначала развернуть клиент Hadoop, клиент HBase, клиент Hive и клиент Spark.
Развертывание Пало:Запустите FE и BE напрямую.
Эксплуатация и обслуживание Kylin:Эксплуатация и обслуживание Kylin предъявляют высокие требования к администратору: во-первых, вы должны понимать принципы работы HBase, Hive, MapReduce, Spark, HDFS и Yarn, во-вторых, иметь богатый опыт устранения неполадок и настройки MapReduce Job и Spark Job; тогда вы должны освоить Куб.Сложный метод настройки,когда проблема возникает в конце,ссылка на устранение неполадок длинная и сложность высокая.
Пало Операции:Пало просто нужно понять и освоить саму систему.
Служба поддержки клиентов Кайлин:Нужно объяснить пользователям кучу концепций, связанных с Hadoop; нужно научить пользователей, как использовать Kylin Web; нужно научить пользователей, как оптимизировать Cube (нет единого, четкого принципа оптимизации); нужно научить пользователей, как просматривать MR и журналы Spark, необходимо научить пользователей запрашивать информацию;
Служба поддержки Пало:Пользователей необходимо обучить концепциям модели агрегации, подробной модели, префиксного индекса и сводной таблицы.
Доступ к запросам Kylin:Kylin поддерживает методы запросов Htpp, JDBC, ODBC 3.
Доступ к пало-запросам:Palo поддерживает протокол Mysql, и большое количество существующих инструментов Mysql можно использовать напрямую с низкими затратами на обучение и миграцию для пользователей.
Стоимость обучения Кайлин:Чтобы правильно использовать Kylin, пользователям необходимо понимать следующие концепции:
Cuboid
Совокупная группа
обязательное измерение
совместный размер
Иерархическое измерение
производное измерение
Extend Column
Порядок HBase RowKey
Кроме того, как упоминалось ранее, пользователям также необходимо научиться читать журналы Mapreduce Job и Spark Job.
Стоимость обучения Пало:Пользователям необходимо понимать концепции агрегированной модели, подробной модели, префиксного индекса и сводной таблицы.
Онлайн-изменение схемы — очень важная функция, потому что в реальном бизнесе изменения схемы будут очень частыми.
Kylin Schema Change: при любых изменениях схемы куба пользователями Kylin необходимо обновить все данные в среде Staging, а затем переключиться на среду Prod.Весь технологический цикл очень длинный, и трата ресурсов серьезна.
Изменения схемы Пало:Palo поддерживает онлайн-изменение схемы.
Так называемое онлайн-изменение Схемы относится кИзменения схемы не повлияют на обычный импорт и запрос данных.В Palo есть 3 типа сетевых изменений Schema:
Прямое изменение схемы: это повторное обновление всего объема данных, и стоимость является самой высокой, аналогично подходу kylin. При изменении типа столбца вам необходимо следовать этому методу при добавлении столбца в разреженный индекс.
изменение схемы сортировки: метод сортировки столбцов был изменен, и данные необходимо переупорядочить. Например, удалите столбец в столбце сортировки, и порядок поля изменится.
изменение связанной схемы: нет необходимости преобразовывать данные, это делается напрямую. Исторические данные не будут обновляться, а новые загруженные данные будут обрабатываться в соответствии с новой схемой.Для старых данных значение вновь добавленного столбца напрямую заполняется значением по умолчанию соответствующего типа данных. Например, добавьте операцию столбца. Друид также поддерживает этот подход.
Apache kylin VS baidu palo
Примечание. Что касается подробного запроса Kylin, сам Kylin имеет только модель агрегации, но также можетРеализуйте подробный запрос, построив только базовый кубоид со всеми столбцами в качестве столбцов измерения,Недостатком является относительно низкая эффективность.
Примечание. Хотя Palo может поддерживать как запросы OLAP с высокой степенью параллелизма и малой задержкой, так и запросы Adhoc с высокой пропускной способностью, очевидно, что эти два типа запросов будут влиять друг на друга. Поэтому Baidu также использует два кластера для выполнения запросов OLAP и запросов Adhoc в практических приложениях.
Сообщество Palo только появилось, и основными пользователями являются только Baidu; сообщество Kylin и экология относительно зрелы,Kylin — первый проект Apache с открытым исходным кодом верхнего уровня, полностью созданный китайскими разработчиками., который в настоящее время используется в производственной среде многих крупных компаний.
В этой статье сравниваются Apache Kylin и Baidu Palo по многим аспектам.Если возникло недопонимание, поправьте меня. Эта статья представляет собой более объективное описание архитектуры и принципов работы двух систем с меньшим количеством субъективных суждений. Недавно изучив Palo, ClickHouse и TiDB, я подумалКакова тенденция развития систем OLAP, какой должна быть лучшая архитектура системы OLAP следующего поколения и может ли система хорошо поддерживать OLTP и OLAP одновременно, я напишу статью, чтобы описать эти проблемы после того, как я ясно их обдумаю.Конечно, если у вас есть хорошие идеи, вы также можете прямо комментировать.
1 Документация и исходный код Palo: https://github.com/baidu/palo
2 Исходный код Kylin: https://github.com/apache/kylin
3 Apache kylin 2.0: от классического olap к хранилищу данных в реальном времени Скриншот PPT на странице 4 в разделе высокой производительности Kylin: https://www.slideshare.net/YangLi43/apache-kylin-20-from-classic-olap -в хранилище данных в реальном времени
4 Интерпретация и применение архитектуры Palo с открытым исходным кодом хранилища данных Baidu MPP Скриншот PPT на странице 31 цитируется в разделе запросов Palo https://myslide.cn/slides/6392