Проблема с производительностью загрузки Apache Spark на S3

Я вижу серьезную проблему с производительностью, когда Apache Spark загружает свои результаты в S3. Насколько я понимаю, это идет по этим шагам...

  1. Вывод заключительного этапа записывается в таблицу _temp/ в HDFS и перемещается в папку "_temporary" внутри конкретной папки S3.

  2. Как только весь процесс завершен, Apache spark завершает этап saveAsTextFile, а затем файлы из папки "_temporary" в S3 перемещаются в основную папку. На самом деле это занимает много времени [примерно 1 минута на файл (средний размер: 600 МБ BZ2)]. Эта часть не регистрируется в обычном журнале stderr.

Я использую Apache Spark 1.0.1 с Hadoop 2.2 на AWS EMR.

Кто-нибудь сталкивался с этой проблемой?

Обновление 1

Как я могу увеличить количество потоков, выполняющих этот процесс перемещения?

Любое предложение высоко ценится...

Спасибо


person user3279189    schedule 25.09.2014    source источник


Ответы (2)


Это было исправлено в SPARK-3595 (https://issues.apache.org/jira/browse/SPARK-3595). Который был включен в сборки 1.1.0.e и более поздних версий (см. https://github.com/awslabs/emr-bootstrap-actions/tree/master/spark).

person ChristopherB    schedule 26.12.2014

Я использую следующие функции. он загружает файл на s3. он загружает около 60 ГБ файлов gz за 4-6 минут.

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

Убедитесь, что вы создаете больше выходных файлов. большее количество файлов меньшего размера ускорит загрузку.

Сведения об API saveAsHadoopFile[F ‹: org.apache.hadoop.mapred.OutputFormat[_, ]](path: String, keyClass: Class[], valueClass : Class[], outputFormatClass: Class[F], codec: Class[ ‹: org.apache.hadoop.io.compress.CompressionCodec]): Модуль Вывод RDD в любую файловую систему, поддерживаемую Hadoop, со сжатием с помощью предоставленного кодека.

person Sandesh Deshmane    schedule 28.09.2014
comment
не могли бы вы уточнить свой ответ? Это не работает... использование Text.class выдает ошибку... - person user3279189; 29.09.2014
comment
вы можете использовать функцию как saveAsHadoopFile[F ‹: org.apache.hadoop.mapred.OutputFormat[, _]](path: String, keyClass: Class[], valueClass: Class[] , outputFormatClass: Class[F], codec: Class[ ‹: org.apache.hadoop.io.compress.CompressionCodec]): Unit Вывод RDD в любую файловую систему, поддерживаемую Hadoop, со сжатием предоставленным кодеком. Поместите класс для вашего ключа и значения - person Sandesh Deshmane; 29.09.2014