Hadoop distcp 命令使用不同的 S3 目标

标签 hadoop amazon-s3 hdfs eucalyptus distcp

我正在使用已在其上设置 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/

相关文章:

配置单元中的 Json 文件加载跳过第 1 行

amazon-web-services - 设置一个aws账户拥有的s3对另一个aws账户拥有的firehose流的写访问权限

amazon-web-services - 使用 s3 作为数据湖的 AWS 中的 ETL 管道如何处理增量更新

java - 如何在不先复制到本地文件系统的情况下使用 Java 解压缩存储在 HDFS 中的文件?

hadoop - 加载文件到hadoop

hadoop - hadoop体系结构查询示例

hadoop - Hadoop 守护进程的用户帐户

mongodb - 如何在hadoop mongodb mapreduce作业输出中嵌入文档?

java - 如何从 Java/Scala 读取 Nutch 内容?

python - 如何使用 boto3 从 s3 执行凭据下载而不保存文件?