一般来说hadoop命令执行jar包需要在hadoop的bin路径下执行命令如下:
./hadoop jar xx.jar mainclassname inputpath outputpath
对于XX.jar包中本身编译需要外部jar包的情况,则需要在封装成xx.jar包时候把所有外部jar包都包括进来,具体以本人执行的包括json包的程序为例。首先在xx.java路径下创建/lib路径,将所有外部jar包包含进去,再在manifest.mf中写明支持库的路径。
1、书写manifest.mf文件
manifest-Version:1.0
Class-Path: ./lib/json-lib-2.3-jdk15.jar ./lib/commons-lang-2.6.jar xx
Main-Class:LightDarkSituation
2、编译java成.class文件
javac -cp ./lib/json-lib-2.3-jdk15.jar:./lib/hadoop-0.20.2-core.jar:./lib/opencsv-2.3.jar *.java
3、封装成包含外部库的jar包
jar -cvf LightDarkSituation.jar *.class ./lib
4、hadoop命令执行jar包程序
./hadoop jar ./LightDarkSituation.jar LightDarkSituation /user/dayin/input /user/dayin/output
即可,也不需要最开始进行HADOOP_CLASSPATH的设定了,非常简单~借鉴自http://www.blogjava.net/soddabao/archive/2007/01/08/92455.html