Коннектор Elasticsearch-Hadoop (ES-Hadoop) объединяет масштабируемое хранение данных и глубокие возможности обработки Hadoop с возможностями поиска и анализа в реальном времени Elasticsearch. Он позволяет быстро познакомиться с big data и лучше работать в экосистеме Hadoop.
В этой теме в качестве примера используется ES-Hadoop от MRS для описания подключения к кластеру CSS. Вы можете настроить любые другие приложения, которым требуется использовать кластер Elasticsearch. Убедитесь, что сетевое соединение между клиентом и кластером Elasticsearch нормально.
В этой теме в качестве примера используется частный IP-адрес для описания доступа к кластеру. Адрес доступа к кластеру меняется в зависимости от используемых сетевых конфигураций. Для подробностей см. Конфигурация сети.
Если в кластере только один узел, отображаются IP‑адрес и номер порта этого единственного узла, например, 10.62.179.32:9200. Если в кластере несколько узлов и все они являются узлами данных, отображаются IP‑адреса и номера портов всех этих узлов; если некоторые из них — клиентские узлы, отображаются только IP‑адреса и номера портов этих клиентских узлов; например, 10.62.179.32:9200,10.62.179.33:9200.
curl -X GET http://<host>:<port>
curl -X GET http://<host>:<port> -u <user>:<password>
curl -X GET https://<host>:<port> -u <user>:<password> -ik
Переменная | Описание |
|---|---|
<host> | IP‑адрес каждого узла в кластере. Если кластер содержит несколько узлов, будет несколько IP‑адресов. Вы можете использовать любой из них. |
<port> | Номер порта для доступа к узлу кластера. Обычно номер порта 9200. |
<user> | Имя пользователя для доступа к кластеру. |
<password> | Пароль пользователя. Если пароль содержит специальные символы, заключите имя пользователя и пароль в одинарные кавычки, например, curl -u "user:password!" "http://<host>:<port>". |
hadoop fs -mkdir /tmp/hadoop-eshadoop fs -put elasticsearch-hadoop-x.x.x.jar /tmp/hadoop-eshadoop fs -put commons-httpclient-3.1.jar /tmp/hadoop-es
Ввод 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;
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');
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');
chown -R omm truststore.jks
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');
Параметр | Значение по умолчанию | Описание |
|---|---|---|
es.nodes | localhost | Адрес для доступа к кластеру CSS. Вы можете проверить адрес частной сети в списке кластеров. |
es.port | 9200 | Номер порта для доступа к кластеру. Обычно номер порта — 9200. |
es.nodes.wan.only | false | Нужно ли выполнять обнаружение узлов. |
es.nodes.discovery | true | Нужно ли отключить обнаружение узлов. |
es.input.use.sliced.partitions | true | Нужно ли использовать срезы. Его значение может быть:
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 см. официальное описание конфигурации.
INSERT INTO TABLE student VALUES (1, "Lucy", "address1"), (2, "Lily", "address2");
select * from student;
Результат запроса выглядит следующим образом:
+-------------+---------------+---------------+| student.id | student.name | student.addr |+-------------+---------------+---------------+| 1 | Lucy | address1 || 2 | Lily | address2 |+-------------+---------------+---------------+2 rows selected (0.116 seconds)
GET /student/_search
Рисунок 1 Результат запроса Kibana

Для доступа к кластеру Elasticsearch в режиме безопасности, использующему HTTPS, необходимо загрузить сертификат безопасности. Выполните следующие действия, чтобы получить сертификат безопасности и загрузить его в клиент:
keytool -import -alias newname -keystore ./truststore.jks -file ./CloudSearchService.cer
keytool -import -alias newname -keystore .\truststore.jks -file .\CloudSearchService.cer
В предыдущей команде, newname указывает имя сертификата, определённое пользователем.
После выполнения этой команды вам будет предложено задать пароль сертификата и подтвердить пароль. Надежно храните пароль. Он будет использоваться для доступа к кластеру.