2

我試圖使用Cloudera的Quickstart docker容器來測試簡單的Hadoop/Hive作業。我希望能夠在S3中運行數據,但到目前爲止我們遇到了問題。設置AWS Credentials - Cloudera快速入門Docker容器

我已將以下屬性添加到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> 

無論如何,在蜂房嘗試創建一個外部表指向一個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). 

回答

0

有許多在Cloudera的地方可能設置AWS憑據快速啓動容器。但是,必須在Cloudera服務啓動之前設置Hadoop配置文件中的憑證屬性。將AWS密鑰導出爲環境變量也會很有幫助。

,其設定在Cloudera的快速啓動容器can be found here AWS憑證的多克爾圖像,並且該圖像上的博客文章的實例可以be seen here.

本質上Dockerfile該圖像使用一個外殼腳本(如下所示的內容),以將AWS密鑰設置爲環境變量,並使用sed來更新具有AWS s3n和s3a憑證屬性的/etc/hadoop/conf/core-site.xml。此腳本在快速啓動容器中的任何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 a://」我們大多數人給出的位置爲「s3://」