hadoop/usr/bin/env:python:没有这样的文件或目录

2024-05-13 20:41:59 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在尝试使用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脚本的顶部,但它也不起作用

Hadoop Streaming Job failed error in python


Tags: runpyorghadoopusrapachejavaat
1条回答
网友
1楼 · 发布于 2024-05-13 20:41:59
$ 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脚本的开头,总是对我起作用。

相关问题 更多 >