Hadoop-streaming:映射器运行时PYTHONPATH无效

时间:2012-03-12 18:14:45

标签: python hadoop mapreduce hadoop-streaming

  • 我设置了PYTHONPATH并且除了运行map-reduce job之外它也可以正常工作
  • 说不清楚

    追踪(最近一次通话):   文件“/work/app/hadoop/tmp/mapred/local/taskTracker/hduser/jobcache/job_201203091218_0006/attempt_201203091218_0006_m_000020_0/work/./mapper.py”,第57行,     来自src.utilities导入实用程序 ImportError:没有名为src.utilities的模块 java.lang.RuntimeException:PipeMapRed.waitOutputThreads():子进程失败,代码为1     在org.apache.hadoop.streaming.PipeMapRed.waitOutputThreads(PipeMapRed.java:311)     在org.apache.hadoop.streaming.PipeMapRed.mapRedFinished(PipeMapRed.java:545)     在org.apache.hadoop.streaming.PipeMapper.map(PipeMapper.java:121)     在org.apache.hadoop.mapred.MapRunner.run(MapRunner.java:50)     在org.apache.hadoop.streaming.PipeMapRunner.run(PipeMapRunner.java:36)     在org.apache.hadoop.mapred.MapTask.runOldMapper(MapTask.java:436)     在org.apache.hadoop.mapred.MapTask.run(MapTask.java:372)     在org.apache.hadoop.mapred.Child $ 4.run(Child.java:261)     at java.security.AccessController.doPrivileged(Native Method)     在javax.security.auth.Subject.doAs(Subject.java:396)     在org.apache.hadoop.security.UserGroupInformation.doAs(UserGroupInformation.java:1059)     在org.apache.hadoop.mapred.Child.main(Child.java:255) java.lang.RuntimeException:PipeMapRed.waitOutputThreads():子进程失败,代码为1     在org.apache.hadoop.streaming.PipeMapRed.waitOutputThreads(PipeMapRed.java:311)     在org.apache.hadoop.streaming.PipeMapRed.mapRedFinished(PipeMapRed.java:545)     在org.apache.hadoop.streaming.PipeMapper.close(PipeMapper.java:132)     在org.apache.hadoop.mapred.MapRunner.run(MapRunner.java:57)     在org.apache.hadoop.streaming.PipeMapRunner.run(PipeMapRunner.java:36)     在org.apache.hadoop.mapred.MapTask.runOldMapper(MapTask.java:436)     在org.apache.hadoop.mapred.MapTask.run(MapTask.java:372)     在org.apache.hadoop.mapred.Child $ 4.run(Child.java:261)     at java.security.AccessController.doPrivileged(Native Method)     在javax.security.auth.Subject.doAs(Subject.java:396)     在org.apache.hadoop.security.UserGroupInformation.doAs(UserGroupInformation.java:1059)     在org.apache.hadoop.mapred.Child.main(Child.java:255)

问题: - 在hadoop-streaming期间,我们必须专门设置Python路径吗?在哪里?

2 个答案:

答案 0 :(得分:0)

我遇到了同样的问题,我认为问题是Hadoop虚拟环境无法识别系统的pythonpath。如果你将软件包安装到/Library/Python/2.7/site-packages,Hadoop会把它们拿起来,它会起作用。

答案 1 :(得分:0)

我们需要添加MapReduce服务环境安全阀,在mycase我们使用cloudera-manager GUI,我添加了PYTHONPATH它正在工作。