1.直接用hadoop自带的例子:

(1)建立input文件夹并提交文件,见 http://blog.sina.com.cn/s/blog_793f985601014442.html

(2)运行命令( 从网上copy):
hadoop$ bin/hadoop jar hadoop-examples-1.0.3.jar wordcountinput output
报错:
Exception in thread "main" java.io.IOException: Error openingjob jar: hadoop-1.0.3-examples.jar
at org.apache.hadoop.util.RunJar.main(RunJar.java:90)
Caused by: java.util.zip.ZipException: error in opening zipfile
at java.util.zip.ZipFile.open(Native Method)
atjava.util.zip.ZipFile.(ZipFile.java:114)
atjava.util.jar.JarFile.(JarFile.java:135)
atjava.util.jar.JarFile.(JarFile.java:72)
at org.apache.hadoop.util.RunJar.main(RunJar.java:88)
网上找了下资料,应该是找不到文件的原因。然后 自己重新输入了一遍命令,成功!同学,不靠谱啊~

常用分布式命令:
(1)
(2)
(3)bin/hadoop dfs -ls output,查看output文件夹下的文件。
(4)cat,只读模式查看(连接多个)文件。
(5)rmr,bin/hadoop dfs -rmr/user/liulichao/output,每次运行MR前需要将output删除
反复运行调试mapreduce程序时, 每次需要删除output目录,手工很费时,
可以使用FileSystem来自动删除,
FileSystem fs = FileSystem.get(conf);
fs.delete(new Path("wordcount_output"), true);

2.eclipse下编译,然后打jar包。常见问题: 命令行运行hadoop实例wordcount程序

{2.1可以先配下环境: 基于Eclipse的Hadoop应用开发环境配置},这样就不用每次手动打jar包了。这里注意插件的版本问题,如果没有找到,自己手动编译一个,见 http://wiki.apache.org/hadoop/EclipsePlugIn

2.2手动编译程序、打包、运行jar
无package层次时
编译命令
打包命令
---------------
有package层次时
编译命令
~$javac -classpath ~/hadoop-1.0.3/hadoop-core-1.0.3.jar~/used_files/WordCount.java -d ~/used_files/
报错: WordCount.java:53:error:cannot access Options

String[]otherArgs = new GenericOptionsParser(conf,args).getRemainingArgs();

^

class file for org.apache.commons.cli.Optionsnotfound

更改编译命令:

~$javac -classpathhadoop-1.0.3/hadoop-core-1.0.3.jar:hadoop-1.0.3/lib/commons-cli-1.2.jar-d ~/used_files WordCount.java

used_files文件夹下出现org文件夹,里面包含class文件。


打包命令
jar -cvf wordcount.jar -C used_files/ .
【打包注意】比如类MyJob的包为org.myorg;编译生成org文件夹后,要在org的父目录进行打包,这样才能通过org.myorg.MyJob找到类。打完包后,可以在其他路径将jar包解开,看是否符合。
jar -xvf xxx.jar -d /targetPath

运行MR作业:
hadoop-1.0.3/bin/hadoop jar ~/wordcount.jarorg.apache.hadoop.examples.WordCount input output_man