【问题标题】:Setting up AWS Credentials - Cloudera Quickstart Docker Container设置 AWS 凭证 - Cloudera 快速入门 Docker 容器
【发布时间】:2016-08-23 06:06:08
【问题描述】:

我正在尝试使用 Cloudera 的 Quickstart docker 容器来测试简单的 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).

【问题讨论】:

    标签: amazon-web-services hadoop hive cloudera cloudera-quickstart-vm


    【解决方案1】:

    我希望你现在已经解决了这个问题,但是如果有人要参考这个链接,它可能会很有用

    在所有 xml 文件中添加 Accesskey 和 secretAccesskey 后,我们需要确保查询中给出的 s3 位置应该是“s3a://”,我们大多数人将位置指定为“s3: //"

    【讨论】:

      【解决方案2】:

      Cloudera 快速入门容器中有许多地方可以设置 AWS 凭证。但是,必须在 Cloudera 服务启动之前设置 Hadoop 配置文件中的凭据属性。将 AWS 密钥导出为环境变量也很有帮助。

      在 Cloudera Quickstart 容器can be found here 中设置 AWS 凭证的 Docker 映像示例,有关此映像的博客文章可以be seen here.

      本质上,此映像的 Dockerfile 使用 shell 脚本(内容如下所示)将 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
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2016-11-26
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2016-07-13
        • 1970-01-01
        相关资源
        最近更新 更多