Apache Spark到S3上传性能问题

时间:2014-09-25 19:12:01

标签: amazon-s3 hdfs apache-spark emr

当Apache Spark将其结果上传到S3时,我发现了一个主要的性能问题。根据我的理解,它采取了这些步骤......

  1. 最终阶段的输出将写入HDFS中的_temp/表格,并将其移至特定"_temporary"文件夹内的S3文件夹中。

  2. 完成整个过程后--Apache spark完成saveAsTextFile阶段,然后将"_temporary"S3文件夹中的文件移动到主文件夹中。这实际上需要很长时间[每个文件大约1分钟(平均大小:600 MB BZ2)]。此部分未记录在通常的stderr日志中。

  3. 我在AWS EMR上使用Apache Spark 1.0.1Hadoop 2.2

    有没有人遇到过这个问题?

    更新1

    如何增加执行此移动过程的线程数?

    任何建议都受到高度赞赏......

    由于

2 个答案:

答案 0 :(得分:4)

这是通过SPARK-3595(https://issues.apache.org/jira/browse/SPARK-3595)修复的。其中包含在构建1.1.0.e及更高版本中(参见https://github.com/awslabs/emr-bootstrap-actions/tree/master/spark)。

答案 1 :(得分:0)

我使用以下功能。它将文件上传到s3。它在4-6分钟内上传大约60 gb,gz文件。

        ctx.hadoopConfiguration().set("mapred.textoutputformat.separator",
                ",");
        counts.saveAsHadoopFile(s3outputpath, Text.class, Text.class,
                TextOutputFormat.class);

确保创建更多输出文件。更多的小文件将使上传速度更快。

API详情 saveAsHadoopFile [F&lt ;: org.apache.hadoop.mapred.OutputFormat [_,]](路径:字符串, keyClass :类[], valueClass < / strong>:类[], outputFormatClass :类[F],编解码器:类[&lt ;: org.apache.hadoop.io.compress.CompressionCodec]):单元 将RDD输出到任何支持Hadoop的文件系统,并使用提供的编解码器进行压缩。