我想通过Hadoop distcp将Amazon的S3用作我的数据的DR备份。我有一些大文件,所以我需要使用S3A。此命令有效:
hadoop distcp <source> s3a://<ID>:<KEY>@bucket/
我想编写此命令的脚本,并且不希望将ID和KEY放入URL中。是否有另一种方法来指定它们,例如,在Hadoop配置文件或环境变量中?
回答我自己的问题。每次我尝试删除配置XML文件或JVM变量的ID和KEY时,都会失败。我终于意识到这是因为我需要在需要删除时保留'@'符号:
使用: hadoop distcp -Dfs.s3a.access.key = -Dfs.s3a.secret.key = s3a:/// 不起作用: hadoop distcp -Dfs.s3a.access.key = -Dfs.s3a.secret.key = s3a:// @ /
如果在Hadoop配置文件中设置了fs.s3a.access.key和fs.s3a.secret.key,例如hdfs-site.xml,这适用: hadoop distcp s3a:/// 但这不起作用: hadoop distcp s3a:// @ /
如果在备用配置文件中设置了fs.s3a.access.key和fs.s3a.secret.key,则可以: hadoop distcp -conf s3a:/// 但这不起作用: hadoop distcp -conf s3a:// @ /