我尝试构建我用PHP编写的第一个EMR流应用程序。
在我的本地系统上运行良好: ./producer/target/release/producer 1000 | php mapper.php |排序| php reducer.php
我还尝试使mapper / reducer可执行并添加一个Shebang。
我使用“选择器”选择映射器/缩减器的s3路径,但EMR在其日志中抱怨:
引起:java.io.IOException:无法运行程序“/mnt1/yarn/usercache/hadoop/..././mapper.php”:error = 2,没有这样的文件或目录
似乎EMR没有将映射器文件复制到hadoop集群。
知道找不到映射器的原因吗?
答案 0 :(得分:0)
错误令人困惑;它不是mapper.php,而是php可执行文件本身。 PHP没有安装在最新的EMR AMI核心&任务节点。你需要安装它。
任何简单的解决方案都是添加引导项。使用以下命令创建bootstrap.sh:
#!/usr/bin/php
yum -y install php
然后将其上传到s3。然后,当您选择引导程序文件时,从s3中选择bootstrap.sh,它将在运行您的步骤之前安装PHP。