haoop流运行python程序,提示Cannot run program

freewind 2014-10-22 12:46:02

运行环境:hadoop1.2.1 单机模式。
命令如下:
bin/hadoop jar contrib/streaming/hadoop-streaming-1.2.1.jar -input input  -output output  -mapper /bin/cat -reducer Reduce.py -file Reduce.py 


Reduce.py就放置在当前目录下面。

查看日志文件:
cat logs/hadoop-xxx-jobtracker-tjnode03.local.log:
报错如下:
Caused by: java.io.IOException: Cannot run program "/tmp/hadoop-xxx/mapred/local/taskTracker/xxx/jobcache/job_201410212035_0015/attempt_201410212035_0015_r_000000_0/work/./Reduce.py": error=2, No such file or directory
at java.lang.ProcessBuilder.start(ProcessBuilder.java:1029)
at org.apache.hadoop.streaming.PipeMapRed.configure(PipeMapRed.java:214)
... 15 more



请问这是什么问题呢?
...全文
1775 55 打赏 收藏 转发到动态 举报
写回复
用AI写文章
55 条回复
切换为时间正序
请发表友善的回复…
发表回复
weixin_42001089 2018-08-22
  • 打赏
  • 举报
回复
楼主试一下在Reduce.py开头加上#!/usr/bin/python
louiss007 2015-07-07
  • 打赏
  • 举报
回复
可能是你reduce.py的文件格式不对。是dos格式的吧~
skyWalker_ONLY 2014-10-24
  • 打赏
  • 举报
回复
可能是楼主的python文件有问题,之前曾遇到过无法执行的问题,后来修改了python文件就解决了,楼主可否贴出python文件的源代码
freewind 2014-10-24
  • 打赏
  • 举报
回复
引用 50 楼 wulinshishen 的回复:
[quote=引用 48 楼 xtj332 的回复:] 刚自己写了一个java程序生成jar包之后。 可以顺利运行,由此看来配置文件应该没问题吧。
bin/hadoop jar contrib/streaming/hadoop-streaming-1.2.1.jar -input input  -output output  -mapper cat -reducer wc 运行没问题是吗?[/quote] 谢谢你的持续关注。真的非常感谢。 bin/hadoop jar contrib/streaming/hadoop-streaming-1.2.1.jar -input input -output output -mapper cat -reducer wc 这个没问题的。 自己用java写map reduce打成jar包之后,跑也是没问题的,。
freewind 2014-10-24
  • 打赏
  • 举报
回复
引用 52 楼 sky_walker85 的回复:
可能是楼主的python文件有问题,之前曾遇到过无法执行的问题,后来修改了python文件就解决了,楼主可否贴出python文件的源代码
应该不是这个问题吧,因为单独运行这个python文件是没有问题的。

#!/usr/bin/Python

import sys;

def main(argv):
        line = sys.stdin.readline();
        try:
                while line:
                        line = line[:-1];
                        fields = line.split("\t");
                        print fields[0];
                        line = sys.stdin.readline();
        except "end of file":
                return None
if __name__=="__main__":
        main(sys.argv)

  • 打赏
  • 举报
回复
引用 48 楼 xtj332 的回复:
刚自己写了一个java程序生成jar包之后。 可以顺利运行,由此看来配置文件应该没问题吧。
bin/hadoop jar contrib/streaming/hadoop-streaming-1.2.1.jar -input input  -output output  -mapper cat -reducer wc 运行没问题是吗?
skyWalker_ONLY 2014-10-22
  • 打赏
  • 举报
回复
建议你在执行作业的时候,在tmp下查看相关文件是否存在,直接使用linux的ls -al命令
freewind 2014-10-22
  • 打赏
  • 举报
回复
刚自己写了一个java程序生成jar包之后。 可以顺利运行,由此看来配置文件应该没问题吧。
freewind 2014-10-22
  • 打赏
  • 举报
回复
引用 46 楼 sky_walker85 的回复:
[quote=引用 45 楼 xtj332 的回复:] [quote=引用 41 楼 sky_walker85 的回复:] 你确认一下报错的那个目录存在吗,一级一级的查看那条信息中的每个目录,确认是否都存在
哥们 你执行成功时候运行命令是什么?、并且 有那些目录吗??、、[/quote] 就是使用你的命令,执行完毕确实就没有那个目录,但是在执行过程是有的,不是hadoop的ls -al命令而是linux自带的[/quote] 哦 用linux查看 只能查到jobcache这个目录 没有子目录了。你的呢?、
skyWalker_ONLY 2014-10-22
  • 打赏
  • 举报
回复
引用 45 楼 xtj332 的回复:
[quote=引用 41 楼 sky_walker85 的回复:] 你确认一下报错的那个目录存在吗,一级一级的查看那条信息中的每个目录,确认是否都存在
哥们 你执行成功时候运行命令是什么?、并且 有那些目录吗??、、[/quote] 就是使用你的命令,执行完毕确实就没有那个目录,但是在执行过程是有的,不是hadoop的ls -al命令而是linux自带的
freewind 2014-10-22
  • 打赏
  • 举报
回复
引用 41 楼 sky_walker85 的回复:
你确认一下报错的那个目录存在吗,一级一级的查看那条信息中的每个目录,确认是否都存在
哥们 你执行成功时候运行命令是什么?、并且 有那些目录吗??、、
freewind 2014-10-22
  • 打赏
  • 举报
回复
Hadoop基本操作命令没有 ls -al 这个命令。有一个 bin/hadoop fs -lsr列出hdfs中指定目录下的所有文件(包括子目录下的文件)。我找了,没有这个目录。并且看目录结构*/jobcache*/是不是可能运行中产生的临时文件,过后删除了呢?、
skyWalker_ONLY 2014-10-22
  • 打赏
  • 举报
回复
引用 42 楼 xtj332 的回复:
[quote=引用 41 楼 sky_walker85 的回复:] 你确认一下报错的那个目录存在吗,一级一级的查看那条信息中的每个目录,确认是否都存在
是这个目录: Caused by: java.io.IOException: Cannot run program "/tmp/hadoop-xuetianjun/mapred/local/taskTracker/xxx/jobcache/job_201410212035_0022/attempt_201410212035_0022_r_000000_2/work/./Reduce.py" 一级一级进入, [xxx@tjnode03 hadoop-1.2.1]$ bin/hadoop fs -ls /tmp/hadoop-xxx/mapred Found 2 items drwxr-xr-x - xuetianjun supergroup 0 2014-10-22 09:19 /tmp/hadoop-xxx/mapred/staging drwx------ - xuetianjun supergroup 0 2014-10-22 15:42 /tmp/hadoop-xxx/mapred/system ------------------------------------------------------------------------------------------------------------------------------------------------------ mapred下面没有local文件夹。 PS:但是很奇怪, 我在命令行输入下面的东西的时候 bin/hadoop fs -ls /tmp/hadoop-xuetianjun/mapred/l 然后Tab,竟然可以自动补全为local,就是 bin/hadoop fs -ls /tmp/hadoop-xuetianjun/mapred/local ,但是此时回车:: Cannot access /tmp/hadoop-xuetianjun/mapred/local: No such file or directory. 又提示说没有这个文件或文件夹。 [/quote] 使用ls -al试试
freewind 2014-10-22
  • 打赏
  • 举报
回复
引用 41 楼 sky_walker85 的回复:
你确认一下报错的那个目录存在吗,一级一级的查看那条信息中的每个目录,确认是否都存在
是这个目录: Caused by: java.io.IOException: Cannot run program "/tmp/hadoop-xuetianjun/mapred/local/taskTracker/xxx/jobcache/job_201410212035_0022/attempt_201410212035_0022_r_000000_2/work/./Reduce.py" 一级一级进入, [xxx@tjnode03 hadoop-1.2.1]$ bin/hadoop fs -ls /tmp/hadoop-xxx/mapred Found 2 items drwxr-xr-x - xuetianjun supergroup 0 2014-10-22 09:19 /tmp/hadoop-xxx/mapred/staging drwx------ - xuetianjun supergroup 0 2014-10-22 15:42 /tmp/hadoop-xxx/mapred/system ------------------------------------------------------------------------------------------------------------------------------------------------------ mapred下面没有local文件夹。 PS:但是很奇怪, 我在命令行输入下面的东西的时候 bin/hadoop fs -ls /tmp/hadoop-xuetianjun/mapred/l 然后Tab,竟然可以自动补全为local,就是 bin/hadoop fs -ls /tmp/hadoop-xuetianjun/mapred/local ,但是此时回车:: Cannot access /tmp/hadoop-xuetianjun/mapred/local: No such file or directory. 又提示说没有这个文件或文件夹。
skyWalker_ONLY 2014-10-22
  • 打赏
  • 举报
回复
你确认一下报错的那个目录存在吗,一级一级的查看那条信息中的每个目录,确认是否都存在
freewind 2014-10-22
  • 打赏
  • 举报
回复
[xxx@tjnode03 hadoop-1.2.1]$ jps 11613 SecondaryNameNode 11774 JobTracker 12249 Jps 12099 TaskTracker 11280 DataNode 10967 NameNode
freewind 2014-10-22
  • 打赏
  • 举报
回复
引用 36 楼 sky_walker85 的回复:
[quote=引用 35 楼 xtj332 的回复:] [quote=引用 30 楼 sky_walker85 的回复:] [quote=引用 27 楼 xtj332 的回复:] [quote=引用 25 楼 sky_walker85 的回复:] 我刚试过了,跟file指定的位置没关系,好像与楼主的配置有关系,建议楼主将mapred-site.xml的配置贴出来
你执行python成功了?? 我的mapred-site.xml基本上什么都没有。

<?xml version="1.0"?>
<?xml-stylesheet type="text/xsl" href="configuration.xsl"?>

<!-- Put site-specific property overrides in this file. -->

<configuration>
        <property>
                <name>mapred.job.tracker</name>
                <value>127.0.0.1:9001</value>
        </property>
</configuration>
core-site.xml的配置 <configuration> <property> <name>fs.default.name</name> <value>hdfs://127.0.0.1:9000</value> </property> </configuration> hdfs-site.xml <?xml version="1.0"?> <?xml-stylesheet type="text/xsl" href="configuration.xsl"?> <!-- Put site-specific property overrides in this file. --> <configuration> <property> <name>dfs.replication</name> <value>1</value> </property> </configuration> 就这么多配置了。 [/quote] 我执行成功了,并且将python文件就放置在hadoop根目录中。你的/tmp目录下有什么东西,能找到/tmp/hadoop-xxx/mapred/local/taskTracker及其子目录吗[/quote] 你启动hadoop的命令是什么??、[/quote] 你jps一下,看看守护进程都启动了吗,使用start-all.sh启动所有进程,你不会什么也没启动吧[/quote] 5个进程都启动了。 不然程序肯定启动时候就报错,而不是在日志文件中报那么多错误。
skyWalker_ONLY 2014-10-22
  • 打赏
  • 举报
回复
引用 37 楼 wulinshishen 的回复:
jps应该没有相关进程吧,客户端只是用来提交Job
现在他运行的伪分布模式
  • 打赏
  • 举报
回复
jps应该没有相关进程吧,客户端只是用来提交Job
skyWalker_ONLY 2014-10-22
  • 打赏
  • 举报
回复
引用 35 楼 xtj332 的回复:
[quote=引用 30 楼 sky_walker85 的回复:] [quote=引用 27 楼 xtj332 的回复:] [quote=引用 25 楼 sky_walker85 的回复:] 我刚试过了,跟file指定的位置没关系,好像与楼主的配置有关系,建议楼主将mapred-site.xml的配置贴出来
你执行python成功了?? 我的mapred-site.xml基本上什么都没有。

<?xml version="1.0"?>
<?xml-stylesheet type="text/xsl" href="configuration.xsl"?>

<!-- Put site-specific property overrides in this file. -->

<configuration>
        <property>
                <name>mapred.job.tracker</name>
                <value>127.0.0.1:9001</value>
        </property>
</configuration>
core-site.xml的配置 <configuration> <property> <name>fs.default.name</name> <value>hdfs://127.0.0.1:9000</value> </property> </configuration> hdfs-site.xml <?xml version="1.0"?> <?xml-stylesheet type="text/xsl" href="configuration.xsl"?> <!-- Put site-specific property overrides in this file. --> <configuration> <property> <name>dfs.replication</name> <value>1</value> </property> </configuration> 就这么多配置了。 [/quote] 我执行成功了,并且将python文件就放置在hadoop根目录中。你的/tmp目录下有什么东西,能找到/tmp/hadoop-xxx/mapred/local/taskTracker及其子目录吗[/quote] 你启动hadoop的命令是什么??、[/quote] 你jps一下,看看守护进程都启动了吗,使用start-all.sh启动所有进程,你不会什么也没启动吧
加载更多回复(35)

20,808

社区成员

发帖
与我相关
我的任务
社区描述
Hadoop生态大数据交流社区,致力于有Hadoop,hive,Spark,Hbase,Flink,ClickHouse,Kafka,数据仓库,大数据集群运维技术分享和交流等。致力于收集优质的博客
社区管理员
  • 分布式计算/Hadoop社区
  • 涤生大数据
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧