Копирование большого файла (~ 6 ГБ) с S3 на каждый узел кластера Elastic MapReduce

Оказывается, копирование большого файла (~ 6 ГБ) с S3 на каждый узел в кластере Elastic MapReduce в действии начальной загрузки плохо масштабируется; размер канала невелик, и загрузка на узлы ограничивается по мере увеличения количества # узлов.

Я запускаю поток заданий с 22 шагами, и этот файл нужен, может быть, для 8 из них. Конечно, я могу копировать из S3 в HDFS и кэшировать файл перед каждым шагом, но это серьезно снижает скорость (и может повлиять на масштабируемость). В идеале поток заданий должен начинаться с файла на каждом узле.

Есть вопросы StackOverflow, по крайней мере косвенно касающиеся сохранения кэшированного файла в потоке заданий: -использовать файлы в распределенном кеше Hadoop, жизнь распределенного кеша в Hadoop .

Не думаю, что они мне помогают. Есть у кого свежие идеи?


person verve    schedule 21.05.2014    source источник
comment
Это зависит от того, что вы хотите сделать с файлом, во многих случаях (включая задания MR, запросы куста и т. д.) EMR может использовать файл непосредственно на S3, не загружая его на локальные узлы. Будет ли это полезно в вашем контексте?   -  person Julio Faerman    schedule 22.05.2014
comment
Файл должен быть на каждом узле; это не подлежит обсуждению. Это необходимо конкретному исполняемому файлу.   -  person verve    schedule 22.05.2014


Ответы (1)


Две идеи, пожалуйста, учитывайте специфику вашего случая и игнорируйте по желанию:

  • Поделитесь файлом через NFS с сервером типа экземпляра с достаточно хорошей сетью в той же группе размещения или зоне доступности.
  • Имейте тома EBS PIOPS и инстансы, оптимизированные для EBS, с предварительно загруженным файлом и просто присоединяйте их к своим узлам в процессе начальной загрузки.
person Julio Faerman    schedule 21.05.2014