Chinaunix首页 | 论坛 | 博客
  • 博客访问: 6319228
  • 博文数量: 2759
  • 博客积分: 1021
  • 博客等级: 中士
  • 技术积分: 4091
  • 用 户 组: 普通用户
  • 注册时间: 2012-03-11 14:14
文章分类

全部博文(2759)

文章存档

2019年(1)

2017年(84)

2016年(196)

2015年(204)

2014年(636)

2013年(1176)

2012年(463)

分类: HADOOP

2014-07-01 03:25:35

今天整了一天的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脚本:

点击(此处)折叠或打开

  1. #!/bin/sh


  2. echo "delete out/in file"


  3. hadoop dfs -rmr /tmp/output
  4. hadoop dfs -rmr /tmp/input


  5. echo "delete class and jar file, then repackaging ..."
  6. rm -rf ./"$1"/*.*
  7. 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


  8. cd "$1"


  9. jar cvf "$1".jar *.class


  10. hadoop fs -mkdir /tmp/input


  11. hadoop fs -put ../"$2" /tmp/input/


  12. hadoop jar "$1".jar "$1" /tmp/input /tmp/output


脚本简要说明:本脚本需要两个输入参数:java程序名(不要加后缀);输入文件名

阅读(836) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~