要求是将hdfs文件从Hadoop集群(非亚马逊网络服务)复制到亚马逊网络服务S3存储桶,并使用独立的java应用程序安排每日CRON。将使用AmazonS3.copy copying ()方法进行复制。如何指定源Hadoop集群的kerberized服务器连接详细信息,以便S3client可以访问源hdfs文件夹中的文件。
下面的命令早些时候用过,但它不是安全的文件传输方式。
hadoop distcp -Dfs.s3a.access.key=<<>> -Dfs.s3a.secret.key=<<>> hdfs://nameservice1/test/test1/folder s3a://<>/test/test1/folder
发布于 2018-06-22 04:31:36
cronjob不能接近kerberos;您的cronjob必须使用密钥表之外的kinit
对S3访问进行身份验证。
将秘密传递给distcp的最安全方法是将它们保存在集群FS中的JCEKS文件中,例如运行作业的用户的主目录中,权限仅供该用户读取(最大偏执:设置用于加密的密码并与作业一起传递)。请参阅Protecting S3 Credentials with Credential Providers
另一个技巧是:使用CLI命令创建会话凭证,并将临时凭证传递给assume role for s3a to pick up。这样的话,是的,这些秘密对.ps是可见的,但它们不是更持久的秘密。与用户的完整帐户相比,您还可以请求具有受限访问权限的特定角色(例如:仅对一个存储桶具有读/写访问权限)
https://stackoverflow.com/questions/50883131
复制相似问题