2

Cloudera의 Quickstart 도커 컨테이너를 사용하여 간단한 Hadoop/Hive 작업을 테스트하려고합니다. S3의 데이터에서 작업을 실행할 수 있기를 원하지만 문제가 발생했습니다.AWS 자격증 명 설정 - Cloudera Quickstart Docker Container

아래 속성을 core-site.xml, hive-site.xml, hdfs-site.xml에 추가했습니다. 클라우 데라에서 잠재적으로 설정 AWS 자격 증명 장소의 수는

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). 

답변

0

있습니다 S3의 위치를 ​​가리키는 외부 테이블을 만들려고 할 때

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

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

에 관계없이, 하이브에서, 나는 오류 빠른 시작 컨테이너. 그러나 Cloudera 서비스를 시작하기 전에 Hadoop 설정 파일의 신임 정보를 설정해야합니다. AWS 키를 환경 변수로 내보내는 것도 도움이 될 수 있습니다.

클라우 데라 빠른 용기 can be found here의 AWS 인증 정보를 설정하는 도커 화상 및이 화상의 블로그 게시물의 예는 수 be seen here.

본질적이 이미지의 Dockerfile 쉘 스크립트 (내용은 아래 참조)을 사용 환경 변수로 AWS 키를 설정하고 을 AWS s3n 및 s3a 자격 증명 속성으로 업데이트하려면 sed을 사용합니다. 이 스크립트는 빠른 시작 컨테이너의 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 
0

나는 당신이 지금에 의해 문제를 해결 한 것입니다 희망하지만, 하나는 우리가해야 할 모든 XML 파일에 액세스 키 & secretAccesskey를 추가 한 후이 링크

을 참조하는 것입니다 경우에 유용 할 수 있습니다 쿼리에 지정된 s3 위치는 "s3 : //"이어야합니다. 대부분의 사용자가 위치를 "s3 : //"으로 지정해야합니다.