s3-dist-cp 预期性能

0

【以下的问题经过翻译处理】 我正在尝试评估s3-dist-cp工具是否有助于以下用例:我有数百万个小文本文件(每个文件大小为几十KB),存储在S3存储桶中,在对其进行更多处理前需要将它们合并成更大的文件并使用Spark处理。 为了测试s3-dist-cp,我首先在一个较小的存储桶上进行了尝试,其中包含约550,000个文件(总共大小约为6.8GB)。我启动了一个带有15个核心节点(m6g.xlarge实例类型,4个VCPUs/16GB RAM)的EMR集群,并使用以下命令运行了该工具:

s3-dist-cp --src s3://mybucket/data/ --dest hdfs:///my_data --outputCodec=gz --targetSize=128 --groupBy='.*(celery-task-meta).*'

这需要1小时38分钟才能完成,这种持续时间是否正常?我能做些什么来加速它?

profile picture
EXPERTE
gefragt vor 5 Monaten30 Aufrufe
1 Antwort
0

【以下的回答经过翻译处理】 s3-dist-cp使用Hadoop Map Reduce完成复制任务。在读写S3时,它会使用EMRFS来进行GET/PUT/LIST调用以访问S3。

因此,若要调整作业运行时的性能,有以下必要:

  • 你需要了解Hadoop的工作原理以及它如何与YARN集成。
  • 还可以调整文件系统(S3和HDFS)以提高读取、写入和列出性能。

必须进行基准测试以真正了解此集群大小需要1小时38分钟的正常时间。

你可以使用YARN资源管理器UI和MR作业历史服务器日志来监视Mapreduce作业,以确定花费大量时间的位置。

  • 是否有处于等待YARN分配资源挂起状态的容器(映射器或减速器)?Mapper/Reducers是否遇到内存问题?在这种情况下,你需要更大的集群或调整Map Reduce的内存设置
  • s3-dist-cp是否在运行映射器/减速器之前花费了太多时间来列出S3对象?增加s3-dist-cp客户端堆空间使其能够处理源S3存储桶上许多S3对象的列表。export HADOOP_OPTS="-Xmx5000m -verbose:gc -XX:+UseMembar -XX:+PrintGCDetails -Xloggc:/tmp/gc.log"; s3-dist-cp --src s3://bucket/object/ --dest s3://dest-bucket/object/

要提高对S3的性能,可以使用“fs.s3.*”参数来更改EMRFS的行为。 一些可能需要调整的参数包括: fs.s3 要提高S3的性能,可以使用“fs.s3.*“参数来改变EMRFS行为。有些调优的参数可以考虑:fs.s3.maxConnections fs.s3.maxRetries。请注意,一些EMRFS参数可能不存在或没有公开记录。例如如何修改EMRFS的Listing行为等。

因此,您可以尝试在您的s3-dist-cp命令中使用s3a://前缀,这将调用s3a文件系统(这是开源Hadoop的一部分)而不是EMRFS,例如s3-dist-cp --src s3a://mybucket/data / --dest hdfs:///my_data --outputCodec=gz --targetSize=128 --groupBy='.(celery-task-meta).'

S3A文件系统参数在本文中有很好的文档和解释: https://hadoop.apache.org/docs/stable/hadoop-aws/tools/hadoop-aws/performance.html这允许额外调整文件系统相关参数,以加快您的作业。

此外,如果需要,可以考虑HDFS写性能调优,但是我们很少看到HDFS的性能问题。

profile picture
EXPERTE
beantwortet vor 5 Monaten

Du bist nicht angemeldet. Anmelden um eine Antwort zu veröffentlichen.

Eine gute Antwort beantwortet die Frage klar, gibt konstruktives Feedback und fördert die berufliche Weiterentwicklung des Fragenstellers.

Richtlinien für die Beantwortung von Fragen