Yandex Cloud
  • Сервисы
  • Решения
  • Почему Yandex Cloud
  • Сообщество
  • Тарифы
  • Документация
  • Связаться с нами
Подключиться
Language / Region
© 2022 ООО «Яндекс.Облако»
Yandex Data Proc
  • Практические руководства
    • Все практические руководства
    • Работа с заданиями
      • Обзор
      • Работа с заданиями Hive
      • Работа с заданиями MapReduce
      • Работа с заданиями PySpark
      • Работа с заданиями Spark
      • Запуск заданий Apache Hive
      • Запуск Spark-приложений
      • Запуск заданий с удаленного хоста
    • Настройка сети для Data Proc
    • Использование Yandex Object Storage в Data Proc
    • Обмен данными с Yandex Managed Service for ClickHouse
    • Импорт данных из кластера Yandex Managed Service for MySQL с помощью Sqoop
    • Импорт данных из кластера Yandex Managed Service for PostgreSQL с помощью Sqoop
    • Использование скриптов инициализации для настройки GeeseFS в Data Proc
  • Пошаговые инструкции
    • Все инструкции
    • Информация об имеющихся кластерах
    • Создание кластера
    • Подключение к кластеру
    • Изменение кластера
    • Управление подкластерами
    • Изменение подкластера
    • Подключение к интерфейсам компонентов
    • Использование Sqoop
    • Управление заданиями
      • Все задания
      • Задания Spark
      • Задания PySpark
      • Задания Hive
      • Задания MapReduce
    • Удаление кластера
    • Работа с логами
    • Мониторинг состояния кластера и хостов
  • Концепции
    • Взаимосвязь ресурсов сервиса
    • Классы хостов
    • Среда исполнения
    • Интерфейсы и порты компонентов Data Proc
    • Задания в Data Proc
    • Автоматическое масштабирование
    • Декомиссия подкластеров и хостов
    • Сеть в Data Proc
    • Техническое обслуживание
    • Квоты и лимиты
    • Хранилище в Data Proc
    • Свойства компонентов
    • Логи в Data Proc
    • Скрипты инициализации
  • Управление доступом
  • Правила тарификации
  • Справочник API
    • Аутентификация в API
    • gRPC (англ.)
      • Overview
      • ClusterService
      • JobService
      • ResourcePresetService
      • SubclusterService
      • OperationService
    • REST (англ.)
      • Overview
      • Cluster
        • Overview
        • create
        • delete
        • get
        • list
        • listHosts
        • listOperations
        • listUILinks
        • start
        • stop
        • update
      • Job
        • Overview
        • cancel
        • create
        • get
        • list
        • listLog
      • ResourcePreset
        • Overview
        • get
        • list
      • Subcluster
        • Overview
        • create
        • delete
        • get
        • list
        • update
  • История изменений
    • Изменения сервиса
    • Образы
  • Вопросы и ответы
  1. Практические руководства
  2. Обмен данными с Yandex Managed Service for ClickHouse

Обмен данными с Yandex Managed Service for ClickHouse

Статья создана
Yandex Cloud
  • Подготовьте облако к работе
    • Необходимые платные ресурсы
  • Выгрузите данные из Managed Service for ClickHouse
    • Подготовьте кластер Managed Service for ClickHouse
    • Запустите выгрузку из Managed Service for ClickHouse
  • Загрузите данные в Managed Service for ClickHouse
    • Подготовьте исходные данные
    • Запустите выгрузку из Data Proc
    • Проверьте загрузку данных в Managed Service for ClickHouse
  • Удалите созданные ресурсы

Чтобы настроить загрузку и выгрузку данных между кластерами Managed Service for ClickHouse и Data Proc:

  1. Подготовьте облако к работе.
  2. Выгрузите данные из Managed Service for ClickHouse.
  3. Загрузите данные в Managed Service for ClickHouse.

Если созданные ресурсы вам больше не нужны, удалите их.

Подготовьте облако к работе

Примечание

Разместите кластеры и виртуальную машину в одной облачной сети.

  1. Создайте облачную сеть.
  2. Создайте подсеть в зоне доступности ru-central1-c. При создании подсети выберите опцию NAT для доступа в интернет — это обязательное условие для работы кластера Data Proc.

Создайте ресурсы:

Вручную
С помощью Terraform
  1. Создайте кластер Managed Service for ClickHouse любой подходящей вам конфигурации со следующими настройками:

    • с публичным доступом к хостам кластера;
    • с базой данных db1;
    • с пользователем user1.
  2. Создайте сервисный аккаунт для кластера Data Proc . Назначьте ему роли:

    • dataproc.agent
    • dataproc.provisioner
    • monitoring.viewer.
  3. Создайте кластер Data Proc любой подходящей вам конфигурации со следующими настройками:

    • с включенной опцией UI Proxy;
    • с созданным ранее сервисным аккаунтом;
    • c компонентами:
      • HBASE
      • HDFS
      • HIVE
      • MAPREDUCE
      • SPARK
      • TEZ
      • YARN
      • ZEPPELIN
      • ZOOKEEPER
  4. Создайте виртуальную машину для подключения к кластерам Managed Service for ClickHouse и Data Proc.

  5. Подключитесь к виртуальной машине по SSH и настройте подключения к кластерам:

    • Managed Service for ClickHouse;
    • Data Proc.
  6. (Опционально) Чтобы экспортировать данные в бакет Yandex Object Storage:

    1. Создайте бакет Object Storage.
    2. Выдайте права на запись в него сервисному аккаунту кластера Data Proc.
  1. Если у вас еще нет Terraform, установите его.

  2. Скачайте файл с настройками провайдера. Поместите его в отдельную рабочую директорию и укажите значения параметров.

  3. Скачайте в ту же рабочую директорию файл конфигурации data-proc-data-exchange-with-mch.tf.

    В файле описаны:

    • Группы безопасности для кластеров и виртуальной машины.
    • Сервисный аккаунт для кластера Data Proc.
    • Бакет Object Storage.
    • Кластер Managed Service for ClickHouse.
    • Кластер Data Proc.
    • Виртуальная машина.
  4. Укажите параметры инфраструктуры в файле конфигурации data-proc-data-exchange-with-mch.tf в блоке locals:

    • folder_id — идентификатор каталога, в котором будут созданы ресурсы.
    • network_id — идентификатор созданной ранее облачной сети.
    • subnet_id — идентификатор созданной ранее подсети.
    • zone_id – зона доступности, в которой будут созданы ресурсы.
    • ch_user_name — имя пользователя базы данных db1 Managed Service for ClickHouse.
    • ch_user_password — пароль для пользователя user1 базы данных db1 Managed Service for ClickHouse.
    • vm_username — имя пользователя для виртуальной машины.
    • vm_ssh_key — абсолютный путь к публичному ключу для виртуальной машины. Подробнее см. в разделе Подключиться к виртуальной машине Linux по SSH.
    • vm_image_id — образ виртуальной машины. Выберите нужный образ из списка или используйте уже заданный образ Ubuntu 20.04 (fd8ciuqfa001h8s9sa7i).
    • dp_ssh_key — абсолютный путь к публичному ключу для кластера Data Proc. Подробнее см. в разделе SSH-подключение к хосту Data Proc.
    • bucket_name — имя бакета Object Storage. Оно должно быть уникальным в рамках Yandex Cloud.
  5. Выполните команду terraform init в директории с конфигурационными файлами. Эта команда инициализирует провайдер, указанный в конфигурационном файле, и позволяет работать с ресурсами и источниками данных провайдера.

  6. Проверьте корректность файлов конфигурации Terraform с помощью команды:

    terraform validate
    

    Если в файлах конфигурации есть ошибки, Terraform на них укажет.

  7. Создайте необходимую инфраструктуру:

    1. Выполните команду для просмотра планируемых изменений:

      terraform plan
      

      Если конфигурации ресурсов описаны верно, в терминале отобразится список изменяемых ресурсов и их параметров. Это проверочный этап: ресурсы не будут изменены.

    2. Если вас устраивают планируемые изменения, внесите их:

      1. Выполните команду:

        terraform apply
        
      2. Подтвердите изменение ресурсов.

      3. Дождитесь завершения операции.

    В указанном каталоге будут созданы все требуемые ресурсы. Проверить появление ресурсов и их настройки можно в консоли управления.

Необходимые платные ресурсы

В стоимость поддержки обмена данными между Managed Service for ClickHouse и Data Proc входит:

  • плата за постоянно запущенную ВМ (см. тарифы Yandex Compute Cloud);
  • плата за использование динамического или статического внешнего IP-адреса (см. тарифы Yandex Virtual Private Cloud).

Выгрузите данные из Managed Service for ClickHouse

Подготовьте кластер Managed Service for ClickHouse

  1. Подключитесь к базе данных db1 кластера Managed Service for ClickHouse от имени пользователя user1.

  2. Наполните базу тестовыми данными. В качестве примера используется простая таблица с именами и возрастом людей.

    1. Создайте таблицу:

      CREATE TABLE persons (
          `name` String,
          `age` UInt8) ENGINE = MergeTree ()
      ORDER BY
          `name`;
      
    2. Наполните таблицу данными:

      INSERT INTO persons VALUES
         ('Anna', 19),
         ('Michael', 65),
         ('Alvar', 28),
         ('Lilith', 50),
         ('Max', 27),
         ('Jaimey', 34),
         ('Dmitry', 42),
         ('Qiang', 19),
         ('Augustyna', 20),
         ('Maria', 28);
      

Запустите выгрузку из Managed Service for ClickHouse

  1. Откройте веб-интерфейс Zeppelin кластера Data Proc.

  2. Нажмите ссылку Create new note и укажите параметры заметки:

    • Note name — введите произвольное имя заметки.
    • Default Interpreter — выберите spark.
  3. Нажмите кнопку Create.

  4. Чтобы сформировать датафрейм, создайте и запустите параграф с кодом. Для этого выделите нужный параграф и нажмите кнопку Run this paragraph (также можно использовать сочетание клавиш Shift+Enter).

    %spark.pyspark
    jdbcPort = 8443
    jdbcHostname = "c-<идентификатор кластера Managed Service for ClickHouse>.rw.mdb.yandexcloud.net"
    jdbcDatabase = "db1"
    jdbcUrl = f"jdbc:clickhouse://{jdbcHostname}:{jdbcPort}/{jdbcDatabase}?ssl=true"
    df = spark.read.format("jdbc") \
    .option("url", jdbcUrl) \
    .option("user","user1") \
    .option("password","<пароль к базе данных Managed Service for ClickHouse>") \
    .option("dbtable","persons") \
    .load()
    df.show()
    

    Если датафрейм сформирован успешно, ответ на запрос будет содержать таблицу с исходными данными.

  5. Чтобы выгрузить информацию из датафрейма в бакет Object Storage или таблицу Hive, создайте и запустите параграф с кодом.

    Object Storage
    Hive
    %spark.pyspark
    df.write.parquet('s3a://<имя бакета>/<директория бакета>/')
    spark.read.parquet('s3a://<имя бакета>/<директория бакета/').show()
    
    %spark.pyspark
    df.createOrReplaceTempView("mytempTable")
    spark.sql("CREATE TABLE IF NOT EXISTS persons AS SELECT * FROM mytempTable");
    spark.sql("SELECT * FROM persons").show()
    

    Если выгрузка прошла успешно, ответ на запрос будет содержать таблицу с исходными данными.

Загрузите данные в Managed Service for ClickHouse

Подготовьте исходные данные

Источником данных может быть директория HDFS или бакет Object Storage. В качестве исходных данных будет использоваться CSV-файл с именами и возрастом людей:

name,age
Anna,19
Michael,65
Fred,28
Alsou,50
Max,27
John,34
Dmitry,42
Oleg,19
Alina,20
Maria,28
Object Storage
Директория HDFS

Создайте файл example.csv с тестовыми данными и загрузите его в бакет Object Storage.

  1. Подключитесь к хосту кластера Data Proc в подкластере для хранения данных.

  2. Определите адрес сервера HDFS. Этот адрес понадобится указать при выгрузке данных в директорию HDFS.

    hdfs getconf -confKey fs.defaultFS
    
  3. Создайте файл example.csv с тестовыми данными.

  4. Создайте директорию HDFS для записи тестовых данных:

    hdfs dfs -mkdir /user/testdata
    
  5. Скопируйте файл с тестовыми данными из локальной файловой системы в директорию HDFS:

    hdfs dfs -copyFromLocal example.csv /user/testdata/example.csv
    

Запустите выгрузку из Data Proc

  1. Откройте веб-интерфейс Zeppelin кластера Data Proc.

  2. Нажмите ссылку Create new note и укажите параметры заметки:

    • Note name — введите произвольное имя заметки.
    • Default Interpreter — выберите spark.
  3. Нажмите кнопку Create.

  4. Чтобы сформировать датафрейм, создайте и запустите параграф с кодом.

    Object Storage
    Директория HDFS
    %spark.pyspark
    df = spark.read.option("header", True).csv("s3a://<имя бакета>/<директория бакета>/example.csv")
    df.show()
    
    %spark.pyspark
    df = spark.read.option("header", True).csv("hdfs://<адрес сервера HDFS>/user/testdata/example.csv")
    df.show()
    

  5. Чтобы выгрузить информацию из датафрейма в базу данных Managed Service for ClickHouse, создайте и запустите параграф с кодом.

    %spark.pyspark
    jdbcPort = 8443
    jdbcHostname = "c-<идентификатор кластера Managed Service for ClickHouse>.rw.mdb.yandexcloud.net"
    jdbcDatabase = "db1"
    jdbcUrl = f"jdbc:clickhouse://{jdbcHostname}:{jdbcPort}/{jdbcDatabase}?ssl=true"
    df.write.format("jdbc") \
    .mode("error") \
    .option("url", jdbcUrl) \
    .option("dbtable", "example") \
    .option("createTableOptions", "ENGINE = MergeTree() ORDER BY age") \
    .option("user","user1") \
    .option("password","<пароль к базе данных Managed Service for ClickHouse>") \
    .save()
    

Проверьте загрузку данных в Managed Service for ClickHouse

  1. Подключитесь к базе данных db1 кластера Managed Service for ClickHouse от имени пользователя user1.

  2. Выполните запрос:

    SELECT * FROM example;
    

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

Удалите созданные ресурсы

Вручную
С помощью Terraform
  • Удалите виртуальную машину.
  • Если вы зарезервировали для виртуальной машины публичный статический IP-адрес, освободите и удалите его.
  • Удалите кластеры:
    • Managed Service for ClickHouse;
    • Data Proc.
  • Если вы создавали бакет Object Storage, удалите его.

Если вы создали ресурсы с помощью Terraform:

  1. В терминале перейдите в директорию с планом инфраструктуры.

  2. Удалите конфигурационный файл data-proc-data-exchange-with-mch.tf.

  3. Проверьте корректность файлов конфигурации Terraform с помощью команды:

    terraform validate
    

    Если в файлах конфигурации есть ошибки, Terraform на них укажет.

  4. Подтвердите изменение ресурсов.

    1. Выполните команду для просмотра планируемых изменений:

      terraform plan
      

      Если конфигурации ресурсов описаны верно, в терминале отобразится список изменяемых ресурсов и их параметров. Это проверочный этап: ресурсы не будут изменены.

    2. Если вас устраивают планируемые изменения, внесите их:

      1. Выполните команду:

        terraform apply
        
      2. Подтвердите изменение ресурсов.

      3. Дождитесь завершения операции.

    Все ресурсы, которые были описаны в конфигурационном файле data-proc-data-exchange-with-mch.tf, будут удалены.

Была ли статья полезна?

Language / Region
© 2022 ООО «Яндекс.Облако»
В этой статье:
  • Подготовьте облако к работе
  • Необходимые платные ресурсы
  • Выгрузите данные из Managed Service for ClickHouse
  • Подготовьте кластер Managed Service for ClickHouse
  • Запустите выгрузку из Managed Service for ClickHouse
  • Загрузите данные в Managed Service for ClickHouse
  • Подготовьте исходные данные
  • Запустите выгрузку из Data Proc
  • Проверьте загрузку данных в Managed Service for ClickHouse
  • Удалите созданные ресурсы