我正在使用已在其上设置 CDH5 HDFS 的 Eucalyptus 私有(private)云。我想将我的 HDFS 备份到 Eucalyptus S3。此处建议使用 distcp 的经典方法:http://wiki.apache.org/hadoop/AmazonS3 ,即hadoop distp hdfs://namenode:9000/user/foo/data/fil1 s3://$AWS_ACCESS_KEY:$AWS_SECRET_KEY@bucket/key
不起作用。
似乎 hadoop 已在 Amazon 上预先配置了 S3 位置,我找不到此配置在哪里,以便将其更改为我在 Eucalyptus 上运行的 S3 服务的 IP 地址。我希望能够以与使用 hdfs://前缀时更改 NameNode uri 相同的方式更改 S3 的 uri。但似乎这是不可能的......有什么见解吗?
我已经找到了传输数据的解决方法。特别是这里的 s3cmd 工具:https://github.com/eucalyptus/eucalyptus/wiki/HowTo-use-s3cmd-with-Eucalyptus和这里的 s3curl 脚本:aws.amazon.com/developertools/Amazon-S3/2880343845151917 工作得很好,但如果我可以使用带有 distcp 命令的 map-reduce 传输我的数据,我更愿意。
最佳答案
看起来 hadoop 正在使用 jets3t 库进行 S3 访问。您也许可以使用描述的配置in this blog要访问 eucalyptus,但请注意,对于版本 4 及更高版本,路径是“/services/objectstorage”而不是“/services/Walrus”。
关于Hadoop distcp 命令使用不同的 S3 目标,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26290817/