Я попытался создать свое первое потоковое приложение EMR, написанное на PHP.
в моей локальной системе это работает хорошо:
./producer/target/release/producer 1000 | php mapper.php | сортировать | php reducer.php
Я также попытался сделать исполняемый файл / редуктор и добавить Шебанг.
я использовал «picker», чтобы выбрать путь s3 к картографическому устройству / редуктору, но EMR жалуется в его журналах:
Причина: java.io.IOException: Не удается запустить программу «/mnt1/yarn/usercache/hadoop/…/./mapper.php»: error = 2, такого файла или каталога нет.
Кажется, что EMR не скопировал файл сопоставления в кластер hadoop.
Есть идеи, почему картограф не найден?
Ошибка сбивает с толку; отсутствует не mapper.php, а сам исполняемый файл php. PHP не установлен на последнем ядре EMR AMI & узлы задачи. Вам нужно будет установить его.
Любое простое решение — добавить элемент начальной загрузки. Создайте bootstrap.sh со следующим:
#!/usr/bin/php
yum -y install php
Затем загрузите это на s3. Затем, когда вы выберете свой файл начальной загрузки, выберите bootstrap.sh из s3, и он установит PHP перед выполнением ваших шагов.
Других решений пока нет …