我正在尝试使用shell脚本中的以下命令运行hadoop流服务器
hadoop jar /usr/local/hadoop/contrib/streaming/hadoop-0.19.2-streaming.jar -input $1 -output Twitter/Net.pegasus -mapper 'mapper.py Reverse' -reducer NONE -file mapper.py
hadoop jar /usr/local/hadoop/contrib/streaming/hadoop-0.19.2-streaming.jar -input $1 -output Twitter/Net.exclude -mapper 'mapper.py Reverse' -reducer reducer.py -file mapper.py -file reducer.py -file ../twitter/exclude.txt
hadoop jar /usr/local/hadoop/contrib/streaming/hadoop-0.19.2-streaming.jar -input $1 -output Twitter/Net.complete -mapper 'mapper.py Reverse' -reducer reducer.py -file mapper.py -file reducer.py
我收到以下错误
/usr/bin/env: python2.5: No such file or directory
java.lang.RuntimeException: PipeMapRed.waitOutputThreads(): subprocess failed with code 127
at org.apache.hadoop.streaming.PipeMapRed.waitOutputThreads(PipeMapRed.java:362)
at org.apache.hadoop.streaming.PipeMapRed.mapRedFinished(PipeMapRed.java:576)
at org.apache.hadoop.streaming.PipeMapper.close(PipeMapper.java:135)
at org.apache.hadoop.mapred.MapRunner.run(MapRunner.java:57)
at org.apache.hadoop.streaming.PipeMapRunner.run(PipeMapRunner.java:36)
at org.apache.hadoop.mapred.MapTask.runOldMapper(MapTask.java:436)
at org.apache.hadoop.mapred.MapTask.run(MapTask.java:372)
at org.apache.hadoop.mapred.Child$4.run(Child.java:255)
at java.security.AccessController.doPrivileged(Native Method)
at javax.security.auth.Subject.doAs(Subject.java:415)
at org.apache.hadoop.security.UserGroupInformation.doAs(UserGroupInformation.java:1136)
at org.apache.hadoop.mapred.Child.main(Child.java:249)
但是已经安装了更高版本的python
$ which python
/usr/bin/python
$ python --version
Python 2.7.3
我在其他帖子中读到“apt-get install python2.5”它会起作用,但该包不可用,我也尝试将#!/ usr / bin / env python添加到我的python脚本的顶部它没有工作
答案 0 :(得分:0)
$ which python
/usr/bin/python
$ python --version
Python 2.7.3
表示您安装的Python版本高于默认值。您必须确保群集中的每个节点都具有相同的大小写。例如,我使用集群Redhat 6.4版本集群,默认Python是Python 2.6我认为是默认的,但我已经定制了主节点,它与datanode不同。 因此,您需要配置映射器以调用每个节点上存在的python。
把
#!/usr/bin/python
在python脚本开头的始终适合我。