用于将文件从HDFS复制到AWS S3的Hadoop服务器连接

时间:2018-06-15 21:55:19

标签: java amazon-web-services hadoop amazon-s3

要求将hdfs文件从Hadoop集群(非aws)复制到AWS S3存储桶,并使用每日CRON安排独立的Java应用程序。 将使用AmazonS3.copyObject()方法进行复制。 如何为源Hadoop集群指定kerberized服务器连接详细信息,以便S3client可以从源hdfs文件夹访问文件。

以前使用了以下命令,但它不是传输文件的安全方式。

hadoop distcp -Dfs.s3a.access.key =<<>> -Dfs.s3a.secret.key = LT;<>> hdfs:// nameservice1 / test / test1 / folder s3a://<> / test / test1 / folder

1 个答案:

答案 0 :(得分:0)

S3不会靠近kerberos;您的cronjob将必须在密钥表上使用kinit来对HDFS访问进行身份验证。

将机密传递给distcp的最安全方法是将其保存在群集FS的JCEKS文件中,例如运行该作业的用户的主目录中的一个文件,该权限仅允许该人读取(最大妄想症) :设置用于加密的密码,并将其与作业一起传递)。参见Protecting S3 Credentials with Credential Providers

要尝试的另一种技巧:使用CLI assume role命令创建会话凭据,并将临时凭据传递给distcp for s3a to pick up。这样,是的,秘密对于.ps是可见的,但不是寿命更长的秘密。与用户的完整帐户相比,您还可以要求访问权限受限的特定角色(例如:仅对一个存储桶进行读/写访问)