Hadoop MapReduce编程

简介: 该教程指导编写Hadoop MapReduce程序处理天气数据。任务包括计算每个城市ID的最高、最低气温、气温出现次数和平均气温。在读取数据时需忽略表头,且数据应为整数。教程中提供了环境变量设置、Java编译、jar包创建及MapReduce执行的步骤说明,但假设读者已具备基础操作技能。此外,还提到一个扩展练习,通过分区功能将具有相同尾数的数字分组到不同文件。

使用课堂讲解的Hadoop mapreduce,编写map类和reduce类。(至少完成2项)

(1)对天气数据,计算每个城市id的最高气温(最大值)

(2)对天气数据,计算每个城市id的最低气温(最小值)

(3)对天气数据,计算每个城市id的气温次数(计数)

(4)对天气数据,计算每个城市id的平均气温(平均值)

读取表格数据的时候把表头删掉,因为表头是字符串,数据是整数

教程开始

[评论可见]隐藏内容 - 管理员可见

export HADOOP_CLASSPATH=/root/Desktop/hadoop/hadoop-3.3.1/share/hadoop/common/hadoop-common-3.3.1.jar:/root/Desktop/hadoop/hadoop-3.3.1/share/hadoop/mapreduce/hadoop-mapreduce-client-common-3.3.1.jar:/root/Desktop/hadoop/hadoop-3.3.1/share/hadoop/common/lib/commons-cli-1.2.jar:/root/Desktop/hadoop/hadoop-3.3.1/share/hadoop/mapreduce/hadoop-mapreduce-client-jobclient-3.3.1.jar:/root/Desktop/hadoop/hadoop-3.3.1/share/hadoop/mapreduce/hadoop-mapreduce-client-core-3.3.1.jar

以上命令注意事项:

  • jar包的路径根据自己实际情况修改,不要无脑复制粘贴
  • 该命令是暂时性的,只在一次控制台窗口生效,关闭控制台窗口再重新打开需重新运行此命令,也可永久指定,在该文件内指定即可/etc/profile(不建议永久指定)

javac -classpath $HADOOP_CLASSPATH -d container WordCount.java

对以上命令的说明:

  • $HADOOP_CLASSPATH:这个是第一步指定的环境变量,里面有编译该程序的jar包,不需更改
  • container:存放编译Java程序后的字节码文件(.class结尾),可根据实际情况任意指定
  • WordCount.java:要编译的JAVA文件,文章最后会给出,根据实际情况更改,根据不同的题目指定不同的Java程序

jar -cvf norths.jar -C container/ .

对以上命令的说明:

  • norths.jar:打包成jar包后的名字,可根据实际情况任意指定
  • container/ .:把对应文件夹下的字节码文件打包成jar包,因为上一步我们把字节码存放到了container文件夹中,所以在这一步我们把该文件夹中的字节码文件打包成jar包

hadoop jar /root/Desktop/mapreduce/norths.jar WordCount  /wordcount/input/temperatures.csv /wordcount/output-1

对以上命令的说明:

  • /root/Desktop/mapreduce/norths.jar:上一步打包的jar包的存放路径,对应的是linux本地的路径
  • WordCount:java程序的类名
  • /wordcount/input/temperatures.csv:要处理的文件的路径,对应的是hadoop上的路径
  • /wordcount/output-1:处理完文件后结果的存放路径,对应的是hadoop上的路径(此路径不能是已经存在的路径)

本教程省略了在本地新建文件,并把文件上传到hadoop文件系统的步骤,因为能看这个教程的默认已经掌握这些基本操作

对一个包含大量整数的文件进行统计分析,将尾数相同的数字放在同一个文件中(用分区实现)。

[评论可见]隐藏内容 - 管理员可见

参考第一题运行过程:

注意事项:

读取的文件变了,不再是表格了,是自己随便指定的

Java程序的类名变了,注意更改

目录
相关文章
|
1月前
|
分布式计算 资源调度 Hadoop
大数据-80 Spark 简要概述 系统架构 部署模式 与Hadoop MapReduce对比
大数据-80 Spark 简要概述 系统架构 部署模式 与Hadoop MapReduce对比
64 2
|
1月前
|
分布式计算 资源调度 Hadoop
Hadoop-10-HDFS集群 Java实现MapReduce WordCount计算 Hadoop序列化 编写Mapper和Reducer和Driver 附带POM 详细代码 图文等内容
Hadoop-10-HDFS集群 Java实现MapReduce WordCount计算 Hadoop序列化 编写Mapper和Reducer和Driver 附带POM 详细代码 图文等内容
88 3
|
1月前
|
分布式计算 资源调度 数据可视化
Hadoop-06-Hadoop集群 历史服务器配置 超详细 执行任务记录 JobHistoryServer MapReduce执行记录 日志聚合结果可视化查看
Hadoop-06-Hadoop集群 历史服务器配置 超详细 执行任务记录 JobHistoryServer MapReduce执行记录 日志聚合结果可视化查看
34 1
|
1月前
|
分布式计算 资源调度 Hadoop
Hadoop-05-Hadoop集群 集群WordCount 超详细 真正的分布式计算 上传HDFS MapReduce计算 YRAN查看任务 上传计算下载查看
Hadoop-05-Hadoop集群 集群WordCount 超详细 真正的分布式计算 上传HDFS MapReduce计算 YRAN查看任务 上传计算下载查看
46 1
|
1月前
|
SQL 分布式计算 关系型数据库
Hadoop-24 Sqoop迁移 MySQL到Hive 与 Hive到MySQL SQL生成数据 HDFS集群 Sqoop import jdbc ETL MapReduce
Hadoop-24 Sqoop迁移 MySQL到Hive 与 Hive到MySQL SQL生成数据 HDFS集群 Sqoop import jdbc ETL MapReduce
80 0
|
1月前
|
SQL 分布式计算 关系型数据库
Hadoop-23 Sqoop 数据MySQL到HDFS(部分) SQL生成数据 HDFS集群 Sqoop import jdbc ETL MapReduce
Hadoop-23 Sqoop 数据MySQL到HDFS(部分) SQL生成数据 HDFS集群 Sqoop import jdbc ETL MapReduce
36 0
|
1月前
|
SQL 分布式计算 关系型数据库
Hadoop-22 Sqoop 数据MySQL到HDFS(全量) SQL生成数据 HDFS集群 Sqoop import jdbc ETL MapReduce
Hadoop-22 Sqoop 数据MySQL到HDFS(全量) SQL生成数据 HDFS集群 Sqoop import jdbc ETL MapReduce
46 0
|
3月前
|
分布式计算 大数据 Hadoop
揭秘MapReduce背后的魔法:从基础类型到高级格式,带你深入理解这一大数据处理利器的奥秘与实战技巧,让你从此不再是编程门外汉!
【8月更文挑战第17天】MapReduce作为分布式计算模型,是大数据处理的基石。它通过Map和Reduce函数处理大规模数据集,简化编程模型,使开发者聚焦业务逻辑。MapReduce分单阶段和多阶段,支持多种输入输出格式如`TextInputFormat`和`SequenceFileInputFormat`。例如,简单的单词计数程序利用`TextInputFormat`读取文本行并计数;而`SequenceFileInputFormat`适用于高效处理二进制序列文件。合理选择类型和格式可有效解决大数据问题。
52 1
|
3月前
|
分布式计算 Hadoop Java
面向开发者的Hadoop编程指南
【8月更文第28天】Hadoop是一个开源软件框架,用于分布式存储和处理大规模数据集。它由Hadoop分布式文件系统(HDFS)和MapReduce编程模型组成。本指南旨在帮助初学者和中级开发者快速掌握Hadoop的基本概念和编程技巧,并通过一些简单的示例来加深理解。
103 0
|
3月前
|
缓存 分布式计算 算法
优化Hadoop MapReduce性能的最佳实践
【8月更文第28天】Hadoop MapReduce是一个用于处理大规模数据集的软件框架,适用于分布式计算环境。虽然MapReduce框架本身具有很好的可扩展性和容错性,但在某些情况下,任务执行可能会因为各种原因导致性能瓶颈。本文将探讨如何通过调整配置参数和优化算法逻辑来提高MapReduce任务的效率。
474 0