无法在Hadoop中使用python运行map reduce?

无法在Hadoop中使用python运行map reduce?,python,hadoop,mapreduce,hadoop2,Python,Hadoop,Mapreduce,Hadoop2,我已经用python为单词计数程序编写了映射器和减缩器,运行良好。 以下是一个示例: echo "hello hello world here hello here world here hello" | wordmapper.py | sort -k1,1 | wordreducer.py hello 4 here 3 world 2 现在,当我尝试为一个大文件提交hadoop作业时,会出现错误 hadoop jar share/hadoop/tools/sources/ha

我已经用python为单词计数程序编写了映射器和减缩器,运行良好。 以下是一个示例:

echo "hello hello world here hello here world here hello" | wordmapper.py | sort -k1,1 | wordreducer.py 
hello   4
here    3
world   2
现在,当我尝试为一个大文件提交hadoop作业时,会出现错误

hadoop jar share/hadoop/tools/sources/hadoop-*streaming*.jar -file wordmapper.py -mapper wordmapper.py  -file wordreducer.py -reducer wordreducer.py -input /data/1jrl.pdb -output /output/py_jrl
Exception in thread "main" java.lang.ClassNotFoundException: share.hadoop.tools.sources.hadoop-streaming-2.2.0-test-sources.jar
    at java.net.URLClassLoader$1.run(URLClassLoader.java:202)
    at java.security.AccessController.doPrivileged(Native Method)
    at java.net.URLClassLoader.findClass(URLClassLoader.java:190)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:306)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:247)
    at java.lang.Class.forName0(Native Method)
    at java.lang.Class.forName(Class.java:249)
    at org.apache.hadoop.util.RunJar.main(RunJar.java:205)
我删除了以下命令行(从上面删除了通配符)

为什么会出现这些错误以及如何修复这些错误?
我使用hadoop2。谢谢

至少有一个问题是您使用的是
-sources.jar
,它只是
.java
文件,无法执行

试着用这个代替

share/hadoop/tools/lib/hadoop-streaming-2.2.0.jar

如果不存在,请查找文件名中没有
-sources
hadoop streaming*.jar

这非常有效。你知道我在哪里可以找到share/hadoop/mapreduce/hadoop-mapreduce-examples-2.2.0.jar中类的java文件(源代码)吗?请转到并下载
hadoop-2.2.0-src.tar.gz
抱歉,这可能是个愚蠢的问题。我需要下载整个hadoop src tar才能获得示例的源代码吗?您可能会幸运地找到mapreduce示例的2.2源代码,但我总是下载整个源代码,以便查看所有内容。
share/hadoop/tools/lib/hadoop-streaming-2.2.0.jar