使用MapReduce求ncdc气象数据中的最低温度

一 实验内容与完成情况:

一、下载、解压、合并与上传数据

首先启动集群,然后在进行数据处理前首先需要获得所需要的数据,并且下载数据。

使用脚本启动hadoop集群,并且启动zookeeper,使用jpsall查看。

使用MapReduce求ncdc气象数据中的最低温度_第1张图片

使用MapReduce求ncdc气象数据中的最低温度_第2张图片

然后创建文件夹,使用wget命令下载数据。

cd /opt/modul/hadoop
mkdir temp #创建文件夹用于存放数据
cd temp
sudo wget ftp://ftp.ncdc.noaa.gov/pub/data/gsod/2016/gsod_2016.tar
sudo wget ftp://ftp.ncdc.noaa.gov/pub/data/gsod/2017/gsod_2017.tar
使用MapReduce求ncdc气象数据中的最低温度_第3张图片

使用MapReduce求ncdc气象数据中的最低温度_第4张图片

使用MapReduce求ncdc气象数据中的最低温度_第5张图片

下载完成之后,通过ll命令查看,然后去解压。

使用MapReduce求ncdc气象数据中的最低温度_第6张图片

解压2016与2017年的数据包

tar -xvf gsod_2016.tar
tar -xvf gsod_2017.tar

使用MapReduce求ncdc气象数据中的最低温度_第7张图片

将这些数据文件解压并合并到一个ncdc.txt文件中

zcat *.gz > ncdc.txt
ll |grep ncdc

 使用MapReduce求ncdc气象数据中的最低温度_第8张图片

查看ncdc.txt文件

head -12 ncdc.txt使用MapReduce求ncdc气象数据中的最低温度_第9张图片

使用sed命令删除匹配'STN'的行

sed -i '/STN/d' ncdc.txt

使用MapReduce求ncdc气象数据中的最低温度_第10张图片

将准备好的数据上传至hdfs

Myhadoop.sh start
jpsall
hadoop fs -copyFromLocal /opt/modul/hadoop-3.1.3/temp/ncdc.txt input

使用MapReduce求ncdc气象数据中的最低温度_第11张图片

 使用MapReduce求ncdc气象数据中的最低温度_第12张图片

二、编写求最低温度的MapReduce代码

编写MinTemperature.java

使用MapReduce求ncdc气象数据中的最低温度_第13张图片

编写MinTemperatureMapper.java

使用MapReduce求ncdc气象数据中的最低温度_第14张图片

编写MinTemperatureReducer.java

使用MapReduce求ncdc气象数据中的最低温度_第15张图片

  • 编译运行程序

在这里,我们就可以javac *.java打包成.Class文件,然后再将.class文件打包成jar,这样过于麻烦,我们可以使Apache开源所提供的项目管理工具maven,使用maven可以直接将项目打成jar包。

使用MapReduce求ncdc气象数据中的最低温度_第16张图片

我们可以直接查看到maven打出的jar包,然后通过xftp上传到xshell,最终上传到hadoop集群中

执行程序

hadoop jar /opt/module/hadoop-3.1.3/temp/MinTemperature.jar MinTemperature /input/ncdc.txt ncdc

使用MapReduce求ncdc气象数据中的最低温度_第17张图片

使用MapReduce求ncdc气象数据中的最低温度_第18张图片

使用MapReduce求ncdc气象数据中的最低温度_第19张图片

使用MapReduce求ncdc气象数据中的最低温度_第20张图片

然后就可以查看了,或者也可以使用java提供的API直接运行。

使用MapReduce求ncdc气象数据中的最低温度_第21张图片

 使用MapReduce求ncdc气象数据中的最低温度_第22张图片

使用MapReduce求ncdc气象数据中的最低温度_第23张图片

或者也可以在Hadoop里面查看

使用MapReduce求ncdc气象数据中的最低温度_第24张图片

最终我们得到两年的最低温度,2016年的最低温度是-112°,2017年的最低温度是-115°。

二:出现的问题:

使用MapReduce求ncdc气象数据中的最低温度_第25张图片

在hadoop集群里面使用jar包执行程序,但是出现上述错误

三:解决的办法:

使用的命令:

hadoop jar /home/hadoop/temp/code/MinTemperature.jar MinTemperature input/ncdc.txt ncdc

原因是没有以正确的格式输入,所以会出现上述问题。

你可能感兴趣的:(mapreduce,大数据,hadoop)