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)
但访问密钥和加密密钥在这里是可见的,这是不安全的。有没有任何方法可以从文件提供凭据。我不想编辑配置文件,这是我遇到的方法之一。
我也遇到了同样的情况,并且从 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)
归档时间: |
|
查看次数: |
8798 次 |
最近记录: |