首页 > 解决方案 > 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 个目录,我认为这会增加写入请求。该作业现在运行没有任何问题,但性能非常糟糕。

任何帮助,将不胜感激。谢谢你。

标签: hadoopamazon-s3distcp

解决方案


推荐阅读