这是我的步骤:
为什么我在第4步中遇到了这么大的延迟?在此期间,群集显然正在等待某些内容,CPU使用率为0%
由于
答案 0 :(得分:2)
尽管它的优点是S3不是一个文件系统,但它使它成为处理复杂二进制格式的次优选择,这些格式通常是在考虑实际文件系统的情况下设计的。在许多情况下,辅助任务(如读取元数据)比实际数据提取更昂贵。
答案 1 :(得分:2)
这可能是3& 4之间的提交过程; Hadoop MR和spark提交者假设重命名是一个O(1)原子操作,并依赖它来进行原子提交工作。在S3上,当涉及目录中的多个文件时,重命名是O(数据)和非原子。 0-CPU负载是赠品:客户端正在等待S3的响应,它在内部以6-10 MB / S进行COPY
在HADOOP-13345中正在进行的工作是在S3中进行0重命名提交。现在,您可以从Databricks中寻找有趣但有趣的方式Direct Committer。
还有一件事:确保使用“算法2”进行提交,因为算法1在最终作业主提交中进行了更多的重命名。我在Hadoop 2.7上对ORC / Parquet perf的完整推荐设置是(以及使用s3a:urls):
spark.sql.parquet.filterPushdown true
spark.sql.parquet.mergeSchema false
spark.hadoop.parquet.enable.summary-metadata false
spark.sql.orc.filterPushdown true
spark.sql.orc.splits.include.file.footer true
spark.sql.orc.cache.stripe.details.size 10000
spark.sql.hive.metastorePartitionPruning true
spark.speculation false
spark.hadoop.mapreduce.fileoutputcommitter.algorithm.version 2
spark.hadoop.mapreduce.fileoutputcommitter.cleanup.skipped true