Облачная платформаAdvanced

Доступ к кластеру Elasticsearch через клиент MRS Hive

Эта статья полезна?
Язык статьи: Русский
Показать оригинал
Страница переведена автоматически и может содержать неточности. Рекомендуем сверяться с английской версией.

Коннектор Elasticsearch-Hadoop (ES-Hadoop) объединяет масштабируемое хранение данных и глубокие возможности обработки Hadoop с возможностями поиска и анализа в реальном времени Elasticsearch. Он позволяет быстро познакомиться с big data и лучше работать в экосистеме Hadoop.

В этой теме в качестве примера используется ES-Hadoop от MRS для описания подключения к кластеру CSS. Вы можете настроить любые другие приложения, которым требуется использовать кластер Elasticsearch. Убедитесь, что сетевое соединение между клиентом и кластером Elasticsearch нормально.

Требования

  • Кластер CSS доступен.
  • Клиент может взаимодействовать с кластером CSS.
  • Кластеры CSS и MRS находятся в одном регионе, AZ, VPC и подсети.

Доступ к кластеру

  1. Получите приватный сетевой адрес кластера. Он используется для доступа к кластеру.

    В этой теме в качестве примера используется частный IP-адрес для описания доступа к кластеру. Адрес доступа к кластеру меняется в зависимости от используемых сетевых конфигураций. Для подробностей см. Конфигурация сети.

    1. Войдите в консоль управления CSS.
    2. В навигационной панели слева выберите Кластеры > Elasticsearch.
    3. В списке кластеров получите частный IP‑адрес целевого кластера из Частный IP‑адрес столбце. Как правило, формат IP‑адреса <host>:<port> или <host>:<port>,<host>:<port>.

      Если в кластере только один узел, отображаются IP‑адрес и номер порта этого единственного узла, например, 10.62.179.32:9200. Если в кластере несколько узлов и все они являются узлами данных, отображаются IP‑адреса и номера портов всех этих узлов; если некоторые из них — клиентские узлы, отображаются только IP‑адреса и номера портов этих клиентских узлов; например, 10.62.179.32:9200,10.62.179.33:9200.

  2. Войдите в узел кластера MRS.
  3. Запустите команду cURL на узле кластера MRS, чтобы проверить сетевую связность. Убедитесь, что каждый узел в кластере MRS может подключаться к кластеру CSS.
    • Кластер в режиме без безопасности
      curl -X GET http://<host>:<port>
    • Кластер в режиме безопасности + HTTP
      curl -X GET http://<host>:<port> -u <user>:<password>
    • Кластер в режиме безопасности + HTTPS
      curl -X GET https://<host>:<port> -u <user>:<password> -ik
    Таблица 1 Переменные

    Переменная

    Описание

    <host>

    IP‑адрес каждого узла в кластере. Если кластер содержит несколько узлов, будет несколько IP‑адресов. Вы можете использовать любой из них.

    <port>

    Номер порта для доступа к узлу кластера. Обычно номер порта 9200.

    <user>

    Имя пользователя для доступа к кластеру.

    <password>

    Пароль пользователя.

    Если пароль содержит специальные символы, заключите имя пользователя и пароль в одинарные кавычки, например, curl -u "user:password!" "http://<host>:<port>".

  4. Скачайте пакет библиотеки ES-Hadoop и распакуйте его, чтобы получить elasticsearch-hadoop-x.x.x.jar файл. Версия должна совпадать с версией кластера CSS. Например, если версия кластера CSS — 7.6.2, рекомендуется скачать elasticsearch-hadoop-7.6.2.zip.
  5. Скачайте пакет зависимостей HttpClient commons-httpclient:commons-httpclient-3.1.jar. В имени пакета, 3.1 указывает номер версии. Выберите пакет нужной версии.
  6. Установите клиент MRS. Если клиент MRS уже установлен, пропустите этот шаг.
  7. Войдите в клиент MRS. Загрузите JAR‑пакеты зависимостей ES-Hadoop и HttpClient в клиент MRS.
  8. Создайте каталог HDFS на клиенте MRS. Загрузите lib‑пакет ES-Hadoop и пакет зависимостей HttpClient в каталог.
    hadoop fs -mkdir /tmp/hadoop-es
    hadoop fs -put elasticsearch-hadoop-x.x.x.jar /tmp/hadoop-es
    hadoop fs -put commons-httpclient-3.1.jar /tmp/hadoop-es
  9. Войдите в клиент Hive из клиента MRS.
  10. В клиенте Hive добавьте lib‑пакет ES-Hadoop и пакет зависимостей HttpClient. Эта команда действительна только в текущей сессии.

    Ввод beeline или hive перейти на страницу выполнения и выполнить следующие команды:

    add jar hdfs:///tmp/hadoop-es/commons-httpclient-3.1.jar;
    add jar hdfs:///tmp/hadoop-es/elasticsearch-hadoop-x.x.x.jar;
  11. В клиенте Hive создать внешнюю таблицу Hive.
    • Кластер в режиме без безопасности
      CREATE EXTERNAL table IF NOT EXISTS student(
      id BIGINT,
      name STRING,
      addr STRING
      )
      STORED BY 'org.elasticsearch.hadoop.hive.EsStorageHandler'
      TBLPROPERTIES(
      'es.nodes' = 'xxx.xxx.xxx.xxx:9200',
      'es.port' = '9200',
      'es.net.ssl' = 'false',
      'es.nodes.wan.only' = 'false',
      'es.nodes.discovery'='false',
      'es.input.use.sliced.partitions'='false',
      'es.resource' = 'student/_doc'
      );
    • Кластер в режиме безопасности + HTTP
      CREATE EXTERNAL table IF NOT EXISTS student(
      id BIGINT,
      name STRING,
      addr STRING
      )
      STORED BY 'org.elasticsearch.hadoop.hive.EsStorageHandler'
      TBLPROPERTIES(
      'es.nodes' = 'xxx.xxx.xxx.xxx:9200',
      'es.port' = '9200',
      'es.net.ssl' = 'false',
      'es.nodes.wan.only' = 'false',
      'es.nodes.discovery'='false',
      'es.input.use.sliced.partitions'='false',
      'es.nodes.client.only'='true',
      'es.resource' = 'student/_doc',
      'es.net.http.auth.user' = 'username',
      'es.net.http.auth.pass' = 'password'
      );
    • Кластер в режиме безопасности + HTTPS
      1. Получение и загрузка сертификата безопасности.
      2. Поместите файл .jks в тот же путь каждого узла в кластере MRS, например, /tmp. Вы можете выполнить scp команду для передачи файла. Убедитесь, что пользователь omm имеет разрешение на чтение файла. Вы можете выполнить следующую команду для установки разрешения:
        chown -R omm truststore.jks
      3. Создать внешнюю таблицу Hive.
        CREATE EXTERNAL table IF NOT EXISTS student(
        id BIGINT,
        name STRING,
        addr STRING
        )
        STORED BY 'org.elasticsearch.hadoop.hive.EsStorageHandler'
        TBLPROPERTIES(
        'es.nodes' = 'https://xxx.xxx.xxx.xxx:9200',
        'es.port' = '9200',
        'es.net.ssl' = 'true',
        'es.net.ssl.truststore.location' = 'certFilePath',
        'es.net.ssl.truststore.pass' = 'certPassword',
        'es.nodes.wan.only' = 'false',
        'es.nodes.discovery'='false',
        'es.nodes.client.only'='true',
        'es.input.use.sliced.partitions'='false',
        'es.resource' = 'student/_doc',
        'es.net.http.auth.user' = 'username',
        'es.net.http.auth.pass' = 'password'
        );
    Таблица 2 Параметры ES-Hadoop

    Параметр

    Значение по умолчанию

    Описание

    es.nodes

    localhost

    Адрес для доступа к кластеру CSS. Вы можете проверить адрес частной сети в списке кластеров.

    es.port

    9200

    Номер порта для доступа к кластеру. Обычно номер порта — 9200.

    es.nodes.wan.only

    false

    Нужно ли выполнять обнаружение узлов.

    es.nodes.discovery

    true

    Нужно ли отключить обнаружение узлов.

    es.input.use.sliced.partitions

    true

    Нужно ли использовать срезы. Его значение может быть:

    • true
    • false
    NOTE:

    Если этот параметр установлен в true, время предварительной выборки индекса может значительно увеличиваться, и может быть даже гораздо дольше, чем время выполнения запросов данных. Рекомендуется установить этот параметр в false для повышения эффективности запросов.

    es.resource

    NA

    Указывает индекс и тип для чтения и записи.

    es.net.http.auth.user

    NA

    Имя пользователя для доступа к кластеру. Установите этот параметр только если включён режим безопасности.

    es.net.http.auth.pass

    NA

    Пароль пользователя. Установите этот параметр только если включён режим безопасности.

    es.net.ssl

    false

    Включать ли SSL. Если SSL включен, необходимо настроить информацию о сертификате безопасности.

    es.net.ssl.truststore.location

    NA

    Путь к файлу сертификата .jks, например, file:///tmp/truststore.jks.

    es.nodes.client.only

    false

    Проверьте, настроен ли IP‑адрес независимого узла Client для es.nodes (то есть, включён ли узел Client при создании кластера Elasticsearch). Если да, измените значение на true, иначе будет выведена ошибка, указывающая, что узел данных не найден.

    es.net.ssl.truststore.pass

    NA

    Пароль к файлу сертификата .jks.

    Подробнее о параметрах конфигурации ES-Hadoop см. официальное описание конфигурации.

  12. В клиенте Hive вставьте данные.
    INSERT INTO TABLE student VALUES (1, "Lucy", "address1"), (2, "Lily", "address2");
  13. В клиенте Hive выполните запрос.
    select * from student;

    Результат запроса выглядит следующим образом:

    +-------------+---------------+---------------+
    | student.id | student.name | student.addr |
    +-------------+---------------+---------------+
    | 1 | Lucy | address1 |
    | 2 | Lily | address2 |
    +-------------+---------------+---------------+
    2 rows selected (0.116 seconds)
  14. Войдите в Kibana.
    1. Войдите в консоль управления CSS.
    2. В навигационной панели слева выберите Clusters > Elasticsearch.
    3. В списке кластеров найдите целевой кластер и щелкните Kibana в Операция столбец для входа в консоль Kibana.
    4. В левой навигационной панели выберите Dev Tools.
  15. На Dev Tools страница Kibana, выполните запрос и проверьте результат.
    GET /student/_search

    Рисунок 1 Результат запроса Kibana


Получение и загрузка сертификата безопасности

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

  1. Получить сертификат безопасности CloudSearchService.cer.
    1. Войдите в консоль управления CSS.
    2. В левой навигационной панели выберите Кластеры > Elasticsearch.
    3. В списке кластеров нажмите имя целевого кластера. Отображается страница информации о кластере.
    4. Нажмите Обзор вкладка. В Конфигурация область, клик Скачать сертификат рядом с HTTPS Доступ.
  2. Конвертировать сертификат безопасности CloudSearchService.cer. Загрузите скачанный сертификат безопасности на клиент и используйте keytool для конвертации .cer сертификат в .jks сертификат, который может быть прочитан Java.
    • В Linux выполните следующую команду для конвертации сертификата:
      keytool -import -alias newname -keystore ./truststore.jks -file ./CloudSearchService.cer
    • В Windows выполните следующую команду для конвертации сертификата:
      keytool -import -alias newname -keystore .\truststore.jks -file .\CloudSearchService.cer

    В предыдущей команде, newname указывает имя сертификата, определённое пользователем.

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