gpt4 book ai didi

hadoop - 使用hadoop distcp将数据复制到s3 block 文件系统: The specified copy source is larger than the maximum allowable size for a copy source

转载 作者:行者123 更新时间:2023-12-02 21:51:35 24 4
gpt4 key购买 nike

我正在尝试使用 hadoop 的 distcp将数据从 HDFS 复制到 S3(不是 S3N)。我的理解是使用 s3://协议(protocol),Hadoop 将在 S3 上存储各个 block ,并且每个 S3"file"将有效地成为一个 HDFS block 。

Hadoop 版本是在 Amazon EMR 上运行的 2.2.0。

但是,尝试做一个简单的 distcp ,我收到以下错误:

Caused by: Status Code: 400, AWS Service: Amazon S3, AWS Request ID: 71C64ECE79FCC244, AWS Error Code: InvalidRequest, AWS Error Message: The specified copy source is larger than the maximum allowable size for a copy source: 5368709120, S3 Extended Request ID: uAnvxtrNolvs0qm6htIrKjpD0VFxzjqgIeN9RtGFmXflUHDcSqwnZGZgWt5PwoTy
at com.amazonaws.http.AmazonHttpClient.handleErrorResponse(AmazonHttpClient.java:619)
at com.amazonaws.http.AmazonHttpClient.executeHelper(AmazonHttpClient.java:317)
at com.amazonaws.http.AmazonHttpClient.execute(AmazonHttpClient.java:170)
at com.amazonaws.services.s3.AmazonS3Client.invoke(AmazonS3Client.java:2943)
at com.amazonaws.services.s3.AmazonS3Client.copyObject(AmazonS3Client.java:1235)
at org.apache.hadoop.fs.s3native.Jets3tNativeFileSystemStore.copy(Jets3tNativeFileSystemStore.java:277)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:606)
at org.apache.hadoop.io.retry.RetryInvocationHandler.invokeMethod(RetryInvocationHandler.java:186)
at org.apache.hadoop.io.retry.RetryInvocationHandler.invoke(RetryInvocationHandler.java:102)
at org.apache.hadoop.fs.s3native.$Proxy11.copy(Unknown Source)
at org.apache.hadoop.fs.s3native.NativeS3FileSystem.rename(NativeS3FileSystem.java:1217)
at org.apache.hadoop.tools.mapred.RetriableFileCopyCommand.promoteTmpToTarget(RetriableFileCopyCommand.java:161)
at org.apache.hadoop.tools.mapred.RetriableFileCopyCommand.doCopy(RetriableFileCopyCommand.java:110)
at org.apache.hadoop.tools.mapred.RetriableFileCopyCommand.doExecute(RetriableFileCopyCommand.java:83)
at org.apache.hadoop.tools.util.RetriableCommand.execute(RetriableCommand.java:87)

我的一些源文件大于 5GB。查看错误,distcp 似乎正在尝试将文件从 HDFS 盲目复制到 S3,就好像它正在使用 S3 Native 文件系统一样。由于文件大于 5GB,因此失败,因为 S3 不支持放置请求 >5GB。

为什么会这样?我原以为 distcp 会尝试将单个 block 放到 S3 上,而这些应该只有 64MB(我的 HDFS block 大小)。

最佳答案

这是来自 wiki 的示例:http://wiki.apache.org/hadoop/AmazonS3

% ${HADOOP_HOME}/bin/hadoop distcp hdfs://domU-12-31-33-00-02-DF:9001/user/nutch/0070206153839-1998 s3://123:456@nutch/

关于hadoop - 使用hadoop distcp将数据复制到s3 block 文件系统: The specified copy source is larger than the maximum allowable size for a copy source,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20286148/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com