Hdfs 到 s3 Distcp - 访问密钥

Fre*_*man 4 hadoop amazon-s3 hdfs distcp

为了将文件从 HDFS 复制到 S3 存储桶,我使用了命令

hadoop distcp -Dfs.s3a.access.key=ACCESS_KEY_HERE\
-Dfs.s3a.secret.key=SECRET_KEY_HERE /path/in/hdfs s3a:/BUCKET NAME
Run Code Online (Sandbox Code Playgroud)

但访问密钥和加密密钥在这里是可见的,这是不安全的。有没有任何方法可以从文件提供凭据。我不想编辑配置文件,这是我遇到的方法之一。

Fan*_*Fan 5

我也遇到了同样的情况,并且从 matadata 实例获得临时凭证后。(如果您使用 IAM 用户凭证,请注意,这里提到的临时凭证是 IAM 角色,它附加到 EC2 服务器而不是人类服务器,请参阅http://docs.aws.amazon.com/AWSEC2/latest/UserGuide/ iam-roles-for-amazon-ec2.html

我发现仅在 cmd 中指定凭据hadoop distcp是行不通的。您还必须指定一个配置fs.s3a.aws.credentials.provider。(请参阅http://hortonworks.github.io/hdp-aws/s3-security/index.html#using-temporary-session-credentials

最终命令如下所示

hadoop distcp -Dfs.s3a.aws.credentials.provider="org.apache.hadoop.fs.s3a.TemporaryAWSCredentialsProvider" -Dfs.s3a.access.key="{AccessKeyId}" -Dfs.s3a.secret.key="{SecretAccessKey}" -Dfs.s3a.session.token="{SessionToken}" s3a://bucket/prefix/file /path/on/hdfs
Run Code Online (Sandbox Code Playgroud)