AWS: Redshift — быстрый запуск кластера и подключение из SQL-workbench

Автор: | 10/18/2019
 

Наши дата-аналитики наконец-то решились потрогать AWS Redshift вместо MariaDB RDS.

Соответственно задача — поднять Proof of Concept кластер Redshift в AWS.

Сейчас сделаем быстро, без вникания и рассмотрения деталей, если решение таки пойдёт в Production — то поразбираемся с нюансами.

На данный момент нас интересует только выбор типа нод для кластера — Dense Storage или Dense Compute, которые задают тип хранилища, память, процессор и т.д:

When you launch a cluster, one option you specify is the node type. The node type determines the CPU, RAM, storage capacity, and storage drive type for each node. The dense storage (DS) node types are storage optimized. The dense compute (DC) node types are compute optimized.

  • Dense Storage: позволяет создавать хранилище данных (warehouses) больших объёмов по низкой цене, используя HDD-диски
  • Dense Compute: позволяет вам создавать высокопроизводительное хранилище данных с быстрым CPU, большим объёмом памяти и SSD-дисками

Для PoC, разумеется, выбираем Dense Storage.

Перед созданием кластера:

  • выбирайте размер кластера (кол-во нод) в соответствии с планируемыми нагрузками. Как правило используется не менее двух нод в кластере/
  • планируйте всегда иметь хотя бы 20% свободного места на дисках и/или х3 свободной оперативной памяти от размера самой большой таблицы оперативной памяти. Дополнительное место может потребоваться для:
    • выделение места для перезаписи таблиц
    • сортировка и выполнение VACUUM-операций
    • создание временных таблиц, используемых для промежуточных результатов запросов

Создание IAM роли

Начинаем с создания роли IAM.

Дата-аналитики будут использовать AWS S3 при работе с Redshift, создаём для них роль с соответствующей политикой.

Переходим в IAM, создаём роль, выбираем Redshit — Customizable:

Подключаем политику AmazonS3ReadOnlyAccess:

Сохраняем:

Далее используем её при создании кластера.

Создание кластера Redshift

Переходим в Redshift, кликаем Quick launch cluster:

Задаём Cluster identifier, Database name, Master user name, Master user password и выбираем только что созданную IAM-роль redshift-access:

Ждём 5-10 минут, пока статус не станет Available:

После создания — DB Health находится в статусе unknown:

Переходим к кластеру, выбираем Modify:

Security Group

Создаём новую AWS Security Group, разрешаем доступ к порту 5439:

Переходим в кластер, ещё раз Modify, указываем новую Security Group:

Подключение из SQL-workbench

И попробуем подключиться к кластеру из офиса, используя SQL-workbench.

На Arch Linux устанавливаем из AUR:

yaourt -S sql-workbench

Запускаем:

sqlworkbench &

Находим URL для загрузки драйверов тут>>>.

Загружаем:

wget https://s3.amazonaws.com/redshift-downloads/drivers/jdbc/1.2.34.1058/RedshiftJDBC42-no-awssdk-1.2.34.1058.jar

Переходим в Connection Profile, внизу — Manage Drivers:

Выбираем Redshift и выбираем скачанный файл драйвера:

 

Переходим в AWS, в кластер Redshift, находим Connection string:

Переходим в Workbenach, в Profile задаём строку JDBC:

Для проверки — запускаем создание таблицы:

create table testtable (id int, name varchar(10));

Добавляем каких-то данных:

insert into testtable values (1, ‘val’);

И выполняем SELECT:

Готово.