Поиск по сайту:

Настройка AWS Redshift для облачного хранилища данных


На этой странице

  1. 1. Как это работает
  2. 2. Фаза конфигурации
    1. 2.1 Обязательное условие
    2. 2.2 Настройка конфигурации Redshift

    В этом руководстве я объясню и покажу, как настроить AWS Redshift для использования облачного хранилища данных. Redshift — это полностью управляемая служба хранилища петабайтных данных, которую Amazon Web Services представила в облаке. Он работает путем объединения одного или нескольких наборов вычислительных ресурсов, называемых узлами, организованных в группу, кластер. Каждый кластер работает под управлением Redshift и может содержать одну или несколько баз данных. Архитектура может быть в основном разработана следующим образом:



    1. Как это работает

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

    Когда пользователь настраивает хранилище данных Amazon Redshift, у него появляется базовая топология для операций, называемая кластером. Кластер Redshift состоит из 1 или более вычислительных узлов. Если пользователь решает использовать более одного вычислительного узла, Redshift автоматически запускает главный узел. Этот ведущий узел настроен на получение запросов и команд со стороны выполнения клиента и не оплачивается AWS.

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

    В этом руководстве я покажу вам, как установить и настроить Redhift для собственного использования. В этом примере я создам учетную запись и начну с пакета уровня бесплатного пользования.

    2. Этап настройки

    2.1 Предварительное условие

    Прежде чем мы начнем настройку кластера Amazon Redshift, необходимо выполнить определенные предварительные условия.

    Сначала зарегистрируйтесь в AWS, а затем перейдите в сервис IAM, чтобы создать роль, которую мы могли бы использовать для использования Redshift. Вы можете следить за скриншотом, как показано ниже:

    После этого вы должны получить снимок экрана, как показано ниже, с указанием того, что роль успешно создана.

    2.2 Настройка конфигурации Redshift

    Когда предварительные условия выполнены, мы можем приступить к созданию нашего собственного кластера Redshift. Найдите функции Redshift на панели поиска и действуйте оттуда. Ниже приведен пример скриншота:

    Нажмите кнопку «Создать кластер» и продолжите с необходимыми переменными, обратите внимание, что на стороне разрешения кластера мы включаем нашу роль IAM, которую мы создали ранее.

    После этого вы должны оказаться на приборной панели красного смещения, как указано выше. В этом руководстве мы отключим уровень сетевой безопасности, изменив группу безопасности. Для этого перейдите в нижнюю часть панели управления и добавьте порт Redshift на вкладке «Входящие». Ниже приведен пример:

    Когда все будет сделано, вы увидите, что созданный вами новый кластер теперь доступен для использования.

    3. Этап тестирования

    Теперь давайте попробуем получить доступ к нашему хранилищу данных. Чтобы проверить это, нажмите РЕДАКТОР на левой панели, включите необходимые переменные, нажмите «Подключиться к базе данных».

    Вы должны быть перенаправлены на страницу редактора, теперь давайте начнем с создания нашей собственной схемы тестирования. Создайте схему, как показано ниже, затем выполните ее.

    Отлично, теперь давайте проверим на локальной стороне клиента. Для этого вам нужно получить соединение JDBC или ODBC со стороны Redshift. Чтобы получить эту информацию, нажмите кнопку «Конфигурация» на левой панели панели инструментов.

    Выберите предпочитаемый тип подключения, затем загрузите необходимые библиотеки и скопируйте URL-адрес, как показано в приведенном ниже примере:

    Затем откройте любой из ваших клиентских инструментов SQL и введите необходимые переменные подключения. В нашем примере здесь мы используем клиентские инструменты SQL с именем DBeaver, которые можно получить отсюда.

    Ваше соединение должно быть успешным, как и ожидалось. Если в любом случае вы столкнетесь с проблемой аутентификации, проверьте свою конфигурацию, сделанную в группе безопасности AWS, для получения дополнительной информации.

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

     SET search_path = imdb; 

    create table users(
    userid integer not null distkey sortkey,
    username char(8),
    firstname varchar(30),
    lastname varchar(30),
    city varchar(30),
    state char(2),
    email varchar(100),
    phone char(14),
    likesports boolean,
    liketheatre boolean,
    likeconcerts boolean,
    likejazz boolean,
    likeclassical boolean,
    likeopera boolean,
    likerock boolean,
    likevegas boolean,
    likebroadway boolean,
    likemusicals boolean);

    create table venue(
    venueid smallint not null distkey sortkey,
    venuename varchar(100),
    venuecity varchar(30),
    venuestate char(2),
    venueseats integer);

    create table category(
    catid smallint not null distkey sortkey,
    catgroup varchar(10),
    catname varchar(10),
    catdesc varchar(50));

    create table date(
    dateid smallint not null distkey sortkey,
    caldate date not null,
    day character(3) not null,
    week smallint not null,
    month character(5) not null,
    qtr character(5) not null,
    year smallint not null,
    holiday boolean default('N'));

    create table event(
    eventid integer not null distkey,
    venueid smallint not null,
    catid smallint not null,
    dateid smallint not null sortkey,
    eventname varchar(200),
    starttime timestamp);

    create table listing(
    listid integer not null distkey,
    sellerid integer not null,
    eventid integer not null,
    dateid smallint not null sortkey,
    numtickets smallint not null,
    priceperticket decimal(8,2),
    totalprice decimal(8,2),
    listtime timestamp);

    create table sales(
    salesid integer not null,
    listid integer not null distkey,
    sellerid integer not null,
    buyerid integer not null,
    eventid integer not null,
    dateid smallint not null sortkey,
    qtysold smallint not null,
    pricepaid decimal(8,2),
    commission decimal(8,2),
    saletime timestamp);

    Ожидаемый результат будет показан ниже: -

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

     
    copy sales from 's3://shahril-redshift01-abcde/sales_tab.txt'
    iam_role 'arn:aws:iam::325581293405:role/shahril-redshift-s3-ro-role'
    delimiter '\t' timeformat 'MM/DD/YYYY HH:MI:SS' region 'eu-west-1';

    copy dates from 's3://shahril-redshift01-abcde/date2008_pipe.txt'
    iam_role 'arn:aws:iam::325581293405:role/shahril-redshift-s3-ro-role'
    delimiter '|' region 'eu-west-1';

    Если каким-либо образом во время загрузки вы столкнетесь с проблемой, вы можете запросить из таблицы словаря красного смещения с именем stl_load_errors, как показано ниже, чтобы получить подсказку о проблеме.

     select * from stl_load_errors ; 

    Наконец, как только все будет сделано, вы сможете извлекать данные и манипулировать ими, используя любую предоставленную функцию SQL. Ниже приведены некоторые примеры сценариев запросов, которые я использовал для нашего примера.

     
    -- Get definition for the sales table.
    SELECT *
    FROM pg_table_def
    WHERE tablename = 'sales';

    -- Find total sales on each day
    SELECT b.caldate days, sum(a.qtysold) FROM sales a, dates b
    WHERE a.dateid = b.dateid
    group by b.caldate ;

    -- Find top 10 buyers by quantity.
    SELECT firstname, lastname, total_quantity
    FROM (SELECT buyerid, sum(qtysold) total_quantity
    FROM sales
    GROUP BY buyerid
    ORDER BY total_quantity desc limit 10) Q, users
    WHERE Q.buyerid = userid
    ORDER BY Q.total_quantity desc;

    -- Find events in the 99.9 percentile in terms of all time gross sales.
    SELECT eventname, total_price
    FROM (SELECT eventid, total_price, ntile(1000) over(order by total_price desc) as percentile
    FROM (SELECT eventid, sum(pricepaid) total_price
    FROM sales
    GROUP BY eventid)) Q, event E
    WHERE Q.eventid = E.eventid
    AND percentile = 1
    ORDER BY total_price desc;

    Пальцы вверх! Теперь мы успешно настроили собственный Redshift Cluster для использования в качестве хранилища данных. Далее рассмотрим объединение существующих данных в Redshift Cluster с любым плоским файлом с помощью Redshift Spectrum.