있습니다 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