hadoop权威指南-MapReduce气象程序实验

  • 准备工作
    • 数据准备
    • 整理数据
    • 代码部分
    • 编译程序
    • 运行程序

准备工作

数据准备

下载本次实验的所需数据,数据量可跟实际需求下载。本例使用2018年部分数据。
下载地址:ftp://ftp.ncdc.noaa.gov/pub/data/noaa
linux中下载方法:wget -r ftp://ftp.ncdc.noaa.gov/pub/data/noaa/2018

整理数据

下载后的所有文件都为xxx.gz格式。如果在下载过程中出现意外终止的情况,需删除最后一个不完整文件。否则继续操作会报不必要的错误。查看xxx.gz文件使用“ zcat xxx.gz |less ”翻页查看

将所有的xxx.gz文件内容复制到一个txt中。
方法:zcat *.gz > sample.txt
此时生成一个sample.txt文件。同样使用“cat sample.txt |less”查看。内容格式如下:

将sample.txt文件上传到hadoop hdfs文件服务器的“/user/hadoop”文件夹下。
方法:hadoop fs -put sample.txt /user/hadoop
查看上传的文件: hadoop fs -ls /user/hadoop

代码部分

1.MaxTemperature部分

import org.apache.hadoop.conf.Configuration;
import org.apache.hadoop.conf.Configured;
import org.apache.hadoop.fs.Path;
import org.apache.hadoop.io.IntWritable;
import org.apache.hadoop.io.Text;
import org.apache.hadoop.mapreduce.Job;
import org.apache.hadoop.mapreduce.lib.input.FileInputFormat;
import org.apache.hadoop.mapreduce.lib.output.FileOutputFormat;
import org.apache.hadoop.util.Tool;public class MaxTemperature extends Configured implements Tool {public static void main(String[] args) throws Exception {if (args.length != 2) {System.err.println("Usage: MaxTemperature <input path> <output path>");System.exit(-1);}Configuration conf = new Configuration();conf.set("mapred.jar", "MaxTemperature.jar");Job job = Job.getInstance(conf);job.setJarByClass(MaxTemperature.class);job.setJobName("Max temperature");FileInputFormat.addInputPath(job, new Path(args[0]));FileOutputFormat.setOutputPath(job, new Path(args[1]));job.setMapperClass(MaxTemperatureMapper.class);job.setReducerClass(MaxTemperatureReducer.class);job.setOutputKeyClass(Text.class);job.setOutputValueClass(IntWritable.class);System.exit(job.waitForCompletion(true) ? 0 : 1);}@Overridepublic int run(String[] arg0) throws Exception {// TODO Auto-generated method stubreturn 0;}}

2.MaxTemperatureMapper 部分

import java.io.IOException;
import org.apache.hadoop.io.IntWritable;
import org.apache.hadoop.io.LongWritable;
import org.apache.hadoop.io.Text;
import org.apache.hadoop.mapreduce.Mapper;public class MaxTemperatureMapper extendsMapper<LongWritable, Text, Text, IntWritable> {private static final int MISSING = 9999;@Overridepublic void map(LongWritable key, Text value, Context context)throws IOException, InterruptedException {String line = value.toString();String data = line.substring(15, 21);int airTemperature;if (line.charAt(87) == '+') { airTemperature = Integer.parseInt(line.substring(88, 92));} else {airTemperature = Integer.parseInt(line.substring(87, 92));}String quality = line.substring(92, 93);if (airTemperature != MISSING && quality.matches("[01459]")) {context.write(new Text(data), new IntWritable(airTemperature));}}
}

3.MaxTemperatureReducer 部分

import java.io.IOException;
import org.apache.hadoop.io.IntWritable;
import org.apache.hadoop.io.Text;
import org.apache.hadoop.mapreduce.Reducer;public class MaxTemperatureReducer extendsReducer<Text, IntWritable, Text, IntWritable> {@Overridepublic void reduce(Text key, Iterable<IntWritable> values, Context context)throws IOException, InterruptedException {int maxValue = Integer.MIN_VALUE;for (IntWritable value : values) {maxValue = Math.max(maxValue, value.get());}context.write(key, new IntWritable(maxValue));}
}

三个java文件创建好为以下样式

编译程序

设置classpath路径:
修改hadoop\etc\hadoop文件夹中的hadoop-evn.sh文件

编译程序使用javac本地编辑。
方法:javac -classpath $HADOOP_HOME/share/hadoop/common/hadoop-common-2.8.4.jar: $HADOOP_HOME/share/hadoop/mapreduce/hadoop-mapreduce-client-core-2.8.4.jar: $HADOOP_HOME/share/hadoop/common/lib/commons-cli-1.2.jar *.java
如下:

编译后回生成三个.class文件

将三个文件打包为一个jar文件
方法:jar cvf ./MaxTemperature.jar ./*.class

此时生成了一个MaxTemperature.jar文件,然后删除上一步生成的三个.class文件。

运行程序

最后一步运行程序,前提是保证前面没有错误的情况下进行。
方法: hadoop jar MaxTemperature.jar MaxTemperature /user/hadoop/sample.txt /user/hadoop/out3
解释:用hadoop jar 方法运行 MaxTemperature.jar ,执行主类为MaxTemperature.jar中的MaxTemperature类,
数据源为/user/hadoop/sample.txt , 执行输出到/user/hadoop/out3中。

执行完成后用“hadoop fs -ls /user/hadoop”查询是否有out3文件夹

查询out3文件夹

如果最后out3输出文件夹中有这样的文件就说明运行成功了。如果文件夹为空则运行失败。
文件part-r-00000就是本次计算的结果。
查看结果
方法:hadoop fs -cat /user/hadoop/out3/part-r-00000

成功输出结果。

hadoop权威指南-MapReduce气象程序实现过程相关推荐

  1. 基于python的气象数据分析_基于python的《Hadoop权威指南》一书中气象数据下载和map reduce化数据处理及其......

    文档内容: 1:下载<hadoop权威指南>中的气象数据 2:对下载的气象数据归档整理并读取数据 3:对气象数据进行map reduce进行处理 关键词:<Hadoop权威指南> ...

  2. 《Hadoop权威指南》第二章 关于MapReduce

    <Hadoop权威指南>第二章 关于MapReduce 目录 使用Hadoop来数据分析 横向扩展 注:<Hadoop权威指南>重点学习摘要笔记 1. 使用Hadoop来数据分 ...

  3. MapReduce总结 + 相关Hadoop权威指南读书笔记(未完......欢迎补充,互相学习)

    文章目录 MapReduce概述 MapReduce优缺点 MapReduce核心思想 MapReduce进程 MapReduce编程规范 WordCount 案例实操 本地测试 集群测试 Hadoo ...

  4. 《Hadoop权威指南》第三章 Hadoop分布式文件系统

    <Hadoop权威指南>第三章 Hadoop分布式文件系统 目录 前言 HDFS的设计 HDFS的概念 命令行接口 Hadoop文件系统 Java接口 数据流 通过distcp并行复制 注 ...

  5. 《Hadoop 权威指南》读书笔记之七 — chapter7

    <Hadoop 权威指南>读书笔记之七 - chapter7[updating-] The whole process of MapReduce at the highes level,t ...

  6. Hadoop权威指南——关于Sqoop

    楔子 读<Hadoop权威指南第三版>笔记 第15章 关于Sqoop Hadoop平台的最大优势在于他支持使用不同形式的数据.HDFS能够可靠地存储日志和来自平台不同渠道的其他数据,Map ...

  7. Hadoop权威指南(中文版)

    Hadoop权威指南(中文版) 基本信息 原书名: Hadoop: The Definitive Guide 原出版社: O'Reilly Media 作者: (美) Tom White   译者: ...

  8. 《Hadoop权威指南》知识点整理4

    <Hadoop权威指南>知识点整理4 MapReduce部分 MapReduce的类型与格式_MapReduce类型 reduce函数的输入类型必须与map函数的输出类型相同 partit ...

  9. 《Hadoop权威指南》读书笔记1

    <Hadoop权威指南>读书笔记 Day1 第一章 1.MapReduce适合一次写入.多次读取数据的应用,关系型数据库则更适合持续更新的数据集. 2.MapReduce是一种线性的可伸缩 ...

  10. 《Hadoop权威指南》读书笔记——MapeReduce入门

    1 MR的原理 MapeReduce(简称MR)的是大数据计算引擎,相对于Linux awk等工具而已,最大的优势是可以分布式执行,充分利用计算机的多核性能. 一个MR作业(job)是客户端需要执行的 ...

最新文章

  1. SpringBoot 三招组合拳,手把手教你打出优雅的后端接口
  2. 前端开发中的 正则表达式 及常用正则表达式大全
  3. 分享.Net 设计模式大全
  4. Eigen 模板库的简介
  5. 移动、联通、电信7模4G全网通
  6. 横波与纵波的本质区别是什么?——偏振
  7. 学院派CAD工具箱及CAD调用外部应用程序的方法
  8. python打印星星居中_python实现while循环打印星星的四种形状
  9. 使用PostBackUrl属性实现跨页面传值
  10. CentOS中TFTP配置
  11. 老男孩python第一天笔记
  12. CodeForces1005D - Polycarp and Div 3
  13. python3 模板库 好用_关于3个Python模板库的比较
  14. 制作Lightbox效果
  15. 如何修改linux启动项目路径,Jetty配置虚拟目录,实现把web项目发布到自定义目录,指定指定上下文访问;jetty编码修改;Jetty加入Linux service实现开机自启动...
  16. Django 前戏
  17. 做软件工程师需要具备怎样的能力和素质
  18. 上元之夜,故宫亮起来!
  19. 第14/15周作业---郭志康
  20. ubuntu创建批处理文件

热门文章

  1. vue阿里云点播播放器
  2. 通用即插即用监视器驱动下载_驱动之家和驱动精灵哪个好
  3. 《Python黑帽子》学习笔记
  4. 大学生创新创业 /互联网+ 大赛 商业计划书目录(模板)
  5. 常见文件扩展名和它们的说明
  6. mysql绿盟扫描_绿盟软件扫描到存储的安全隐患处理措施
  7. html调整浏览器兼容性,浏览器兼容性问题整理
  8. 基于强化学习的综合能源系统管理综述-笔记
  9. 解决方案:Coin3D安装编译以及配合VS2019、QT的使用
  10. 如何写好科研论文2021秋期末考答案|研究生网课期末考答案|学堂在线|清华大学高飞飞