Настройка учетных данных AWS — Cloudera Quickstart Docker Container

Я пытаюсь использовать док-контейнер Cloudera Quickstart для тестирования простых заданий Hadoop/Hive. Я хочу иметь возможность запускать задания с данными в S3, но пока у меня проблемы.

Я добавил следующие свойства в core-site.xml, hive-site.xml, hdfs-site.xml.

  <property>
    <name>fs.s3.awsAccessKeyId</name>
    <value>XXXXXX</value>
  </property>

  <property>
    <name>fs.s3.awsSecretAccessKey</name>
    <value>XXXXXX</value>
  </property>

Несмотря на это, в Hive при попытке создать внешнюю таблицу, указывающую на местоположение S3, я получаю сообщение об ошибке:

FAILED: SemanticException java.lang.IllegalArgumentException: AWS Access Key ID and Secret Access Key must be specified as the username or password (respectively) of a s3 URL, or by setting the fs.s3.awsAccessKeyId or fs.s3.awsSecretAccessKey properties (respectively).

person DJElbow    schedule 23.08.2016    source источник


Ответы (2)


Я надеюсь, что вы исправили проблему к настоящему времени, но это может быть полезно, если кто-то собирается сослаться на эту ссылку.

После добавления Accesskey и secretAccesskey во все файлы xml нам нужно убедиться, что местоположение s3, указанное в запросе, должно быть «s3a://», где большинство из нас указывает местоположение как «s3://».

person Naga    schedule 20.06.2017

В контейнере Cloudera Quickstart есть несколько мест, где можно потенциально установить учетные данные AWS. Однако свойства учетных данных в файлах конфигурации Hadoop должны быть установлены до запуска служб Cloudera. Также может быть полезно экспортировать ключи AWS в качестве переменных среды.

Пример образа Docker, который задает учетные данные AWS в контейнере Cloudera Quickstart можно найти здесь, а сообщение в блоге об этом изображении можно можно увидеть здесь.

По сути, Dockerfile для этого образа использует сценарий оболочки (содержимое показано ниже) для установки ключей AWS в качестве переменных среды, а также использует sed для обновления /etc/hadoop/conf/core-site.xml свойств учетных данных AWS s3n и s3a. Этот сценарий выполняется перед запуском любых служб Cloudera в контейнере быстрого запуска.

#!/bin/bash

# ADD ACTUAL AWS KEYS HERE BEFORE RUNNING SCRIPT/BUILDING DOCKER IMAGE
#######################################################################
AWS_ACCESS_KEY_ID=REPLACE-ME
AWS_SECRET_ACCESS_KEY=REPLACE-ME
###################################################################3

# add aws creds to .bashrc
echo "export AWS_ACCESS_KEY_ID=$AWS_ACCESS_KEY_ID" >> /root/.bashrc
echo "export AWS_SECRET_ACCESS_KEY=$AWS_SECRET_ACCESS_KEY" >> /root/.bashrc

# make backup of core-site.xml
mv /etc/hadoop/conf/core-site.xml /etc/hadoop/conf/core-site.xml.bak

# add aws credentials for s3a and s3n to core-site.xml
cat /etc/hadoop/conf/core-site.xml.bak \
  | sed "s#<\/configuration>#<property>\n<name>fs.s3a.awsAccessKeyId<\/name>\n<value>${AWS_ACCESS_KEY_ID}<\/value>\n<\/property>\n<property>\n<name>fs.s3a.awsSecretAccessKey<\/name>\n<value>${AWS_SECRET_ACCESS_KEY}<\/value>\n<\/property>\n<property>\n<name>fs.s3n.awsAccessKeyId<\/name>\n<value>${AWS_ACCESS_KEY_ID}<\/value>\n<\/property>\n<property>\n<name>fs.s3n.awsSecretAccessKey<\/name>\n<value>${AWS_SECRET_ACCESS_KEY}<\/value>\n<\/property>\n<\/configuration>#g" \
  > /etc/hadoop/conf/core-site.xml
person DJElbow    schedule 04.10.2016