задний план
С непрерывным развитием области больших данных все больше и больше концепций предлагается и применяется в производстве, и концепция озера данных является одной из них.Концепция относится к внедрению Alibaba Cloud: репозиторий, в котором можно хранить структурированные и неструктурированные данные любого масштаба, поддерживающий большие данные и вычисления с использованием ИИ Data Lake Formation (DLF), как основной компонент облачной архитектуры озера данных, помогает пользователям быстро и легко создавать облачные решения для озера данных , Создание озера данных обеспечивает унифицированное управление метаданными в озере, контроль разрешений на уровне предприятия и бесшовное подключение к нескольким вычислительным механизмам, устраняя хранилища данных и получая представление о ценности для бизнеса.
Ключевым звеном в решении озера данных является адаптация между хранилищем данных и вычислительными механизмами.Чтобы решить эту проблему, Netflix разработала Iceberg, который теперь является проектом верхнего уровня Apache.
определение
Iceberg — это открытый формат таблицы (формат таблицы) для сценариев анализа массивных данных Формат таблицы (формат таблицы), упомянутый в определении, можно понимать как способ организации файлов метаданных и данных в вычислительной среде (Flink, Spark). ..) и над файлом данных.Как показано:
Формат таблицы (формат таблицы) – это абстрактное понятие на уровне реализации системы баз данных. Как правило, формат таблицы будет определять некоторую информацию о метаданных таблицы и интерфейсы API, например, какие поля включены в таблицу, форму организации файлов. под таблицей, а также информацию об индексе таблицы. , статистику и интерфейс для механизма запросов верхнего уровня для чтения и записи файлов в таблице.
характеристика
Хранение данных, подключаемый модуль вычислительного движка
Целью Iceberg в начале проектирования является обеспечение реализации открытого и общего табличного формата (Table Format), поэтому он не привязан к конкретному хранилищу данных и вычислительному движку.Общее хранилище данных (HDFS, S3) в текущее поле больших данных...), вычислительные механизмы (Flink, Spark...) могут быть подключены к Iceberg. В производственной среде технические специалисты могут выбирать различные компоненты для использования в соответствии с реальной ситуацией в компании. Читать данные, хранящиеся на файловая система.
Пакетная интеграция потока в реальном времени
После того, как вышестоящие компоненты Iceberg записывают данные, нижестоящие компоненты могут быть своевременно прочитаны и опрошены. Это может соответствовать сценариям в реальном времени. Кроме того, Iceberg предоставляет интерфейсы потокового/пакетного чтения и потоковые/пакетные интерфейсы записи.Технические специалисты могут в одном процессе , Одновременная обработка потоковых данных и пакетных данных значительно упрощает связь ETL.
Эволюция стола
Iceberg может выполнять эволюцию схемы уровня таблицы через SQL. При выполнении этих операций стоимость чрезвычайно низкая. Нет трудоемких и трудоемких функций данных чтения, переписывания или миграционных данных.
Например, в широко используемом улье, если нам нужно изменить таблицу, разделенную по дням, на почасовую, в это время мы не можем напрямую изменить исходную таблицу, мы можем только создать новую таблицу, разделенную по часам, а затем поместить данные вставляются в новую почасово секционированную таблицу.Более того, даже если мы используем команду «Переименовать», чтобы изменить имя новой таблицы на исходную таблицу и использовать приложение предыдущего уровня исходной таблицы, может потребоваться изменить SQL из-за к модификации поля раздела.Эта стоимость Опыт очень утомительный.
Эволюция схемы
Iceberg поддерживает следующие режимы эволюции
ADD
Добавить новый столбец в таблицу или вложенную структуру
Drop
Удаление столбца из таблицы или вложенной структуры
Rename
Переименовать столбец в таблице или вложенной структуре
Update
Увеличьте длину базовых типов в сложных структурах (struct, map
Reorder
Изменение порядка сортировки полей в столбце или вложенной структуре
Здесь следует отметить, что структура Map не поддерживает ADD и Drop.
Iceberg гарантирует, что Schema Evolution — это независимый рабочий процесс без побочных эффектов, операция с метаданными, которая не включает процесс перезаписи файлов данных.Подробности следующие:
-
При добавлении столбцов существующие данные не будут считываться из другого столбца.
-
Удаление столбца или поля во вложенной структуре не меняет значение любого другого столбца.
-
При обновлении столбца или поля во вложенной структуре значение любого другого столбца не изменяется.
-
При изменении порядка столбцов или полей во вложенной структуре связанные значения не изменяются
Iceberg использует уникальный идентификатор для поиска информации о каждом столбце в таблице.При добавлении нового столбца ему будет присвоен новый уникальный идентификатор, и идентификатор, который использовался, никогда не будет использоваться.
Существуют некоторые проблемы при использовании информации об имени или позиции для поиска столбца. Например, если используется имя, имя может повторяться. Если используется позиция, порядок нельзя изменить, а отброшенные поля нельзя удалить.
Эволюция разделов
Iceberg может напрямую изменять существующую таблицу, потому что процесс запроса Iceberg напрямую не связан с информацией о разделах.
Когда мы меняем стратегию секционирования таблицы, данные до соответствующей модификации секционирования не изменятся, по-прежнему будет использоваться старая стратегия секционирования, а новые данные примут новую стратегию секционирования, то есть та же самая таблица будет есть две стратегии секционирования, старые данные принимают старую стратегию секционирования, а новые данные принимают новую и новую стратегии секционирования.В метаданных две стратегии секционирования независимы друг от друга и не перекрываются.
Когда технические специалисты запрашивают данные, если существует межраздельная стратегия, они будут разобраны на два разных плана выполнения, как показано на рисунке, представленном на официальном сайте Iceberg:
Таблица booking_table на рисунке секционирована по месяцам в 2008 г. и изменена на секционирование по дням после ввода 2009 г. В этой таблице сосуществуют две стратегии секционирования.
Благодаря скрытому разделу Iceberg техническим специалистам не нужно указывать условия фильтрации разделов в SQL при написании SQL-запросов — Iceberg автоматически разделит и отфильтрует ненужные данные.
Операция эволюции раздела Iceberg также является операцией метаданных и не перезаписывает файлы данных.
Эволюция порядка сортировки
Iceberg может изменить стратегию сортировки в существующей таблице. После изменения стратегии сортировки старые данные по-прежнему будут использовать старую стратегию сортировки. Механизм вычислений, который записывает данные в Iceberg, всегда будет выбирать последнюю стратегию сортировки, но при сортировке Когда стоимость чрезвычайно велико, сортировка не выполняется.
Скрытый раздел
Информация о разделах Айсберга не требует ручного обслуживания, ее можно скрыть.В отличие от других стратегий разделов, подобных Hive, поле/стратегия раздела Айсберга (рассчитывается по определенному полю) может не быть полями таблицы и каталогами хранения данных таблицы.Это не имеет значения , После создания таблицы или изменения стратегии раздела новые данные будут автоматически вычислять раздел, к которому они принадлежат.При запросе вам не нужно поле/стратегия раздела реляционной таблицы, вам нужно только сосредоточиться на бизнес-логике, и Iceberg автоматически отфильтрует данные Required partition.
PS: Именно потому, что информация о разделе Iceberg и каталог хранения данных таблицы независимы, раздел таблицы Iceberg может быть изменен, и это не требует переноса данных.
Зеркальный запрос данных (путешествие во времени)
Iceberg предоставляет возможность запрашивать снимок данных в определенный момент истории таблицы.Благодаря этой функции технические специалисты могут применять новейшую логику SQL к историческим данным.
Поддержка транзакций (ACID)
Предоставляя механизм транзакций (ACID), Iceberg имеет возможность upsert и делает возможным чтение во время записи, чтобы данные могли потребляться нижестоящими компонентами быстрее.Транзакции гарантируют, что нижестоящие компоненты могут потреблять только зафиксированные данные, без частичного или частичного чтения. даже незафиксированные данные.
Поддержка параллелизма на основе оптимистической блокировки
Основанный на оптимистической блокировке, Iceberg обеспечивает возможность одновременной записи нескольких программ и обеспечивает линейную согласованность данных.
Обрезка данных на уровне файлов
Метаданные Iceberg предоставляют некоторую статистическую информацию для каждого файла данных, такую как максимальное значение, минимальное значение, количество счетчиков и т. д. Таким образом, условия фильтрации запроса SQL могут быть переданы на уровень файла в дополнение к обычной фильтрации разделов и столбцов. , что значительно повышает эффективность запросов.
недостаточный
Хотя Iceberg имеет очень абстрактный и элегантный дизайн, его функции не идеальны, например, возможность удалять строки на уровне строк, адаптивность FlinkSQL, возможность потокового чтения таблиц FlinkSQL V2 и ошибки в обновлениях на уровне строк. , и т. д. Тем не менее, сообщество уже приложило все усилия для улучшения связанных функций.Некоторые важные функции, необходимые в производстве, были запланированы для дорожной карты Iceberg.С улучшением связанных функций внутренние перспективы Iceberg очень достойны ожидания.
Эта статья опубликована в блогеOpenWriteвыпуск!