Apache Spark ведет переговоры с S3 через клиентскую библиотеку от Amazon по EMR или от команды Apache Hadoop в другом месте. Если вы используете URL-адреса s3a: //, вы используете самый последний клиент ASF.
Мы проводили там большую работу по ускорению процесса, см. HADOOP-11694.
убийцы производительности оказались бы
Избыточное количество запросов HEAD, при работе из файлов существует (тоже много проверок в коде). Исправление: обрезать на них
Закрытие и повторное подключение соединений при поиске. Исправлено: (a) ленивый поиск (только делать поиск по read(), а не по вызову seek()), (b) искать вперед по чтению и отбрасыванию данных. Эффективное даже до нескольких сотен килобайт (YMMV и т.д.)
Для бинарных ORC/Паркетные файлов, добавление специального fadvise = случайный режим, который не пытается полностью GET исходного файла, а не читает в блоках. Если нам нужно искать назад или вперед вперёд, остальные блока отбрасываются и соединение HTTP 1.1 повторно используется: нет необходимости , чтобы прервать соединение и пересмотреть новый.
Некоторые детали в этом разговоре с прошлого месяца: Spark and Object Stores, хотя это не входит в новый материал (в Hadoop 2.8 (готовится к печати), HDP 2,5 (доставка), возможно, в CDH некоторое время) в глубина. Он порекомендует различные настройки производительности, которые действительны и сегодня.
Также убедитесь, что любое сжатие, которое вы используете, является разделяемым (LZO, snappy, ...) и что ваши файлы не настолько малы, что слишком много накладных расходов при перечислении каталога и их открытии.
Смешно, я всегда спрашиваю себя, почему они так медленно :) –
lol. Я имел в виду по сравнению с нераспределенной системой хранения, где скорость ввода-вывода жесткого диска является огромным узким местом. – Dnaiel