SpringBoot +Hadoop3.0.3 mapreduce 实例

2023-11-09

第一步:编码过程

项目结构:

pom.xml 依赖jar文件:

        <!-- mapreduce 核心jar包  -->
		<dependency>
			<groupId>org.apache.hadoop</groupId>
			<artifactId>hadoop-mapreduce-client-core</artifactId>
			<version>3.1.0</version>
		</dependency>
        <!-- 引入hadoop-common Jar包 -->
		<dependency>
			<groupId>org.apache.hadoop</groupId>
			<artifactId>hadoop-common</artifactId>
			<version>3.1.0</version>
		</dependency>

 map 任务类:

package com.zzg.mapreduce.mapper;

import java.io.IOException;

import org.apache.hadoop.io.LongWritable;
import org.apache.hadoop.io.Text;
import org.apache.hadoop.mapreduce.Mapper;

/* 
 * 继承Mapper类需要定义四个输出、输出类型泛型:
 * 四个泛型类型分别代表:
 * KeyIn        Mapper的输入数据的Key,这里是每行文字的起始位置(0,11,...)
 * ValueIn      Mapper的输入数据的Value,这里是每行文字
 * KeyOut       Mapper的输出数据的Key,这里是每行文字中的单词"hello"
 * ValueOut     Mapper的输出数据的Value,这里是每行文字中的出现的次数
 * 
 * Writable接口是一个实现了序列化协议的序列化对象。
 * 在Hadoop中定义一个结构化对象都要实现Writable接口,使得该结构化对象可以序列化为字节流,字节流也可以反序列化为结构化对象。
 * LongWritable类型:Hadoop.io对Long类型的封装类型
 */

public class WordMapper extends Mapper<LongWritable, Text, Text, LongWritable> {

	@Override
	protected void map(LongWritable key, Text value, Mapper<LongWritable, Text, Text, LongWritable>.Context context)
			throws IOException, InterruptedException {
		// 获得每行文档内容,并且进行折分
		String[] words = value.toString().split(" ");

		// 遍历折份的内容
		for (String word : words) {
			// 每出现一次则在原来的基础上:+1
			context.write(new Text(word), new LongWritable(1));
		}
	}

}

Reduce计算类:

package com.zzg.mapreduce.reduce;

import java.io.IOException;

import org.apache.hadoop.io.LongWritable;
import org.apache.hadoop.io.Text;
import org.apache.hadoop.mapreduce.Reducer;

/*
 * 继承Reducer类需要定义四个输出、输出类型泛型:
 * 四个泛型类型分别代表:
 * KeyIn        Reducer的输入数据的Key,这里是每行文字中的单词"hello"
 * ValueIn      Reducer的输入数据的Value,这里是每行文字中的次数
 * KeyOut       Reducer的输出数据的Key,这里是每行文字中的单词"hello"
 * ValueOut     Reducer的输出数据的Value,这里是每行文字中的出现的总次数
 */
public class WordReduce extends Reducer<Text, LongWritable, Text, LongWritable>  {

	@Override
	protected void reduce(Text key, Iterable<LongWritable> values,
			Reducer<Text, LongWritable, Text, LongWritable>.Context context) throws IOException, InterruptedException {
		// TODO Auto-generated method stub
		long sum = 0;
		for (LongWritable i : values) {
			// i.get转换成long类型
			sum += i.get();
		}
		// 输出总计结果
		context.write(key, new LongWritable(sum));
	}
}

主程序入口:

package com.zzg.mapreduce.test;

import java.io.IOException;

import org.apache.hadoop.conf.Configuration;
import org.apache.hadoop.fs.Path;
import org.apache.hadoop.io.LongWritable;
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 com.zzg.mapreduce.mapper.WordMapper;
import com.zzg.mapreduce.reduce.WordReduce;

public class WordCount {

	public static void main(String[] args) throws IOException, ClassNotFoundException, InterruptedException {
		// TODO Auto-generated method stub
		// 创建job对象
		Job job = Job.getInstance(new Configuration());
		// 指定程序的入口
		job.setJarByClass(WordCount.class);

		// 指定自定义的Mapper阶段的任务处理类
		job.setMapperClass(WordMapper.class);
		job.setMapOutputKeyClass(Text.class);
		job.setMapOutputValueClass(LongWritable.class);
		// 数据HDFS文件服务器读取数据路径
		FileInputFormat.setInputPaths(job, new Path("/hadoop/words.txt"));

		// 指定自定义的Reducer阶段的任务处理类
		job.setReducerClass(WordReduce.class);
		// 设置最后输出结果的Key和Value的类型
		job.setOutputKeyClass(Text.class);
		job.setOutputValueClass(LongWritable.class);
		// 将计算的结果上传到HDFS服务
		FileOutputFormat.setOutputPath(job, new Path("/hadoop/wordsResult"));

		// 执行提交job方法,直到完成,参数true打印进度和详情
		job.waitForCompletion(true);
		System.out.println("Finished");
	}

}

第二步:编译Jar 包过程

1、选择hadoop-mapreduce项目->右击菜单->Export…,在弹出的提示框中选择Java下的JAR file

2、选择导出jar名称和路径,选择Next>:

3、设置程序的入口,设置完成后,点击Finish:

4、生成word.jar文件,如下截图:

第三步:Hadoop 执行word.jar

1、在centos7 服务器上创建hadoop 文件夹,执行如下指令:

mkdir -p /home/hadoop

  并将word.jar 上传至创建的文件夹中。

2、执行计算任务,执行如下指令:

hadoop jar word.jar

3、查看计算文件结果,执行如下指令:
 

hadoop fs -ls /hadoop/wordsResult

查看计算任务的结果,执行如下指令:

hadoop fs -cat /hadoop/wordsResult/part-r-00000

 

遇到的问题:Could not find or load main class org.apache.hadoop.mapreduce.v2.app.MRAppMaster

原因:yarn-site.xml 中,yarn.application.classpath 未配置

解决过程:切换至hadoop 的安装目录(/usr/local/hadoop/hadoop-3.0.3),进入etc/hadoop 文件夹,编辑yarn-site.xml 文件

添加以下内容:

        <property>
                 <name>yarn.application.classpath</name>
                 <value>
                        /usr/local/hadoop/hadoop-3.0.3/etc/hadoop,
                        /usr/local/hadoop/hadoop-3.0.3/share/hadoop/common/*,
                        /usr/local/hadoop/hadoop-3.0.3/share/hadoop/common/lib/*,
                        /usr/local/hadoop/hadoop-3.0.3/share/hadoop/hdfs/*,
                        /usr/local/hadoop/hadoop-3.0.3/share/hadoop/hdfs/lib/*,
                        /usr/local/hadoop/hadoop-3.0.3/share/hadoop/mapreduce/*,
                        /usr/local/hadoop/hadoop-3.0.3/share/hadoop/mapreduce/lib/*,
                        /usr/local/hadoop/hadoop-3.0.3/share/hadoop/yarn/*,
                        /usr/local/hadoop/hadoop-3.0.3/share/hadoop/yarn/lib/*
                </value>
        </property>

 

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

SpringBoot +Hadoop3.0.3 mapreduce 实例 的相关文章

随机推荐

  • ./configure之后报错

    首先要看报的错误是什么 一般从第一条开始解决 因为有可能下面的错误是由上面的导致的
  • js 判断变量类型(完整版),包括ES6 新类型Symbol

    欢迎来到Altaba的博客 相信大家在开发中遇到需要判断变量类型的问题 js变量按存储类型可分为值类型和引用类型 值类型包括Undefined String Number Boolean 引用类型包括object Array Functio
  • 股票和期货的区别(股指期货1个点赚多少钱)

    股票和期货的辨别 股票的最后含意即是说不妨表明你购置了这家公司的股子 而期货 则是买卖两边按照各自对目标物的将来价钱预期 以此刻的价钱签署的合约 观念既是仍旧领会了 那咱们就再领会一下这几个的辨别 1 目标物 目标物也即是买卖东西 菜商场里
  • 【深度学习】SETR:基于视觉 Transformer 的语义分割模型

    Visual Transformer Author louwill Machine Learning Lab 自从Transformer在视觉领域大火之后 一系列下游视觉任务应用研究也随之多了起来 基于视觉Transformer的语义分割正
  • OpenMMLab AI实战营第二期(2)MMPose初体验

    根据MMPose的官方文档学习一下 MMPose文档地址 https mmpose readthedocs io zh CN latest index html 文章目录 1 概述 2 安装 2 1 创建conda环境并激活 2 2 安装p
  • mysql锁

    想要了解锁 必须要知道mysql事务 以及mysql事务产生的并发问题 数据库中的事务 隔离级别 以及数据展示 華同学 的博客 CSDN博客 1 Mysql锁的介绍 锁是计算机协调多个线程或进程并发访问某一资源的机制 除传统的计算机资源 C
  • sentencepiece原理与实践

    1 前言 前段时间在看到XLNET Transformer XL等预训练模式时 看到源代码都用到sentencepiece模型 当时不清楚 经过这段时间实践和应用 觉得这个方法和工具值得NLP领域推广和应用 今天就分享下sentencepi
  • Vscode + php + xdebug 单步调试

    1 确认xdebug已打开 php ini xdebug remote enable 1 xdebug remote autostart 1 xdebug remote host localhost xdebug remote port 9
  • win32汇编基础概念

    一 关于寄存器 寄存器有EAX EBX ECX EDX EDI ESI ESP EBP等 似乎IP也是寄存器 但只有在CALL RET在中会默认使用它 其它情况很少使用到 暂时可以不用理会 EAX是WIN32 API 默认的返回值存放处 E
  • 深入理解机器学习与极大似然之间的联系

    似然函数 事件A的发生含着有许多其它事件的发生 所以我就把这些其它事件发生的联合概率来作为事件A的概率 也就是似然函数 数据类型的不同 离散型和连续性 就有不同的似然函数 极大似然极大似然估计方法 Maximum Likelihood Es
  • sqli-labs:less-27(过滤select和union)

    div div
  • eosjs v20 如何通过jsonrpc连接到主网节点

    用eosjs连接主网节点很简单 只需要在创建JsonRpc对象时 指定要连接主网节点的地址 就可以了 例如 下面的代码将创建一个使用eosnewyork io节点RPC旳JsonRpc 对象 然后使用get info 方法获取网络总体信息
  • 拆分Nim游戏

    拆分Nim游戏 给定n堆石子 两位玩家轮流操作 每次操作可以取走其中的一堆石子 然后放入两堆规模更小的石子 新堆规模可以为0 且两个新堆的石子总数可以大于取走的那堆石子数 最后无法进行操作的人视为失败 问如果两人都采用最优策略 先手是否必胜
  • 顺序主子式

    设有矩阵 a b c d e f g h i 则 一阶顺序主子式 a 二阶顺序主子式 a b d e 三阶顺序主子式 a b c d e f g h i 若n阶方阵A的顺序主子式均 0 则A的LU分解A LU存在且唯一 转载于 https
  • 微软Xbox One无线手柄控制机器人

    ROS中的joy包提供了游戏手柄的驱动 并且包含joy node节点 这一节点可以发布包含手柄按钮和轴信息的Joy消息 在终端中输入下面命令 安装joy包 sudo apt get install ros kinetic joy Confi
  • python: FileHelper

    encoding utf 8 版权所有 2023 涂聚文有限公司 许可信息查看 描述 Author geovindu Geovin Du 涂聚文 IDE PyCharm 2023 1 python 311 Datetime 2023 7 9
  • A卡2023最新AI画图教程:3A主机安装ROCm运行Stable Diffusion画图

    硬件平台 3A主机 内存16G 显卡 AMD RX6700 XT 12GB 华擎幻影电竞 处理器 AMD R5 3500X 6C6T 主板 华硕TUF B450M PRO GAMING 安装Ubuntu22 04 2 LTS系统 更换系统源
  • MySQL的索引

    MySQL 的索引 1 索引的使用 1 1 什么是索引 1 2 如何创建索引 1 2 1 ALTER TABLE 1 2 2 CREATE INDEX 1 2 3 CREATE TABLE 1 2 4 创建索引的注意事项 1 3 索引类型
  • Python数据分析-房价预测及模型分析

    摘 要 Python数据分析 房价的影响因素图解https blog csdn net weixin 42341655 article details 120299008 spm 1001 2014 3001 5501 上一篇OF讲述了房价
  • SpringBoot +Hadoop3.0.3 mapreduce 实例

    第一步 编码过程 项目结构 pom xml 依赖jar文件