Хобрук: Ваш путь к мастерству в программировании

Оптимальный размер файлов S3 для задания Hadoop в EMR?

Я пытаюсь определить идеальный размер файла, хранящегося в S3, который будет использоваться в заданиях Hadoop в EMR.

В настоящее время у меня есть большие текстовые файлы размером около 5-10 ГБ. Меня беспокоит задержка при копировании этих больших файлов в HDFS для запуска заданий MapReduce. У меня есть возможность уменьшить размер этих файлов.

Я знаю, что файлы S3 копируются параллельно в HDFS при использовании S3 в качестве входного каталога в заданиях MapReduce. Но будет ли один большой файл копироваться в HDFS с использованием одного потока или этот файл будет копироваться как несколько частей параллельно? Кроме того, влияет ли сжатие Gzip на копирование одного файла из нескольких частей?


Ответы:


1

Необходимо учитывать два фактора:

  • Сжатые файлы нельзя разделить между задачами. Например, если у вас есть один большой сжатый входной файл, только один Mapper сможет его прочитать.
  • Использование большего количества файлов меньшего размера упрощает параллельную обработку, но при запуске заданий Map/Reduce для каждого файла возникает больше накладных расходов. Таким образом, чем меньше файлов, тем быстрее.

Таким образом, существует компромисс между размером и количеством файлов. Рекомендуемый размер указан в нескольких местах:

Часто задаваемые вопросы об Amazon EMR рекомендуют:

Если вы используете GZIP, оставьте размер файла 1–2 ГБ, поскольку файлы GZIP нельзя разделить.

В рекомендациях по работе с Amazon EMR содержатся следующие рекомендации:

Это означает, что один преобразователь (один поток) отвечает за выборку данных из Amazon S3. Поскольку один поток ограничен тем, сколько данных он может извлечь из Amazon S3 в любой момент времени (пропускная способность), процесс чтения всего файла из Amazon S3 в картограф становится узким местом в вашем рабочем процессе обработки данных. С другой стороны, если ваши файлы данных могут быть разделены, ваш файл может обрабатывать более одного преобразователя. Подходящий размер таких файлов данных составляет от 2 ГБ до 4 ГБ.

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

О, и продолжайте использовать сжатие. Экономия места на диске и времени передачи данных делает его более выгодным, чем включение разделения.

04.11.2016
  • Эта белая бумага идеальна. Мой вопрос был конкретно о копировании с S3 для заданий MapReduce. Можете ли вы добавить этот фрагмент текста из официального документа, и я приму ответ? That means that a single mapper (a single thread) is responsible for fetching the data from Amazon S3. Since a single thread is limited to how much data it can pull from Amazon S3 at any given time (throughput), the process of reading the entire file from Amazon S3 into the mapper becomes the bottleneck in your data processing workflow. 04.11.2016
  • Новые материалы

    Я собираюсь научить вас Python шаг за шагом
    Привет, уважаемый энтузиаст Python! 👋 Готовы погрузиться в мир Python? Сегодня я приготовил для вас кое-что интересное, что сделает ваше путешествие более приятным, чем шарик мороженого в..

    Альтернатива шаблону исходящих сообщений для архитектуры микросервисов
    Познакомьтесь с двухэтапным сообщением В этой статье предлагается альтернативный шаблон для папки Исходящие : двухэтапное сообщение. Он основан не на очереди сообщений, а на..

    React on Rails
    Основное приложение Reverb - это всеми любимый монолит Rails. Он отлично обслуживает наш API и уровень просмотра трафика. По мере роста мы добавляли больше интерактивных элементов..

    Что такое гибкие методологии разработки программного обеспечения
    Что представляют собой гибкие методологии разработки программного обеспечения в 2023 году Agile-методологии разработки программного обеспечения заключаются в следующем: И. Введение A...

    Ториго  — революция в игре Го
    Наш следующий вызов против ИИ и для ИИ. Сможет ли он победить людей в обновленной игре Го? Обратите внимание, что в следующей статье AI означает искусственный интеллект, а Goban  —..

    Простое развертывание моделей с помощью Mlflow — Упаковка классификатора обзоров продуктов NLP от HuggingFace
    Как сохранить свои модели машинного обучения в формате с открытым исходным кодом с помощью MLFlow, чтобы позже получить возможность легкого развертывания. Сегодня модели упаковки имеют несколько..

    Математика и интуиция - Часть 1
    У каждой математической формулы есть доказательство. Часто эти доказательства слишком сложно понять, поскольку многие из них основаны на индукции, некоторые - на очень сложных наблюдениях, а..