此问题与Azure环境中的Hadoop有关。
我正在尝试使用Runtime.exec()在reduce函数中执行批处理脚本。我无法在Azure环境中运行Hadoop,而它在Linux上的Hadoop上运行良好。我测试了桌面(Windows 7)环境中的Runtime.exec()代码片段,它在那里运行正常。我确保在Runtime.exec()之后使用子进程的输出和错误流。
批处理脚本包含以下内容(单个命令):
C:\ HDFS \ mapred \本地\的TaskTracker \纳比尔\ jobcache \ job_201207121317_0024 \ attempt_201207121317_0024_r_000001_0 \工作\ tool.exe -f c:\ hdfs \ mapred \ local \ taskTracker \ nabeel \ jobcache \ job_201207121317_0024 \ work \ 11_task_201207121317_0024_r_000001.out -i c:\ hdfs \ mapred \ local \ taskTracker \ nabeel \ jobcache \ job_201207121317_0024 \ attempt_201207121317_0024_r_000001_0 \ work \ input.txt
我使用分布式缓存分发tool.exe和input.txt文件,并从工作目录创建符号链接。 tool.exe和input.txt指向jobcache目录中的实际文件。
2012-07-16 04:31:51,613 INFO org.apache.hadoop.mapred.TaskRunner:创建符号链接:/hdfs/mapred/local/taskTracker/distcache/-978619214658189372_-1497645545_209290723/10.73.50.78tool.exe< ; - \ hdfs \ mapred \ local \ taskTracker \ nabeel \ jobcache \ job_201207121317_0024 \ attempt_201207121317_0024_r_000001_0 \ work \ tool.exe 2012-07-16 04:31:51,644 INFO org.apache.hadoop.mapred.TaskRunner:创建符号链接:/hdfs/mapred/local/taskTracker/distcache/-4944695173898834237_1545037473_2085004342/10.73.50.78input.txt< lt; - \ hdfs \ mapred \本地\的TaskTracker \纳比尔\ jobcache \ job_201207121317_0024 \ attempt_201207121317_0024_r_000001_0 \工作\ input.txt中
reducer在运行时会出现以下错误。
命令执行错误:无法运行程序 “cmd / q / c c:\ hdfs \ mapred \ local \ taskTracker \ nabeel \ jobcache \ job_201207121317_0024 \ work \ 11_task_201207121317_0024_r_0000011513543720767963399.bat”: CreateProcess error = 2,系统找不到指定的文件
在另一种情况下,我尝试运行相同但不使用绝对路径..子流程的输出流如下所示:
c:\ hdfs \ mapred \ local \ taskTracker \ nabeel \ jobcache \ job_201207121317_0022 \ attempt_201207121317_0022_r_000000_0 \ work&gt; tool.exe -f /hdfs/mapred/local/taskTracker/nabeel/jobcache/job_201207121317_0022/work/1_task_201207121317_0022_r_000000.out -i input.txt
我不知道作业工作目录路径和分布式缓存如何在Azure环境中的Hadoop上工作。如果我在这里遗漏了某些东西(或者),我可以告诉我在Azure环境中使用Hadoop中的Runtime.exec()时需要注意的事项。
谢谢,
即可。, ._ 回复发件人|回复群组|通过网络帖子回复|开始一个新主题
答案 0 :(得分:0)
我不熟悉Hadoop。但错误信息似乎很明显。如果你能检查文件是否存在会更好。
C:\ HDFS \ mapred \本地\的TaskTracker \纳比尔\ jobcache \ job_201207121317_0024 \工作\ 11_task_201207121317_0024_r_0000011513543720767963399.bat
最诚挚的问候,
徐明,