Chinaunix首页 | 论坛 | 博客
  • 博客访问: 2207723
  • 博文数量: 436
  • 博客积分: 9833
  • 博客等级: 中将
  • 技术积分: 5558
  • 用 户 组: 普通用户
  • 注册时间: 2010-09-29 10:27
文章存档

2013年(47)

2012年(79)

2011年(192)

2010年(118)

分类: 云计算

2011-10-09 09:32:47

为了方便大家编写mapreduce程序,我特地编写了一个脚本,可以直接通过他编译并运行mapreduce程序,用bash awk编写的。
使用方法如下

1.cd hadoop/  到hadoop的目录下
2.如果是第一次使用脚本,需要新建playground目录,及子目录src。(详细步骤:mkdir playground/  mkdir  playground/src)
3.然后将代码复制到 playground/src/下
4.将如下代码保存到make.sh文件当中,并放到hadoop的根目录中。
5.如果是第一次使用,chmod +x make.sh
6.(如果写好的java文件名字叫做wordcount.java 那么通过在hadoop目录下打命令./make.sh wordcount ) 即可
注意事项:由于一般的mapreduce程序需要输入要处理的文件名,和处理后的结果的文件名,你就按照提示一步一步的输入就好了,要确保输出文件目录不存在,否则java会抛出异常,但是这一切的前提需要你运行start-all.sh脚本开启hadoop环境
./make.sh wordcount
Please input your input file's name
input
Please input your output file's name
ooo

如果你的版本不是hadoop-0.20.2 请在脚本中的javac -classpath hadoop-0.20.2-core.jar:lib/commons-cli-1.2.jar -d playground/classes playground/src/$1.java里做相应的修改
#!/bin/sh
if [ $# = 0 ]; then
    echo "Usage:./make.sh [file-name]"
    exit 1
fi

result=`grep package playground/src/$1.java`
if [ "$result" = "" ];then
    echo "ERROR:not include in package org.apache.hadoop.examples"
    exit 1
fi
check=`awk '$1=="public"&&$2=="class" {print $3}' playground/src/$1.java`
if [ $check==$1 ];then
    echo "check finished"
else
    echo "they are not same"
    echo "$1"
    echo "$check"
fi
javac -classpath hadoop-0.20.2-core.jar:lib/commons-cli-1.2.jar -d playground/classes playground/src/$1.java

jar -cvf playground/$1.jar -C playground/classes/ .
echo "Please input your input file's name"
read inputname
echo "Please input your output file's name"
read outputname
bin/hadoop jar playground/$1.jar org.apache.hadoop.examples.$1 $inputname $outputname
阅读(2261) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~