Используйте данные hivevernoES для выполнения дополнительных проверок и изменений.,Используйте Kerberos+ranger для завершения установки разных пользователей в разные таблицы.,Детальный контроль разрешений для столбцов.
Версия кластера ES: 7.14.2
версия улья: 2.3.9
версия рейнджера: 2.1.0
Для доступа к кластеру hivevernoes требуется elasticsearch-hadoop.jar.
Кластер ES и версию elasticsearch-hadoop.jar, конечно, следует увидеть в приложении (в конце)
Создайте нового пользователя es, создайте нового пользователя в веб-интерфейсе EMR, загрузите вкладку ключей и поместите ее в каталог пользователей es.
Выполняется пользователем root
kadmin.local -q "listprincs"
Посмотреть принципала
После выполнения следующей команды вновь созданный пользователь es получает разрешения на аутентификацию Kerberos.
kinit -kt emr-4nkn6ozn-es.keytab es@EMR-4NKN6OZN
emr-4nkn6ozn-es.keytabОн загруженkeytabимя
В это время соединение jdbc по-прежнему будет сообщать об ошибке. Причина в том, что у es нет разрешения на доступ к каталогу hdfs. Просто настройте политику на Ranger, чтобы предоставить разрешение на доступ.
(Здесь вы можете создать специальный каталог для внешних таблиц, например /user/es/, и все последующее создание внешних таблиц будет расположено здесь)
Если сообщается об ошибке, у пользователя es нет разрешений для локальных каталогов tmp и logs, просто дайте 777 разрешений.
После подключения к hiveserver2 нет в рейнджереначальство Конфигурацияesбаза данных пользователей,разрешения таблицы,в это времяshow databasesТакже сообщит об ошибкеHiveAccessControlException Permission denied
Просто настройте разрешения для рейнджера.
add jar hdfs:///user/es/jars/elasticsearch-hadoop-hive-7.14.2.jar;
create external table default.test (uid string, clientip string, request string, status string)
STORED BY 'org.elasticsearch.hadoop.hive.EsStorageHandler'
location '/user/es/test'
TBLPROPERTIES('es.nodes' = 'ip',
'es.port'='9200',
'es.index.auto.create' = 'true',
'es.resource' ='index_name',
'es.net.http.auth.user'='elastic',
'es.net.http.auth.pass'='password',
'es.read.metadata' = 'true',
'es.mapping.names' = 'uid:_metadata._id,clientip:clientip,request:request,status:status',
'es.nodes.wan.only'='true',
'es.index.read.missing.as.empty'='true',
'es.input.use.sliced.partitions'='false',
'es.input.max.docs.per.partition'='100000000'
);
select * from test limit 10;
Создайте тест внешней таблицы в базе данных по умолчанию и завершите его в каталоге /user/es/test. На этом этапе вы можете обычным образом запрашивать данные кластера ES.
Введите планирование ресурсов пряжи, верный пул ресурсов для Конфигурация, и создайте новый пул ресурсов root.es под root.
Нажмите «Развернуть сейчас» в правом верхнем углу и используйте пряжу, чтобы обновить очередь.
иДобавьте новую политику в интерфейс пряжи рейнджера, чтобы предоставить пользователям es разрешение отправлять задачи в очередь root.es.。
В противном случае будет сообщено об ошибке
Failed to submit application_1689561165556_0020 to YARN : Application application_1689561165556_0020 submitted by user es to unknown queue: root.es
использоватьhadoopПользователь инициировалhiveserver2В каталоге, на доступ к которому у пользователя es есть разрешения.учреждатьhadoopповерхность
create external table hadoop(id string, sex string) location '/user/es/hadoop';
insert into table hadoop values('0','man');
Настройте разрешения пользователя es в ranger для тестовой таблицы в базе данных по умолчанию.
Было обнаружено, что пользователь es не может прочитать таблицу Hadoop, как ожидалось.
рейнджер не может контролировать улей cliвернодругойповерхностьразрешения
Рейнджер может контролировать права доступа пользователей к hdfs,Невозможно завершить контроль над таблицей доступа к верному hive cli (если пользователю разрешен доступ к каталогу HDFS),Может ли улей отключить локальное выполнение скриптов
1. Сначала пользователь testhadoop обрабатывает данные кластера ES.
add jar hdfs:///user/es/jars/elasticsearch-hadoop-hive-7.14.2.jar;
create external table default.test (uid string, clientip string, request string, status string)
STORED BY 'org.elasticsearch.hadoop.hive.EsStorageHandler'
location '/user/es/test'
TBLPROPERTIES('es.nodes' = 'ip',
'es.port'='9200',
'es.index.auto.create' = 'true',
'es.resource' ='index_name',
'es.net.http.auth.user'='elastic',
'es.net.http.auth.pass'='password',
'es.read.metadata' = 'true',
'es.mapping.names' = 'uid:_metadata._id,clientip:clientip,request:request,status:status',
'es.nodes.wan.only'='true',
'es.index.read.missing.as.empty'='true',
'es.input.use.sliced.partitions'='false',
'es.input.max.docs.per.partition'='100000000'
);
select * from test limit 10;
В обычных обстоятельствах пользователи Hadoop могут выполнить любую операцию с данными кластера TrueES в кусте.
Проблема: hive не может подключиться к кластеру ES, но порт 9200 можно пинговать.
Причина: Неверно настроены параметры имени пользователя и пароля и используются параметры прокси.
es.net.proxy.http.user
es.net.proxy.http.pass
Правильные параметры:
es.net.http.auth.user
es.net.http.auth.pass
2. Используйте рейнджер для детального контроля разрешений для новых пользователей.
Создайте нового пользователя es, создайте нового пользователя в веб-интерфейсе EMR, загрузите вкладку ключей и поместите ее в каталог пользователей es.
Выполняется пользователем rootСледующая команда
kadmin.local -q "listprincs"
Посмотреть принципала
После выполнения следующей команды вновь созданный пользователь es получает разрешения на аутентификацию Kerberos.
kinit -kt emr-4nkn6ozn-es.keytab es@EMR-4NKN6OZN
emr-4nkn6ozn-es.keytabОн загруженkeytabимя
Когда в это время запускается куст, по-прежнему будет сообщаться об ошибке. В частности, каталоги tmp и logs не имеют разрешений. Просто дайте разрешения 777 в соответствии с отчетом об ошибке.
После предоставления разрешения пользователь es не имеет авторизации рейнджера и не может получить доступ к каталогу hdfs, а куст не запускается.
Просто настройте стратегию в интерфейсе рейнджера.
Появится запрос:
hive> select * from tmp_es;
FAILED: RuntimeException org.apache.hadoop.hive.ql.metadata.HiveException: Error in loading storage handler.org.elasticsearch.hadoop.hive.EsStorageHandler
Причина этой ошибки в том, что нетelasticsearch-hadoop-hive-7.14.2.jar, еще нужно добавить банку
Если при добавлении jar вам будет предложено указать, что файл не существует, поскольку пользователь es не может получить доступ к файлу пользователя Hadoop, просто скопируйте пакет jar с пользователем es.
Повторите запрос и сообщите об ошибке, что нет разрешения на каталог hdfs:
Просто настройте разрешения в веб-интерфейсе рейнджера, и все последующие права доступа к HDFS будут такими.
Ошибка при вставке данных в таблицу:
java.io.IOException: org.apache.hadoop.yarn.exceptions.YarnException: Failed to submit application_1689561165556_0003 to YARN : org.apache.hadoop.security.AccessControlException: User es cannot submit applications to queue root.default
Введите планирование ресурсов пряжи, верный пул ресурсов для Конфигурация, и создайте новый пул ресурсов es под root.
Нажмите «Развернуть сейчас» в правом верхнем углу и используйте пряжу, чтобы обновить очередь.
иДобавьте новую политику в интерфейс пряжи рейнджера, чтобы предоставить пользователям es разрешение отправлять задачи в очередь root.es.。
В противном случае будет сообщено об ошибке:
Failed to submit application_1689561165556_0020 to YARN : Application application_1689561165556_0020 submitted by user es to unknown queue: root.es
Elasticsearch | Kibana | X-Pack | Beats^* | Logstash^* | ES-Hadoop(jar)* | APM Server | App Search |
---|---|---|---|---|---|---|---|
5.0.x | 5.0.x | 5.0.x | 1.3.x-5.6.x | 2.4.x-5.6.x | 5.0.x-5.6.x | N/A | N/A |
5.1.x | 5.1.x | 5.1.x | 1.3.x-5.6.x | 2.4.x-5.6.x | 5.0.x-5.6.x | N/A | N/A |
5.2.x | 5.2.x | 5.2.x | 1.3.x-5.6.x | 2.4.x-5.6.x | 5.0.x-5.6.x | N/A | N/A |
5.3.x | 5.3.x | 5.3.x | 1.3.x-5.6.x | 2.4.x-5.6.x | 5.0.x-5.6.x | N/A | N/A |
5.4.x | 5.4.x | 5.4.x | 1.3.x-5.6.x | 2.4.x-5.6.x | 5.0.x-5.6.x | N/A | N/A |
5.5.x | 5.5.x | 5.5.x | 1.3.x-5.6.x | 2.4.x-5.6.x | 5.0.x-5.6.x | N/A | N/A |
5.6.x | 5.6.x | 5.6.x | 1.3.x-6.0.x | 2.4.x-6.0.x | 5.0.x-6.0.x | N/A | N/A |
6.0.x | 6.0.x | 6.0.x | 5.6.x-6.8.x | 5.6.x-6.8.x | 6.0.x-6.8.x | N/A | N/A |
6.1.x | 6.1.x | 6.1.x | 5.6.x-6.8.x | 5.6.x-6.8.x | 6.0.x-6.8.x | N/A | N/A |
6.2.x | 6.2.x | 6.2.x | 5.6.x-6.8.x | 5.6.x-6.8.x | 6.0.x-6.8.x | 6.2.x-6.8.x | N/A |
6.3.x | 6.3.x | N/A** | 5.6.x-6.8.x | 5.6.x-6.8.x | 6.0.x-6.8.x | 6.2.x-6.8.x | N/A |
6.4.x | 6.4.x | N/A** | 5.6.x-6.8.x | 5.6.x-6.8.x | 6.0.x-6.8.x | 6.2.x-6.8.x | N/A |
6.5.x | 6.5.x | N/A** | 5.6.x-6.8.x | 5.6.x-6.8.x | 6.0.x-6.8.x | 6.2.x-6.8.x | N/A |
6.6.x | 6.6.x | N/A** | 5.6.x-6.8.x | 5.6.x-6.8.x | 6.0.x-6.8.x | 6.2.x-6.8.x | N/A |
6.7.x | 6.7.x | N/A** | 5.6.x-6.8.x | 5.6.x-6.8.x | 6.0.x-6.8.x | 6.2.x-6.8.x | N/A |
6.8.x | 6.8.x | N/A** | 5.6.x-6.8.x | 5.6.x-6.8.x | 6.0.x-6.8.x | 6.2.x-6.8.x | N/A |
7.0.x | 7.0.x | N/A** | 6.8.x-7.17.x | 6.8.x-7.17.x | 6.8.x-7.17.x | 7.0.x-7.17.x*** | N/A |
7.1.x | 7.1.x | N/A** | 6.8.x-7.17.x | 6.8.x-7.17.x | 6.8.x-7.17.x | 7.0.x-7.17.x*** | N/A |
7.2.x | 7.2.x | N/A** | 6.8.x-7.17.x | 6.8.x-7.17.x | 6.8.x-7.17.x | 7.0.x-7.17.x*** | 7.2.x |
7.3.x | 7.3.x | N/A** | 6.8.x-7.17.x | 6.8.x-7.17.x | 6.8.x-7.17.x | 7.0.x-7.17.x*** | 7.3.x |
7.4.x | 7.4.x | N/A** | 6.8.x-7.17.x | 6.8.x-7.17.x | 6.8.x-7.17.x | 7.0.x-7.17.x*** | 7.4.x |
7.5.x | 7.5.x | N/A** | 6.8.x-7.17.x | 6.8.x-7.17.x | 6.8.x-7.17.x | 7.0.x-7.17.x*** | 7.5.x |
7.6.x | 7.6.x | N/A** | 6.8.x-7.17.x | 6.8.x-7.17.x | 6.8.x-7.17.x | 7.0.x-7.17.x*** | 7.6.x |
7.7.x | 7.7.x | N/A** | 6.8.x-7.17.x | 6.8.x-7.17.x | 6.8.x-7.17.x | 7.0.x-7.17.x*** | N/A**** |
7.8.x | 7.8.x | N/A** | 6.8.x-7.17.x | 6.8.x-7.17.x | 6.8.x-7.17.x | 7.0.x-7.17.x*** | N/A**** |
7.9.x | 7.9.x | N/A** | 6.8.x-7.17.x | 6.8.x-7.17.x | 6.8.x-7.17.x | 7.0.x-7.17.x*** | N/A**** |
7.10.x | 7.10.x | N/A** | 6.8.x-7.17.x | 6.8.x-7.17.x | 6.8.x-7.17.x | 7.0.x-7.17.x*** | N/A**** |
7.11.x | 7.11.x | N/A** | 6.8.x-7.17.x | 6.8.x-7.17.x | 6.8.x-7.17.x | 7.0.x-7.17.x*** | N/A**** |
7.12.x | 7.12.x | N/A** | 6.8.x-7.17.x | 6.8.x-7.17.x | 6.8.x-7.17.x | 7.0.x-7.17.x*** | N/A**** |
7.13.x | 7.13.x | N/A** | 6.8.x-7.17.x | 6.8.x-7.17.x | 6.8.x-7.17.x | 7.0.x-7.17.x*** | N/A**** |
7.14.x | 7.14.x | N/A** | 6.8.x-7.17.x | 6.8.x-7.17.x | 6.8.x-7.17.x | 7.0.x-7.17.x*** | N/A**** |
7.15.x | 7.15.x | N/A** | 6.8.x-7.17.x | 6.8.x-7.17.x | 6.8.x-7.17.x | 7.0.x-7.17.x*** | N/A**** |
7.16.x | 7.16.x | N/A** | 6.8.x-7.17.x | 6.8.x-7.17.x | 6.8.x-7.17.x | 7.0.x-7.17.x*** | N/A**** |
7.17.x | 7.17.x | N/A** | 6.8.x-7.17.x | 6.8.x-7.17.x | 6.8.x-7.17.x | 7.0.x-7.17.x*** | N/A**** |
8.0.x | 8.0.x | N/A** | 7.17.x - 8.0.x | 7.17.x - 8.5.x | 7.17.x - 8.5.x | 7.17.x - 8.0.x | N/A**** |
8.1.x | 8.1.x | N/A** | 7.17.x - 8.1.x | 7.17.x - 8.5.x | 7.17.x - 8.5.x | 7.17.x - 8.1.x | N/A**** |
8.2.x | 8.2.x | N/A** | 7.17.x - 8.2.x | 7.17.x - 8.5.x | 7.17.x - 8.5.x | 7.17.x - 8.2.x | N/A**** |
8.3.x | 8.3.x | N/A** | 7.17.x - 8.3.x | 7.17.x - 8.5.x | 7.17.x - 8.5.x | 7.17.x - 8.3.x | N/A**** |
8.4.x | 8.4.x | N/A** | 7.17.x - 8.4.x | 7.17.x - 8.5.x | 7.17.x - 8.5.x | 7.17.x - 8.4.x | N/A**** |
8.5.x | 8.5.x | N/A** | 7.17.x - 8.5.x | 7.17.x - 8.5.x | 7.17.x - 8.5.x | 7.17.x - 8.5.x | N/A |
8.6.x | 8.6.x | N/A** | 7.17.x - 8.6.x | N/A | 7.17.x - 8.6.x | 7.17.x - 8.6.x | N/A |