今天整了一天的hadoop的mapreduce,因为是今天才接触,花了一天才整好一个简单实例WordCount,下面是总结:
1、把java文件编译成class文件,命令:javac -classpath path/to/hadoop/hadoop-*-core.jar test.java
注意:有时候由于缺少路径会导致出错,此时需要自己加上路径,例如:javac -classpath /data1/sysdir/hadoop-2.2.0/hadoop-0.20.2-core.jar:/data/sysdir/hadoop-0.20.2/lib/commons-cli-1.2.jar -d WordCount WordCount.java
说明:-d命令代表生成到的class文件放到一个文件夹中。
2、将class文件打包成jar文件:jar cvf WordCount.jar *.class
3、构造输入文件:touch input1.txt input2.txt
4、在hadoop上新建目录,和put程序运行所需要的输入文件:
hadoop fs -mkdir /tmp/input
hadoop fs -put input.txt /tmp/input/
5、 运行程序,会显示job运行时的一些信息:hadoop jar WordCount.jar WordCount /tmp/input /tmp/output
6、查看运行结果: hadoop fs -ls /tmp/output/(查看文件)hadoop fs -cat /tmp/output/文件名(显示文件内容)
注:要是反复运行时需要将输入文件删除:hadoop dfs -rmr /tmp/output,其中output是输出文件
下面是一个shell脚本:
-
#!/bin/sh
-
-
-
echo "delete out/in file"
-
-
-
hadoop dfs -rmr /tmp/output
-
hadoop dfs -rmr /tmp/input
-
-
-
echo "delete class and jar file, then repackaging ..."
-
rm -rf ./"$1"/*.*
-
javac -classpath /data1/sysdir/hadoop-2.2.0/hadoop-0.20.2-core.jar:/data/sysdir/hadoop-0.20.2/lib/commons-cli-1.2.jar -d "$1" "$1".java
-
-
-
cd "$1"
-
-
-
jar cvf "$1".jar *.class
-
-
-
hadoop fs -mkdir /tmp/input
-
-
-
hadoop fs -put ../"$2" /tmp/input/
-
-
-
hadoop jar "$1".jar "$1" /tmp/input /tmp/output
脚本简要说明:本脚本需要两个输入参数:java程序名(不要加后缀);输入文件名
阅读(8929) | 评论(0) | 转发(1) |