环境
CentOS 6.8 64位 1核 2GB
JDK 1.7.0_75 64 位
Hadoop 1.1.2
启动Hadoop
- 进入 /app/hadoop-1.1.2/bin 目录
1 | $ cd /app/hadoop-1.1.2/bin |
- 启动全部进程
1 | $ ./start-all.sh |
- 查看启动进程
1 | $ jps |
确保以上进程都被启动。
创建代码
- 创建 /app/hadoop-1.1.2/myclass 目录并进入
1 | $ cd /app/hadoop-1.1.2 |
- 创建 MaxTemperature.java,代码如下
1 | import org.apache.hadoop.fs.Path; |
- 创建 MaxTemperatureMapper.java,代码如下
1 | import java.io.IOException; |
- 创建 MaxTemperatureReducer.java,代码如下
1 | import java.io.IOException; |
编译代码
- 编译
1 | $ javac -classpath ../hadoop-core-1.1.2.jar MaxTemperature*.java |
使用以上命令对刚刚创建的 java 代码进行编译,为保证编译成功,加入 classpath 变量,引入 hadoop-core-1.1.2.jar 包。
- 把编译好的class文件打包
1 | $ jar cvf ./MaxTemperature.jar ./MaxTemperature*.class |
- 把打好的包移动到上级目录
1 | $ mv MaxTemperature.jar .. |
- 删除编译好的class文件
1 | $ rm MaxTemperature*.class |
测试
- 准备气象数据
气象数据具体的下载地址为 ftp://ftp3.ncdc.noaa.gov/pub/data/noaa/, 本次测试使用了1971-1973年的气象数据。
- 整合气象数据
1 | $ zcat *.gz > temperature.txt |
执行以上命令把气象数据文件解压并整合到 temperature.txt 文件中。
- 在HDFS中创建/max/in目录
1 | $ hadoop fs -mkdir -p /max/in |
- 把 temperature.txt 上传到 /max/in 目录中
1 | $ hadoop fs -copyFromLocal temperature.txt /max/in |
- 在HDFS中查看 /max/in 目录
1 | $ hadoop fs -ls /max/in |
- 在 /app/hadoop-1.1.2 目录中执行任务
1 | $ hadoop jar MaxTemperature.jar MaxTemperature /max/in/temperature.txt /max/out |
- 查看结果,温度需要除以10
1 | $ hadoop fs -cat /max/out/part-r-00000 |
也可以访问 http://当前IP:50030/jobtracker.jsp ,通过页面查看结果。