Мне нужно запустить пользовательское задание C ++ как Map Reduce на Amazon, и я планировал использовать потоковую передачу Hadoop для этого. Исполняемый файл C ++ mapper опирается на десятки пользовательских библиотек, некоторые из которых занимают много времени, чтобы построить.
Я ожидал, что EMR будет поддерживать пользовательские AMI (уже есть один встроенный). Однако после тщательного изучения документации кажется, что можно запустить EMR только для предопределенных изображений: http://docs.aws.amazon.com/ElasticMapReduce/latest/DeveloperGuide/emr-cli-commands.html.
Я что-то пропустил? Если, действительно, поддерживаются только предопределенные AMI, каков наилучший вариант для запуска этого? Исполняемый файл, очевидно, находится на s3, но могу ли я на самом деле связать его так, чтобы он вообще не зависел от общих библиотек?
Благодарю.
Вы правы, поскольку из-за большого количества программных средств и конфигураций, необходимых для узла кластера Hadoop, только EMI, предоставленный Amazon, разрешен в EMR. http://docs.aws.amazon.com/ElasticMapReduce/latest/DeveloperGuide/emr-plan-ami.html
Вы можете использовать стандартные методы начальной загрузки, чтобы установить любое дополнительное программное обеспечение, необходимое для работы в кластере.
Увидеть http://docs.aws.amazon.com/ElasticMapReduce/latest/DeveloperGuide/emr-plan-bootstrap.html узнать больше о действиях начальной загрузки.
Вернуться к вашему варианту использования:
Почему в вашем сценарии использования требуется так много времени для начальной загрузки? Потому что есть много пакетов? Потому что вы компилируете их из исходного кода?
В последнем случае, возможно, стоит собрать ваши пакеты .deb и установить их из собственного репозитория, чтобы ускорить процесс начальной загрузки.
Если это потому, что у вас много пакетов для установки, я боюсь, что сегодня нет очевидного решения. Я могу думать о снимках и томах EBS, создаваемых и подключаемых во время начальной загрузки — но выполнимость этого действительно зависит от вашего варианта использования.
Пользовательские AMI действительно очень интересный вариант использования. Одним из вариантов для вас будет использовать Qubole, который предлагает встроенную поддержку для пользовательских AMI, где в вашем случае устанавливаются все необходимые библиотеки в сочетании со всеми интересными функциями Qubole, такими как поддержка автоматического масштабирования, точечные экземпляры и многое другое!
Отказ от ответственности: я работаю на Qubole.
Я тоже расследую то же самое. Исходя из первого взгляда на документацию, лучшим вариантом для достижения этой цели является использование пользовательских параметров начальной загрузки.
http://docs.aws.amazon.com/ElasticMapReduce/latest/DeveloperGuide/emr-plan-bootstrap.html
Однако для нас это займет 15-20 минут, чтобы запустить пользовательский скрипт. Я надеюсь, что есть способ настроить AMI и добавить необходимое программное обеспечение в AMI вместо того, чтобы устанавливать его на каждом узле, когда они появляются.