Сколько времени занимает обработка файла, если у меня только один рабочий узел?

Допустим, у меня есть данные с 25 блоками, а коэффициент репликации равен 1. Картографу требуется около 5 минут для чтения и обработки одного блока данных. Тогда как я могу рассчитать время для одного рабочего узла? А как насчет 15 узлов? Изменится ли время, если мы изменим коэффициент репликации на 3? Мне очень нужна помощь.


person zeus0510    schedule 01.05.2016    source источник


Ответы (1)


Прежде всего, я бы посоветовал прочитать некоторые научные статьи по этому вопросу (Google Scholar — хорошая отправная точка).

Теперь немного обсуждения. Из моих последних экспериментов я пришел к выводу, что время обработки очень сильно связано с объемом данных, которые вы хотите обработать (имеет смысл). В нашем кластере Mapper в среднем занимает около 7-8 секунд, чтобы прочитать блок размером 128 Мбайт. Теперь есть несколько факторов, которые необходимо учитывать, чтобы предсказать общее время выполнения:

  1. Сколько данных создает Mapper, что, в свою очередь, будет определять время, необходимое Hadoop для выполнения Shuffling.
  2. Что делает Редуктор? Выполняет ли он некоторую итеративную обработку? (может быть медленно!)
  3. Какова конфигурация ресурсов? (сколько картографов и редукторов разрешено запускать на одном компьютере)
  4. Наконец, есть ли другие задания, работающие одновременно? (это может значительно замедлить работу, поскольку ваши слоты Reducer могут быть заняты ожиданием данных вместо того, чтобы делать полезные вещи).

Так что уже для одной машины вы видите сложность задачи прогнозирования времени выполнения задания. По сути, во время моего исследования я смог сделать вывод, что в среднем одна машина способна обрабатывать от 20 до 50 МБайт/сек (скорость рассчитывается по следующей формуле: общий объем ввода/общее время выполнения задания). Скорость обработки включает в себя время подготовки (например, когда ваше приложение запускается и загружает необходимые файлы в кластер). Скорость обработки различна для разных вариантов использования и сильно зависит от размера входных данных и, что более важно, от количества данных, создаваемых картографами (опять же, эти значения относятся к нашей инфраструктуре, и на другой конфигурации машины вы увидите совершенно разное время выполнения).

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

Просто чтобы дать вам представление, я поделюсь частью результатов. Скорость при выполнении определения варианта использования на 1 узле составляла ~46 МБ/с, для 2 узлов ~73 МБ/с и для 3 узлов ~85 МБ/с (в моем случае коэффициент репликации был равен количеству узлов). .

Проблема сложная требует времени, терпения и некоторых аналитических навыков для ее решения. Веселиться!

person Serhiy    schedule 02.05.2016