hadoop - Hadoop distcp to S3 性能很慢
问题描述
我正在尝试使用 .将数据从 HDFS 复制到 Amazon S3 hadoop distcp
。数据量为 227GB,作业已运行超过 12 小时。
S3 存储桶是否有 3500 个写入请求的硬性限制?这会导致经济放缓吗?有解决方法吗?还是以任何其他方式提高云性能?
以下是我的命令:
hadoop distcp -Dfs.s3a.aws.credentials.provider=org.apache.hadoop.fs.s3a.TemporaryAWSCredentialsProvider -Dfs.s3a.access.key=KEY -Dfs.s3a.secret.key=SECRET -Dfs.s3a.session.token=TOKEN -Dfs.s3a.server-side-encryption-algorithm=SSE-KMS -Dfs.s3a.server-side-encryption-key=enc-key -Dmapreduce.job.queuename=default -Ddistcp.dynamic.split.ratio=4 -Ddistcp.dynamic.recordsPerChunk=25 -Ddistcp.dynamic.max.chunks.tolerable=20000 -strategy dynamic -i -numListstatusThreads 40 -m 300 -update -delete /data/prod/hdp/brm s3a://bucket/data/prod/hdp/brm
有很多小文件。文件的平均大小约为 300KB。我不得不启动这项工作两次,第一次失败,很多映射器抛出如下错误:
Caused by: org.apache.hadoop.fs.s3a.AWSS3IOException: getFileStatus on s3a://bucket/data/prod/hdp/brm/.distcp.tmp.attempt_1574118601834_3172_m_000000_0: com.amazonaws.services.s3.model.AmazonS3Exception: Bad Request (Service: Amazon S3; Status Code: 400; Error Code: 400 Bad Request;
然后我意识到拥有更多前缀会有所帮助,并启动了一项新工作,该工作更深入(/data/prod/hdp/brm
到/data/prod/hdp/brm/dataout/enabled
),因为/data/prod/hdp/brm/dataout/enabled
有 10 个目录,我认为这会增加写入请求。该作业现在运行没有任何问题,但性能非常糟糕。
任何帮助,将不胜感激。谢谢你。
解决方案
推荐阅读
- rust - rust-buildgen requestAnimationFrameLoop 无法在闭包内使用结构方法
- c# - 如果选中复选框,如何将“项目”添加到数组列表?
- c - 无法从字符指针数组打印最后一部分
- angular - 如何订阅条件订阅结果
- html - 无法将提交按钮与浏览按钮对齐
- c# - 自定义验证属性在客户端不起作用
- ruby-on-rails - 尝试创建新的 rails 5.1.4 项目时出现“找不到 gem”错误
- xcode-ui-testing - 两个模拟器上的单个 UITest 案例
- r - 使用 ggplot2 为并排图添加数据点
- c# - 通过 ClickOnce 部署 CefSharp Winform 并要求 Visual Studio 2019 中的 vc redist - 错误