Школа Больших Данных
566 subscribers
117 photos
711 links
Канал Школы Больших Данных https://www.bigdataschool.ru/ - обучение технологиям Big Data: разработка приложений и администрирование кластеров Hadoop, Kafka, Spark, NoSQL, Python, ML и DS.
Тел: +7 (495) 41-41-121
Контакты: @Bigdataschool_msk @olga_burykh
Download Telegram
#Greenplum #статьи
Завтра рассмотрим, какие системные метрики Greenplum необходимо отслеживать администратору кластера и дата-инженеру для оценки работоспособности и эффективности этой СУБД, а также с помощью каких инструментов это сделать.

@BigDataSchool_ru
https://bigdataschool.ru/blog/greenplum-monitoring-tools.html
#Greenplum #статьи
Мониторинг средствами Greenplum

Прежде всего, стоит отметить, что контролировать Greenplum можно с помощью различных инструментов, включенных в систему или доступных в качестве надстроек. Это применимо и к отдельным компонентам MPP-СУБД, например, благодаря встроенной интеграции Prometheus в Greenplum Streaming Server можно получать метрики времени выполнения для экземпляра gpss-сервера при включенном мониторинге Prometheus для процесса UNIX. После запуска сервера Prometheus метрики интегрированных сервисов доступны на порту 9090 по умолчанию.

В частности, для мониторинга активности и производительности базы данных VMware Greenplum Command Center, дополнительный веб-интерфейс, предоставляет информацию о состоянии кластера, графические инструменты администрирования, мониторинг запросов в реальном времени, а также исторические данные о кластерах и запросах.

Администратор базы данных Greenplum следит за системой, отслеживая проблемные события, такие как выход из строя сегмента или нехватка места на диске на хосте сегмента. Поскольку Greenplum состоит из нескольких экземпляров PostgreSQL (координатора и сегментов), охватывающих несколько компьютеров, то для мониторинга необходимо знать информацию о системе в целом, а также информацию о состоянии отдельных экземпляров. Для этого используется утилита gpstate.

Также администратору Greenplum следует следить за тем, чтобы файловые системы, в которых находятся каталоги данных координатора и сегмента, не заполнялись более чем на 70%. Хотя более наполненный диск не приведет к повреждению данных, это может помешать нормальной работе. А если диск переполнится, сервер базы данных может отключиться. Чтобы этого не произошло, рекомендуется регулярно запускать команды очистки VACUUM/ VACUUM FULL в пользовательских таблицах, чтобы освободить неиспользуемое пространство.

Для проверки оставшегося свободного места (в килобайтах) в файловых системах узла сегмента можно использовать внешнюю таблицу в административной схеме данных, сделав следующий запрос (далее на сайте).

@BigDataSchool_ru
https://bigdataschool.ru/blog/greenplum-monitoring-tools.html
#Greenplum #статьи
Мониторинг c Prometheus, Grafana и другими внешними сервисами

Помимо встроенных утилит Greenplum, которые позволяют выполнять административные операции, на практике удобно использовать визуальные дэшборды, которые наглядно отображают все необходимые параметры. Обычно это реализуется с помощью специализированных сервисов мониторинга, таких как база данных временных рядов Prometheus и платформа визуализации Grafana.

Связка Prometheus с Grafana сегодня стала стандартом де-факто для мониторинга системных метрик. Prometheus сам собирает метрики из наблюдаемых систем с помощью механизма pull, периодически отправляя запрос к конечной точке метрик, чтобы получить ее последние значения. Эти данные сохраняются как значения ключей, поскольку базы данных временных рядов активно используют эту модель для хранения данных в высокоэффективном формате. Ключ описывает метрику, а значение содержит ее фактическую величину в виде числа.
Поскольку Prometheus относится к базам данных временных рядов, это позволяет отслеживать изменения значений системных метрик во времени. Также в базе хранятся различные метаданные в виде меток (labels).
База данных Prometheus является источником данных для Grafana, в веб-интерфейсе которой можно настроить и просматривать графики, гистограммы и другие визуализации.

Например, дата-инженеры и администраторы кластера Greenplum в компании GlowByte использовали связку Prometheus + Grafana, чтобы построить собственные дэшборды, которые отображают статус кластера, сегментов и сервисов, сведения о потреблении ресурсов (память, ЦП, диск) на всех хостах, а также список созданных ресурсных групп и расписание их действия, информацию о запущенных сессиях и пользовательской активности.

Помимо этого, для удобного мониторинга активных SQL-запросов дата-инженеры GlowByte разработали собственную библиотеку greenplum.metric.hook, которая использует глобальные переменные и запускает цепочки функций.
Полученные метрики отправляются в отдельное приложение по протоколу gRPC, собственная спецификация которого позволила использовать разные методы для хранения и обработки данных на любом языке программирования.

Исходный код этой библиотеки открыт и находится в GitLab-репозитории компании. Он доступен для скачивания и использования под лицензией Apache 2.0. Также репозиторий содержит исходные коды дэшбордов для Grafana и настроечные файлы для экспорта системных метрик Greenplum в Prometheus.

@BigDataSchool_ru
https://bigdataschool.ru/blog/greenplum-monitoring-tools.html
#Greenplum #статьи
Как превратить Greenplum в векторную базу данных с расширением pgvector

Будучи вариацией PostgreSQL с механизмами массово-параллельной загрузки, Greenplum отлично справляется с огромным объемом данных. Однако, к хранилищам данных, используемым в ML-проектах, предъявляются особые требования. В частности, современные ИИ-решения активно используют векторные СУБД для реализации встраиваний.

Встраивание в ML представляет собой сложный объект, преобразованный в вектор — список чисел, который отражает семантические и синтаксические отношения данных. Обычно для работы со выстраиваниями используются специализированные векторные СУБД (Pinecone, Milvus, Weaviate, Enterprise-редакция key-value базы Redis, SingleStore, Relevance AI, Qdrant, Vespa и др.), однако, Greenplum тоже можно использовать для этого, если дополнить ее возможности модулем pgvector.

Модуль pgvector предоставляет возможности поиска векторного сходства, которые позволяют искать, хранить и запрашивать встраивания в больших масштабах. Этот модуль для Greenplum эквивалентен версии модуля pgvector 0.5.0, используемого с PostgreSQL. Модуль pgvector предоставляет  тип данных vector и методы доступа к индексу ivfflat и hnsw
Тип, методы, а также вспомогательные функции и операторы, предоставляемые модулем, позволяют выполнять точный и приблизительный поиск соседей и определять L2, внутренний продукт и косинусное расстояние между вложениями. Также можно использовать модуль для хранения и запроса вложений.

Тип данных vector представляет собой n-мерную координату. Каждый vector занимает 4-х кратное измерение и 8 байт памяти. Каждый элемент представляет собой число одинарной точности с плавающей запятой аналогично типу real в Greenplum, и все элементы должны быть конечными (без NaN, Infinity или -Infinity). Векторы могут иметь до 16 000 измерений.

Модуль pgvector для Greenplum имеет следующие ограничения:
✔️оптимизатор запросов GPORCA не поддерживает методы доступа к индексу ivfflat и hnsw. Запросы к таблицам, использующим эти типы индексов, возвращаются к планировщику на основе PostgreSQL.
✔️AO-таблицы, оптимизированные для добавления, не могут использовать векторные индексы;
✔️Размер индекса (вектора) может быть больше размера таблицы.

Модуль pgvector устанавливается при установке базы данных Greenplum. Но, прежде чем использовать его типы данных и метод доступа к индексу, надо зарегистрировать расширение vector в каждой базе данных.

Далее: MLOps с MPP-СУБД. Расширение PostgresML.

@BigDataSchool_ru
https://bigdataschool.ru/blog/ml-pluggins-for-greenplum.html
#Greenplum #статьи
MLOps с MPP-СУБД: расширение PostgresML

Продолжая разговор про ИИ и машинное обучение при использовании Greenplum также следует сказать про PostgresML — ML-расширение для PostgreSQL, которое позволяет выполнять обучение и вывод текстовых и табличных данных с помощью SQL-запросов.

С помощью PostgresML можно интегрировать ML-модели в базу данных VMware Greenplum и использовать возможности передовых алгоритмов для эффективной обработки данных. Модуль postgresml предоставляет функции PostgresML для использования десятков тысяч предварительно обученных ИИ-моделей с открытым исходным кодом, представленные платформой обработки данных Hugging Face AI.

Можно сказать, что PostgresML превращает PostgreSQL и Greenplum в комплексную MLOps-платформу, интегрируя в обработку данных ключевые компоненты рабочего процесса машинного обучения. Без привлечения внешних систем, т.е. не перемещая данные за пределы PostgreSQL и Greenplum, PostgresML позволяет этим СУБД работать как хранилище фичей и/или моделей, а также играть роль механизма машинного обучения и службы вывода.
Такая консолидация упрощает создание и развертывание высокопроизводительных ИИ-приложений, работающих в режиме реального времени. PostgresML поддерживает контролируемые и неконтролируемые алгоритмы, такие как регрессия, кластеризация, глубокие нейронные сети и пр.

Можно строить ML-модели, используя SQL на данных, хранящихся в PostgreSQL и Greenplum. Модели сохраняются обратно в исходную базу данных для последующего вывода с малой задержкой.
PostgresML также можно применять для работы с большими языковыми моделями, такими как GPT-3 и другими генеративными нейросетями. В частности, всего с помощью нескольких строк SQL-запросов можно использовать современные NLP-технологии для семантического поиска, анализа текста, извлечения информации, обобщения документов, перевода текста и прочих задач обработки естественного языка.

PostgresML имеет открытый исходный код, но также предлагается как полностью управляемый облачный сервис. В дополнение к API SQL он предоставляет пакеты SDK для Javascript, Python и Rust для быстрого создания векторного поиска, чат-ботов и других ML-приложений.

Например, далее (на сайте) рассмотрим код, который загружает в Greenplum набор данных и создает таблицу для их хранения, создает вложение для текста, а также загружает и запускает предварительно обученные модели.

В заключение отметим, что расширение postgresml пока поддерживает не все функции PostgresML, а лишь часть из них:
✔️load dataset() – загружает набор данных в таблицы в VMware Greenplum с помощью INSERTкоманды SQL;
✔️embed() – создает внедрение для набора данных;
✔️transform() – применяет предварительно обученный преобразователь для обработки данных. 

@BigDataSchool_ru
https://bigdataschool.ru/blog/ml-pluggins-for-greenplum.html
#Greenplum #статьи
3 подхода к извлечению данных из реляционных баз

Извлечение данных из реляционных баз является наиболее распространенной операцией в ETL-процессах. Поэтому при проектировании конвейеров обработки данных дата-инженеру надо выбрать наилучший подход к построению ETL-конвейеров для загрузки данных в корпоративное хранилище или озеро.

Выбор подходящего метода зависит от следующих факторов:
✔️тип набора данных, т.е. чем являются извлекаемые данные — фактом, измерением, неизменяемым логом;
✔️размер извлекаемых данных – количество таблиц, число строк и столбцов в каждой таблице и их объем;
✔️доступность метаданных, включая специальные столбцы, такие как идентификаторы, отметка времени создания и изменения записи;
✔️частота изменения, т.е. вставки и обновления данных;
✔️требования бизнеса к задержке обработки и свежести данных;
✔️доступность и стоимость хранилищ, а также вычислительных ресурсов;
✔️доступность ресурсов ядра исходной базы данных.

Разумеется, проще всего извлекать неизменяемые данные, предназначенные только для вставки (факты в терминологии DWH), такие как записи транзакций, события реального мира и пр. Логика извлечения таких данных проще, поскольку не нужно беспокоиться об обновлениях и удалениях, необходимо лишь обеспечить обнаружение новых вставок.
Работа с изменяемыми данными, (измерениями в терминологии DWH) сложнее, поскольку нужно обнаруживать изменение записей, включая их обновления и удаления.

Для такого обнаружения измененных данных (CDC, Change Data Capture) в реляционных базах есть следующие подходы:
1️⃣CDC с помощью запросов к специальным столбцам, которые маркируют изменение. Эти столбцы называют столбцами аудита.
2️⃣использование триггеров в базе данных и запись изменений в таблицу или лог-файл.
3️⃣регистрация изменений данных на основе журналов самой СУБД или сторонних библиотек и CDC-инструментов.

Как эти подходы реализуются в MPP-СУБД Greenplum, основанной на PostgreSQL, рассмотрим далее.

@BigDataSchool_ru
https://bigdataschool.ru/blog/news/greenplum/cdc-in-greenplum-and-postgresql.html
#Greenplum
Индексация в Greenplum
🌞Индексы ускоряют поиск данных в базе данных, позволяя SQL-запросам выполняться быстрее за счет обращения к меньшему количеству строк, и снижая алгоритмическую сложность поиска. Однако, индексы увеличивают размер базы данных и провоцируют рост накладных расходов при записи данных, а также требуют обслуживания. В частности, необходимо создавать и поддерживать актуальную статистику, регулярно обновляя ее при операциях вставки и обновления, что занимает ресурсы и время. Считается, что для SQL-запросов с низкой селективностью, которые возвращают более половины строк таблицы, индекс не нужен.
😎Поэтому индексация не очень распространена в Greenplum, ориентированной на работу с большими объемами данных. Быстрота поиска в Greenplum достигается и в рамках последовательного сканирования, если каждый сегмент содержит равную часть данных, и все сегменты при чтении работают параллельно.
Однако, в случае SQL-запросов с высокой селективностью индексы в Greenplum могут повысить их производительность. Также индексы могут повысить производительность сжатых таблиц, оптимизированных для добавления (AO, Append Only), к которым обращаются SQL-запросы.
AO-таблицы не предназначены для частого обновления данных после начальной загрузки, а последующие вставки в них выполняются только в пакетных операциях. Обычно AO-таблицы очень большие, загружаются один раз, редко обновляются и часто запрашиваются для чтения данных, т.е. аналитических SQL-запросов. А таблицы кучи, наоборот подходят для конкурентных запросов, включая итеративные UPDATE и DELETE, а также одиночные INSERT.
🌳До выпуска 7-ой версии Greenplum, которая вышла в декабре 2022 года, уникальные индексы поддерживались только для таблиц кучи, но не для AO-таблиц. Начиная с версии 7, уникальные индексы можно задать и для таблиц, оптимизированных для добавления. Как это работает, читайте в нашей статье.
#SQL #Greenplum #СУБД
🟰Параллельная обработка SQL-запросов в
Greenplum

Как координатор Greenplum на мастер-хосте рассылает сегментам планы выполнения запросов, что такое курсор параллельного получения результатов оператора SELECT и каким образом его использовать для аналитики больших данных в этой MPP-СУБД.

Особенности рассылки планов SQL-запросов в Greenplum на выполнение

Хотя Greenplum основана на PostgreSQL, некоторые механизмы работы этих СУБД отличаются. Например, поддержка массово-параллельной загрузки данных и централизованная архитектура кластера Greenplum обусловливает некоторые особенности обработки SQL-запросов в этой СУБД.
Полная статья: https://bigdataschool.ru/blog/news/greenplum/parallel-execution-of-sql-queries-in-greenplum.html
Курсы: https://bigdataschool.ru/courses/greenplum-for-data-engineers
https://bigdataschool.ru/courses/greenplum-arenadata-administration
Наш сайт: https://bigdataschool.ru/
#ClickHouse #СУБД #Greenplum
🛠️Управление ресурсами и планирование рабочей нагрузки в ClickHouse

Как эффективно распределять и использовать ресурсы ClickHouse, зачем ограничивать возможности пользователей с помощью квот и классифицировать рабочие нагрузки.

Управление ресурсами в ClickHouse
Благодаря своей децентрализованной архитектуре ClickHouse, когда один экземпляр включает несколько серверов, к которым напрямую приходят запросы пользователей, эта колоночная СУБД работает очень быстро. Для репликации данных и выполнения распределённых SQL-запросов в ClickHouse используется сервис синхронизации метаданных ClickHouse Keeper, аналогичный по функция Apache Zookeeper, но написанный на C++. Данные в ClickHouse располагаются на разных сегментах, называемых шардами (shard). Полная статья: https://bigdataschool.ru/blog/news/clickhouse/clickhouse-resources-and-workload-management.html
Курс: https://bigdataschool.ru/courses/clickhouse
Наш сайт: https://bigdataschool.ru
#XML #Greenplum #СУБД
Обработка XML-документов в
Greenplum

Как Greenplum хранит и обрабатывает XML-документы, зачем для этого нужны утилиты gpfdist и gpload, каковы их конфигурации для выполнения XSLT-преобразований XML-файлов и их загрузки/выборки во внешние таблицы MPP-СУБД.

Работа с XML-документами и XSLT-преобразования в Greenplum

Greenplum, как и PostgreSQL, также поддерживает работу со сложными типами данных и может вести себя подобно документо-ориентированной СУБД, обрабатывая не только JSON, но и XML-документы.
Полная статья: https://bigdataschool.ru/blog/news/greenplum/xml-processing-in-greenplum.html
Курсы: https://bigdataschool.ru/courses/greenplum-for-data-engineers https://bigdataschool.ru/courses/greenplum-arenadata-administration
Наш сайт: https://bigdataschool.ru
Копирование, размножение, распространение, перепечатка (целиком или частично), или иное использование материала допускается только с письменного разрешения правообладателя ООО "УЦ Коммерсант"
#Greenplum #SQL #MVCC
Транзакции и блокировки в
Greenplum

Какие SQL-команды есть в Greenplum для транзакционной обработки данных, как MVCC исключает явные блокировки, можно ли установить их вручную и как это сделать: режимы блокировки и глобальный детектор взаимоблокировок в MPP-СУБД.

Транзакции, MVCC и режимы блокировки Greenplum
Про изоляцию транзакций в Greenplum и Arenadata DB мы уже писали здесь. Транзакции позволяют объединить несколько SQL-операторов в одну операцию, чтобы выполнить их атомарно, т.е. все или ни одной.
Статья
Курсы:
GPDE GRAD
Наш сайт
Копирование, размножение, распространение, перепечатка (целиком или частично), или иное использование материала допускается только с письменного разрешения правообладателя ООО "УЦ Коммерсант"
#Greenplum #обзор #релиз
Greenplum 7.2: обзор июльского релиза

20 июня 2024 года вышел очередной релиз Greenplum. Разбираемся с ключевыми новинками выпуска 7.2: сканирование индекса в AO-таблицах, изменения в оптимизаторе GPORCA, улучшенная обработка геопространственных данных и новая служба централизованного управления сегментами Postmaster.

Новинки Greenplum 7.2 для дата-инженера
Начнем с изменений, повышающих производительность Greenplum. Одним из них стало сканирование индекса в AO-таблицах, оптимизированных для добавления данных. Ранее поддерживалось только сканирование битовых карт в памяти. Вообще сканирование индексов в AO-таблицах – не новая функция для Greenplum, однако, она была отключена из-за ограничений CBO-модели.
Статья
Курсы: GPDE GRAD
Наш сайт
Копирование, размножение, распространение, перепечатка (целиком или частично), или иное использование материала допускается только с письменного разрешения правообладателя ООО "УЦ Коммерсант"
#UDF #ApacheSpark #Greenplum #ClickHouse #ksqlDB #FlinkSQL
UDF во фреймворках Big Data: благо или необходимое зло?


Почему пользовательские функции лучше применять как можно реже, каковы их возможности и ограничения: краткий обзор особенностей разработки и эксплуатации UDF в Apache Spark SQL, ksqlDB, Flink SQL, Greenplum и ClickHouse.

Чем полезны и опасны пользовательские функции в обработке больших данных?
Пользовательские функции (User-Defined Functions, UDF) позволяют разработчику расширить возможности фреймворка, реализовав собственные функции для обработки данных. Большинство современных фреймворков это позволяют.
Статья
Курсы:
DEVKI CORS FLINK CLICH GPDE
Наш сайт
Копирование, размножение, распространение, перепечатка (целиком или частично), или иное использование материала допускается только с письменного разрешения правообладателя ООО "УЦ Коммерсант"
#Greenplum #вебтаблицы #externaltables
Внешние веб-таблицы в
Greenplum и 2 способа их создания

Что такое внешние веб-таблицы, зачем они нужны, чем отличаются от обычных external tables и как создать такую таблицу в Greenplum на основе команд и на основе URL.

Зачем нужны внешние веб-таблицы в Greenplum

О том, что в Greenplum есть внешние (external) и сторонние (foreign) таблицы, которые обеспечивают доступ к данным, хранящимся в внешних источниках, мы уже писали здесь. Однако, помимо обычных внешних таблиц, в Greenplum также есть и внешние веб-таблицы (external web-tables), которые позволяют Greenplum обрабатывать динамические источники данных как обычные таблицы.
Статья
Курсы: GPDE GRAD
Наш сайт
Копирование, размножение, распространение, перепечатка (целиком или частично), или иное использование материала допускается только с письменного разрешения правообладателя ООО "УЦ Коммерсант"
#Greenplum #gpMLBot #PostgresML #ApacheMADlib
Машинное обучение в
Greenplum: агенты и расширения

Как решать задачи машинного обучения в Greenplum с агентом gpMLBot и расширением PostgresML: возможности, ограничения и примеры.

Что такое gpMLBot: Greenplum Automated Machine Learning Agent
Чтобы использовать Greenplum как хранилище данных в задачах машинного обучения, в этой БД поддерживаются соответствующие механизмы.
Статья
Курсы:
GPDE GRAD
Наш сайт
Копирование, размножение, распространение, перепечатка (целиком или частично), или иное использование материала допускается только с письменного разрешения правообладателя ООО "УЦ Коммерсант"
#Greenplum #AUTOVACUUM #автоочистка
Настройка автоочистки таблиц системного каталога в
Greenplum

Зачем нужна автоматическая очистка таблиц системного каталога Greenplum, почему команда AUTOVACUUM выполняется локально на каждом сегменте и как ее настроить для максимальной эффективности старых кортежей в распределенной базе данных с массовой-параллельной обработкой.

Параметры автоматической очистки в Greenplum
О том, зачем нужна команда автоочистки в Greenplum и как она работает, мы уже рассказывали здесь. Однако, помимо периодического запуска этой команды сборки мусора, для ее эффективного применения команду VACUUM надо правильно настроить. При этом важно найти баланс: поскольку автоочистка – довольно ресурсоемкий процесс, ее не стоит запускать часто.
Статья
Курсы:
GPDE GRAD
Наш сайт
Копирование, размножение, распространение, перепечатка (целиком или частично), или иное использование материала допускается только с письменного разрешения правообладателя ООО "УЦ Коммерсант"
#Идемпотентность #волатильность #Greenplum #PostgreSQL
Идемпотентность и волатильность функций в Greenplum и PostgreSQL

Что такое волатильные функции, зачем они нужны и чем опасны: разбираем на примере Greenplum и PostgreSQL. К чему приведет некорректное использование атрибутов изменчивости в SQL-запросе или UDF-функции распределенной MPP-СУБД.

Что такое волатильность функции и почему это важно для Greenplum
Волатильной или изменчивой считается функция, значение которой может изменяться даже в пределах одного сканирования таблицы, поэтому ее вызовы не могут быть оптимизированы. Таким образом, волатильная функция неидемпотентна. Идемпотентность предполагает, что повторное применение функции к результату её же применения не изменяет конечный результат.
Статья
Курсы:
GPDE GRAD
Наш сайт
Копирование, размножение, распространение, перепечатка (целиком или частично), или иное использование материала допускается только с письменного разрешения правообладателя ООО "УЦ Коммерсант"