我正在运行带有hadoop流的python脚本。 我安装了python 2.7和anaconda。
当我使用python脚本运行hadoop流时 #!/ usr / bin / env python 它工作正常。
但是当我使用anaconda时
#!/opt/anaconda/python2.7/bin/env python
它不起作用。 MR作业失败,但有以下异常。
Caused by: java.io.IOException: Cannot run program "/hdfs1/yarn/nm/usercache/appcache/application_1430001030776_13989/container_e48_14776_1301_000/./mymapper.py": error=2, No such file or directory
at java.lang.ProcessBuilder.start(ProcessBuilder.java:1047)
at org.apache.hadoop.streaming.PipeMapRed.configure(PipeMapRed.java:209)
... 23 more
Caused by: java.io.IOException: error=2, No such file or directory
at java.lang.UNIXProcess.forkAndExec(Native Method)
at java.lang.UNIXProcess.<init>(UNIXProcess.java:186)
at java.lang.ProcessImpl.start(ProcessImpl.java:130)
at java.lang.ProcessBuilder.start(ProcessBuilder.java:1028)
这是否意味着我不能使用带有anaconda的hadoop流媒体?
答案 0 :(得分:0)
这可能是因为您没有在每个dataNode上安装#!/opt/anaconda/python2.7/bin/env python
。
当您使用hadoop-streaming
时,只会将文件mymapper.py
发送给地图处理程序,而不是python
解释程序。
您可以通过在anaconda
群集中的每台计算机上安装/opt/anaconda/python2.7/bin/env
来解决此问题。
正如您所看到的,使用默认的python
解释器可以正常工作,因为它可以在群集中的每台计算机上使用。