hadoop distcp-在不同位置之间复制时出现小文件问题

qnyhuwrf  于 2021-05-27  发布在  Hadoop
关注(0)|答案(1)|浏览(561)

我曾尝试复制400+gb和一个数据大小为35.6 gb的distcp作业,但两个作业都花了将近2-3个小时才完成。
我们在集群里有足够的资源。
但是当我检查了容器日志后,我发现复制小文件要花很多时间。有问题的文件是一个小文件。
2019-10-23 14:49:09546 info[main]org.apache.hadoop.tools.mapred.copymapper:复制hdfs://service-namemode-prod-ab//xyz/ava//hello/grp_part-00001-.snappy.parquet 致s3a://bucket name/data//xyz/ava//hello/grp\u part-00001-.snappy.parquet 2019-10-23 14:49:09,940 info[main]org.apache.hadoop.tools.mapred.retriablefilecopycommand:创建临时文件:s3a://bucket name/data/.distcp.tmp.attempt\u 15715666604\u 9887\u m\u 000010\u 0
那么,如何使用distcp来改进这一点,从而使复制速度更快呢?
注意:同一集群上的同一数据拷贝到对象存储(内部存储)不是aws s3,而是类似于s3的数据拷贝需要4分钟,占用98.6gb。
命令:
hadoop distcp-dmapreduce.task.timeout=0-dfs.s3a.fast.upload=true-dfs.s3a.fast.buffer.size=157286400-dfs.s3a.multipart.size=314572800-dfs.s3a.multipart.threshold=1073741824-dmapreduce.map.memory.mb=8192-dmapreduce.map.java.opts=-xmx7290m-dfs.s3a.max.total.tasks=1-dfs.s3a.threads.max=10-带宽1024//xyz/ava/s3a://bucket name/data/
在价值方面可以优化什么?
我的集群规格如下,
分配内存(累计)-1.2t
可用内存-5.9t
已分配vcores(累计)-119t
可用vcores-521t
配置容量-997t
使用的hdfs-813t
使用非hdfs-2.7吨
有没有人能提出一个解决方案来解决这个问题,并提出一个最佳的distcp配置,用于将800gb-1tb的文件从hdfs传输到对象存储。

6vl6ewon

6vl6ewon1#

在我的项目中,我们通过distcp将20tb复制到s3a。花了将近24小时。但是,通过添加两个新的bucket并通过相同的distcp命令,复制时间减少到了16小时。
另一个选择是增加集群中vcore的数量。

相关问题