Хотите узнать о Greenplum подробнее?
Приветствую Вас, разработчики! В этой статье мы поговорим о том, что такое Greenplum и каковы ее возможности. В первую очередь, это массово-параллельная реляционная СУБД на основе PostgreSQL, которая подходит для хранения и обработки больших объемов данных (до сотен ТБ). Она обеспечивает доступ к кластеру мощных серверов через единый SQL-интерфейс, который позволяет просматривать и работать с данными.
Что такое Greenplum?
Greenplum – это open-source продукт, массивно-параллельная реляционная СУБД для хранилищ данных с гибкой горизонтальной масштабируемостью и столбцовым хранением данных на основе PostgreSQL. Благодаря своим архитектурным особенностям и мощному оптимизатору запросов Greenplum отличается особой надежностью и высокой скоростью обработки SQL-запросов над большими объемами данных, поэтому эта MPP-СУБД широко применяется для аналитики Big Data в промышленных масштабах.
Greenplum — это открытое программное обеспечение, разработанное компанией Pivotal и приобретенное VMware. Эта база данных спроектирована для управления крупными хранилищами данных, позволяя распределить данные по нескольким серверам.
История Greenplum
Компания Greenplum была основана в сентябре 2003 года Люком Лонерганом и Скоттом Яром. Именно в этом объединились две компании: Metapa (основана в августе 2000 года недалеко от Лос-Анджелеса) и Didera из Фэрфакса, штат Вирджиния, и создали Greenplum.
В 2010 году корпорация EMC приобрела компанию Greenplum и продолжила развивать проект. В 2012 году EMC корпорация Pivotal приобрела продукт EMC Greenplum Community Edition и продолжила его развитие под своим брендом. В 2015 году компания Pivotal опубликовала исходный код базы данных Greenplum под лицензией Apache, сделав его доступным для широких масс. Pivotal передала большую часть программного обеспечения в фонд Apache Foundation, после чего оно стало свободно лицензироваться в соответствии с правилами Apache.
MPP Greenplum
Следует заметить, что архитектура MPP может существовать в двух качествах – это shared nothing и shared everything. В первом случае, каждый узел не разделяет системные ресурсы с другими узлами, выделяя и используя необходимые ему ресурсы самостоятельно. Во втором случае узел использует разделяемые ресурсы, обращаясь к некоему механизму для получения необходимых ему ресурсов. Каждый подход обладает своими преимуществами и недостатками – shared nothing не позволяет утилизировать все ресурсы достаточно эффективно, оставляя часть из них простаивать в любой случае. Shared everything утилизирует ресурсы более эффективно, однако требует механизм межпроцессного согласования при использовании разделяемых ресурсов, что выливается в дополнительное время, необходимое для такого согласования при выделении ресурсов.
Что Greenplum унаследовал от PostgreSQL?
- Greenplum основана на PostgreSQL. По сути, это несколько экземпляров базы данных PostgreSQL, работающих как единая система управления базами данных (СУБД);
- Кроме того, Greenplum основана на PostgreSQL 8.2.15 и в большинстве случаев очень похожа на PostgreSQL по своим возможностям, настройкам и функциональности для конечного пользователя;
- Пользователи баз данных взаимодействуют с Greenplum так же, как и с обычной СУБД PostgreSQL;
- Кроме того, внутреннее устройство PostgreSQL было модернизировано для поддержки структуры Greenplum;
- Greenplum обеспечивает связь между экземплярами PostgreSQL и позволяет системе быть единой логической базой данных;
- Например, были изменены и усовершенствованы компоненты системного каталога, оптимизатора, исполнителя запросов и менеджера транзакций для того, чтобы обеспечить одновременное выполнение запросов во всех параллельных экземплярах базы данных PostgreSQL.
NB:
Greenplum выполняет функции, призванные оптимизировать работу PostgreSQL. Например, в Greenplum добавлены функция параллельной загрузки данных (внешние таблицы), управленияресурсами, оптимизация запросов и хранения данных, которых нет в стандартном PostgreSQL.
Почему стоит выбрать именно Greenplum
- Архитектура MPP: обеспечивает автоматическое распараллеливание всех данных и запросов в масштабируемой архитектуре с общим доступом;
- Работа с большими объемами данных, исчисляемыми петабайтами: скорость загрузки увеличивается с каждым дополнительным узлом и составляет более 10 терабайт в час;
- Оптимизация запросов: оптимизатор запросов Greenplum - это первый в своем роде оптимизатор запросов на основе затрат для рабочих нагрузок при работе с большими данными. Он позволяет масштабировать интерактивную и пакетную аналитику данных, представленных в петабайтах без снижения производительности запросов и пропускной способности;
- Полиформное хранение данных: полный контроль над конфигурацией хранения, выполнения и сжатия таблиц и разделов. Проектирование таблиц в зависимости от способа доступа к данным. У пользователей есть выбор между хранением и обработкой данных, ориентированными на строки или столбцы;
- Интегрированная аналитика данных: Greenplum включает в себя Apache MADlib, библиотеку для масштабируемой аналитики в базе данных, расширяющую возможности SQL;
- Федеративный доступ к данным: запросы к внешним источникам данных с помощью оптимизаторов и механизмов обработки запросов, включая Hadoop, облачные хранилища, ORC, AVRO, Parquet и т.д.
Установка Greenplum на Ubuntu
Step 1: sudo add-apt-repository ppa:greenplum/db The output will display as shown in this screenshot:sudo apt-get update sudo apt-get install greenplum-db-oss The above command will install the Greenplum Database software and any required dependencies on the system automatically and put the resulting software in /opt/gpdb as seen below:
Загрузите ПО Greenplum в Вашу среду, используя следующую команду:
$ . /opt/gpdb/greenplum_path.sh $ which gpssh /opt/gpdb/bin/gpssh
Вы можете убедиться в том, что ПО находиться в процессе установки, проверив его с помощью команды which, как указано выше. Теперь Вы можете скопировать шаблон файла конфигурации кластера Greenplum в свой локальный каталог для его последующего редактирования, как показано ниже:
cp $GPHOME/docs/cli_help/gpconfigs/gpinitsystem_singlenode . Edit gpinitsystem Configuration File The following edits can be made for the most simple cluster configuration running locally. Create this file and put only your hostname into the file: MACHINE_LIST_FILE=./hostlist_singlenode Update this line to have a directory you want to use for primaries for example: declare -a DATA_DIRECTORY=(/gpdata1 /gpdata2) declare -a DATA_DIRECTORY=(/home/inovick/primary /home/inovick/primary) And make sure the directory mentioned above exists. Update this line to have the hostname of your machine, in my case, the hostname is ‘ubuntu’: MASTER_HOSTNAME=hostname_of_machine MASTER_HOSTNAME=ubuntu Update the master data directory entry in the file and ensure it exists by making the directory: MASTER_DIRECTORY=/home/inovick/master That’s enough to get the database initialized and up running, so close the file and let’s initialize the cluster. We will have a master segment instance and two primary segment instances with this configuration. In more advanced setups you would configure a standby master and segment mirrors on additional hosts, and the data would be automatically both sharded (distributed) between the primary segments and mirrored from primaries to mirrors.
Запустите утилиту gpinitsystem
Для начала убедимся в том, что ssh-ключи обменяны. Для этого выполним следующую команду:
gpssh-exkeys -f hostlist_singlenode After that this Command it will be shows
После этого нужно запустить кластер с помощью следующей команды:
gpinitsystem -c gpinitsystem_singlenode The utility will print out what its going to do and then ask you to confirm before proceeding. Here is an example below:
По завершении процесса Вы можете создать базу данных, войти в нее и добавить данные и выполнять необходимые Вам запросы.
Резюме:
Greenplum — аналитическая колоночная массивно‑параллельная СУБД, разработанная для хранения и обработки больших объёмов информации, которая была основана на PostgreSQL. Она популярна среди крупных корпораций и государственных учреждений по всему миру. В первую очередь, данная СУБД нужна тем, кто активно обрабатывает десятки терабайтов информации.
Greenplum отлично справляется с аналитическими нагрузками от бизнес-аналитики до машинного обучения.
Ещё один “козырь” Greenplum — это фреймворк PXF (Platform Extension Framework). Для его подключения необходимо установить специальный небольшой сервер на хосте с сегментами. Он с одной стороны общается с ними по проприетарному протоколу, а с другой имеет стандартизованный Java API, который позволяет подгружать плагины для параллельного обмена данными с внешними системами. “Из коробки” доступны распределённая файловая система HDFS, СУБД Apache Hive и Apache HBase и JDBC-подключения. Если надо работать с другими сервисами — довольно легко реализовать собственные плагины при помощи пары Java-классов.




