MapReduce WordCount程序实践(IDEA版)

这篇具有很好参考价值的文章主要介绍了MapReduce WordCount程序实践(IDEA版)。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

环境

Linux:Hadoop2.x

Windows:jdk1.8、Maven3、IDEA2021

步骤

编程分析

在idea中编写mapreduce处理wordcount的相关代码,Hadoop,IDEA,mapreduce,intellij-idea,大数据

编程分析包括:
1.数据过程分析:数据从输入到输出的过程分析。
2.数据类型分析:Map的输入输出类型,Reduce的输入输出类型;
编程分析决定了我们该如何编写代码。

新建Maven工程

打开IDEA–>点击File–>New–>Project在idea中编写mapreduce处理wordcount的相关代码,Hadoop,IDEA,mapreduce,intellij-idea,大数据

选择Maven–>点击Next
在idea中编写mapreduce处理wordcount的相关代码,Hadoop,IDEA,mapreduce,intellij-idea,大数据

选择一个空目录作为项目目录,目录名称例如:wordcount,建议目录路径不包含中文和空格,点击Finish

在idea中编写mapreduce处理wordcount的相关代码,Hadoop,IDEA,mapreduce,intellij-idea,大数据

添加依赖

修改pom.xml,添加如下依赖

    <dependencies>
        <dependency>
            <groupId>org.apache.hadoop</groupId>
            <artifactId>hadoop-common</artifactId>
            <version>2.7.3</version>
        </dependency>
        <dependency>
            <groupId>org.apache.hadoop</groupId>
            <artifactId>hadoop-client</artifactId>
            <version>2.7.3</version>
        </dependency>
        <dependency>
            <groupId>org.apache.hadoop</groupId>
            <artifactId>hadoop-hdfs</artifactId>
            <version>2.7.3</version>
        </dependency>
        <dependency>
            <groupId>org.apache.hadoop</groupId>
            <artifactId>hadoop-mapreduce-client-core</artifactId>
            <version>2.7.3</version>
        </dependency>
    </dependencies>

在idea中编写mapreduce处理wordcount的相关代码,Hadoop,IDEA,mapreduce,intellij-idea,大数据

加载依赖
在idea中编写mapreduce处理wordcount的相关代码,Hadoop,IDEA,mapreduce,intellij-idea,大数据

新建包

src\main\java目录下,新建包:org.example
在idea中编写mapreduce处理wordcount的相关代码,Hadoop,IDEA,mapreduce,intellij-idea,大数据

填入org.example,效果如下:
在idea中编写mapreduce处理wordcount的相关代码,Hadoop,IDEA,mapreduce,intellij-idea,大数据

新建类

org.example包下,新建出三个类,分别为:MyMapperMyReducerMyMain,效果如下:

在idea中编写mapreduce处理wordcount的相关代码,Hadoop,IDEA,mapreduce,intellij-idea,大数据

编写Map程序

编辑MyMapper类,步骤如下:

1.继承Mapper
2.重写map()方法
3.编写Map逻辑代码:
	1.v1由Text类型转换为String
	2.按空格进行分词:split(" ")方法
	3.输出k2, v2

在idea中编写mapreduce处理wordcount的相关代码,Hadoop,IDEA,mapreduce,intellij-idea,大数据

编写Reduce程序

编辑MyReducer类,步骤如下:

1.继承Reducer
2.重写reduce()方法
3.编写Reduce逻辑代码:
    1.k4 = k3
    2.v4 = v3元素的和
    3.输出k4, v4

在idea中编写mapreduce处理wordcount的相关代码,Hadoop,IDEA,mapreduce,intellij-idea,大数据

编写Main程序(Driver程序)

编辑MyMain类,步骤如下:

1. 创建一个job和任务入口(指定主类)
2. 指定job的mapper和输出的类型<k2 v2>
3. 指定job的reducer和输出的类型<k4  v4>
4. 指定job的输入和输出路径
5. 执行job

在idea中编写mapreduce处理wordcount的相关代码,Hadoop,IDEA,mapreduce,intellij-idea,大数据

思考

代码编写完成后,可以先在Windows本地运行吗?

打包

在idea中编写mapreduce处理wordcount的相关代码,Hadoop,IDEA,mapreduce,intellij-idea,大数据

看到BUILD SUCCESS为打包成功

在idea中编写mapreduce处理wordcount的相关代码,Hadoop,IDEA,mapreduce,intellij-idea,大数据

打包后得到的jar包,在项目的target目录下

在idea中编写mapreduce处理wordcount的相关代码,Hadoop,IDEA,mapreduce,intellij-idea,大数据

提交到Hadoop集群运行

1.将上一步打包得到的jar包,上传到linux

在idea中编写mapreduce处理wordcount的相关代码,Hadoop,IDEA,mapreduce,intellij-idea,大数据

2.启动hadoop集群

start-all.sh

3.运行jar包

从Linux本地上传一个文件到hdfs

hdfs dfs -put 1.txt /input/1.txt

hdfs查看输入数据
在idea中编写mapreduce处理wordcount的相关代码,Hadoop,IDEA,mapreduce,intellij-idea,大数据

运行jar包

hadoop jar wordcount-1.0-SNAPSHOT.jar org.example.MyMain /input/1.txt /output/wordcount

正常运行过程输出如下:

[hadoop@node1 ~]$ hadoop jar wordcount-1.0-SNAPSHOT.jar org.example.MyMain /input/1.txt /output/wordcount
22/03/29 00:23:59 INFO client.RMProxy: Connecting to ResourceManager at node1/192.168.193.140:8032
22/03/29 00:23:59 WARN mapreduce.JobResourceUploader: Hadoop command-line option parsing not performed. Implement the Tool interface and execute your application with ToolRunner to remedy this.
22/03/29 00:24:00 INFO input.FileInputFormat: Total input paths to process : 1
22/03/29 00:24:00 INFO mapreduce.JobSubmitter: number of splits:1
22/03/29 00:24:01 INFO mapreduce.JobSubmitter: Submitting tokens for job: job_1648484275192_0001
22/03/29 00:24:01 INFO impl.YarnClientImpl: Submitted application application_1648484275192_0001
22/03/29 00:24:01 INFO mapreduce.Job: The url to track the job: http://node1:8088/proxy/application_1648484275192_0001/
22/03/29 00:24:01 INFO mapreduce.Job: Running job: job_1648484275192_0001
22/03/29 00:24:08 INFO mapreduce.Job: Job job_1648484275192_0001 running in uber mode : false
22/03/29 00:24:08 INFO mapreduce.Job:  map 0% reduce 0%
22/03/29 00:24:12 INFO mapreduce.Job:  map 100% reduce 0%
22/03/29 00:24:17 INFO mapreduce.Job:  map 100% reduce 100%
22/03/29 00:24:19 INFO mapreduce.Job: Job job_1648484275192_0001 completed successfully
22/03/29 00:24:19 INFO mapreduce.Job: Counters: 49
	File System Counters
		FILE: Number of bytes read=55
		FILE: Number of bytes written=237261
		FILE: Number of read operations=0
		FILE: Number of large read operations=0
		FILE: Number of write operations=0
		HDFS: Number of bytes read=119
		HDFS: Number of bytes written=25
		HDFS: Number of read operations=6
		HDFS: Number of large read operations=0
		HDFS: Number of write operations=2
	Job Counters 
		Launched map tasks=1
		Launched reduce tasks=1
		Data-local map tasks=1
		Total time spent by all maps in occupied slots (ms)=2290
		Total time spent by all reduces in occupied slots (ms)=2516
		Total time spent by all map tasks (ms)=2290
		Total time spent by all reduce tasks (ms)=2516
		Total vcore-milliseconds taken by all map tasks=2290
		Total vcore-milliseconds taken by all reduce tasks=2516
		Total megabyte-milliseconds taken by all map tasks=2344960
		Total megabyte-milliseconds taken by all reduce tasks=2576384
	Map-Reduce Framework
		Map input records=2
		Map output records=4
		Map output bytes=41
		Map output materialized bytes=55
		Input split bytes=94
		Combine input records=0
		Combine output records=0
		Reduce input groups=3
		Reduce shuffle bytes=55
		Reduce input records=4
		Reduce output records=3
		Spilled Records=8
		Shuffled Maps =1
		Failed Shuffles=0
		Merged Map outputs=1
		GC time elapsed (ms)=103
		CPU time spent (ms)=1200
		Physical memory (bytes) snapshot=425283584
		Virtual memory (bytes) snapshot=4223356928
		Total committed heap usage (bytes)=277348352
	Shuffle Errors
		BAD_ID=0
		CONNECTION=0
		IO_ERROR=0
		WRONG_LENGTH=0
		WRONG_MAP=0
		WRONG_REDUCE=0
	File Input Format Counters 
		Bytes Read=25
	File Output Format Counters 
		Bytes Written=25
[hadoop@node1 ~]$ 

查看输出结果
在idea中编写mapreduce处理wordcount的相关代码,Hadoop,IDEA,mapreduce,intellij-idea,大数据

思考

  • 如果运行过程报如下错误,该如何解决?
    在idea中编写mapreduce处理wordcount的相关代码,Hadoop,IDEA,mapreduce,intellij-idea,大数据

  • 代码还可以优化吗?如何优化?

完成!enjoy it!文章来源地址https://www.toymoban.com/news/detail-768708.html

到了这里,关于MapReduce WordCount程序实践(IDEA版)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • MapReduce之WordCount本地测试

    在给定的文本文件中统计输出每一个单词出现的总次数。 (1)输入数据 2)期望输出数据 banzhang 1 cls 2 hadoop 1 jiao 1 ss 2 xue 1 按照MapReduce编程规范,分别编写Mapper,Reducer,Driver。 (1)创建maven工程,MapReduceDemo (2)在pom.xml文件中添加如下依赖 (2)在项目的src/main/resources目录

    2024年02月03日
    浏览(47)
  • 深入理解MapReduce:使用Java编写MapReduce程序【上进小菜猪】

    📬📬我是上进小菜猪,沈工大软件工程专业,爱好敲代码,持续输出干货。 MapReduce是一种用于处理大规模数据集的并行编程模型。由于其高效性和可扩展性,MapReduce已成为许多大型互联网公司处理大数据的首选方案。在本文中,我们将深入了解MapReduce,并使用Java编写一个简

    2024年02月11日
    浏览(48)
  • [MapReduce程序编写运行打包 ]

    目录 🍀🍁前言: 🍀🍁编写MapReduce程序 🍀🍁代码中提交作业示意。 🍀🍁打包MapReduce程序 🍀🍁使用Eclipse打包MapReduce程序 🍀🍁使用Maven打包MapReduce程序 在pom.xml文件中,添加以下插件配置: 🍀🍁打包第三种方式: 🍀🍁部署MapReduce程序 🍀🍁可以使用hadoop fs命令或者Ha

    2024年02月11日
    浏览(41)
  • hadoop学习:mapreduce的wordcount时候,继承mapper没有对应的mapreduce的包

    踩坑描述:在学习 hadoop 的时候使用hadoop 下的 mapreduce,却发现没有 mapreduce。 第一反应就是去看看 maven 的路径对不对 settings——》搜索框搜索 maven  检查一下 Maven 路径对不对 OK 这里是对的 那么是不是依赖下载失败导致 mapreduce 没下下来 去本地仓库里去看看(上图最后一行就

    2024年02月11日
    浏览(43)
  • WordCount 在 MapReduce上运行详细步骤

    注意:前提条件hadoop已经安装成功,并且正常启动。 1.准备好eclipse安装包,eclipse-jee-juno-linux-gtk-x86_64.tar.gz,使用SSH Secure File Transfer Client工具把安装包上传于Hadoop集群的名称节点。   2.上传Hadoop在eclipse上运行插件:haoop-eclipse-plugin-2.6.0.jar   3.更改eclipse-jee-juno-linux-gtk-x86_64.t

    2023年04月16日
    浏览(42)
  • 虚拟机+Hadoop下MapReduce的Wordcount案例

    环境:ubuntu18.04 前提:Hadoop已经搭建好 抄作业记得改标题 输入内容(可以自定义,抄作业别写一样的) yarn-site.xml 内容如下,注意第一个property要改: ·输入hadoop classpath(任意路径下均可),将返回的内容复制在第一个property的value中 *修改配置文件之后要重启hadoop(关了又

    2024年02月07日
    浏览(51)
  • YARN On Mapreduce搭建与wordCount案例实现

    YARN的基本思想是将资源管理RM,和作业调度、监控功能拆分成单独的守护进程。这个思想中拥有一个全局的资源管理器以及每个应用的MASTER,AM。每一个应用 都是单个作业或者一个DAG作业。 架构图: mapred-site.xml yarn-site.xml 配置节点分发到其他节点。 启动yarn 启动rm资源管理 访

    2023年04月24日
    浏览(38)
  • hadoop 学习:mapreduce 入门案例一:WordCount 统计一个文本中单词的个数

    这个案例的需求很简单 现在这里有一个文本wordcount.txt,内容如下 现要求你使用 mapreduce 框架统计每个单词的出现个数  这样一个案例虽然简单但可以让新学习大数据的同学熟悉 mapreduce 框架 (1)创建一个 maven 工程,maven 工程框架可以选择quickstart (2)在properties中添加 had

    2024年02月11日
    浏览(43)
  • Hadoop系统应用之MapReduce相关操作【IDEA版】---经典案例“倒排索引、数据去重、TopN”

      倒排索引是文档检索系统中最常用的数据结构,被广泛应用于全文搜索引擎。倒排索引主要用来存储某个单词(或词组)在一组文档中的存储位置的映射,提供了可以根据内容来查找文档的方式,而不是根据文档来确定内容,因此称为倒排索引(Inverted Index)。带有倒排索引

    2024年02月07日
    浏览(49)
  • MapReduce 原理与实践

    Hadoop MapReduce 是一个 编程框架 ,它可以轻松地编写应用程序,以可靠的、容错的方式处理大量的数据(数千个节点)。 正如其名,MapReduce 的工作模式主要分为 Map 阶段和 Reduce 阶段 。 一个 MapReduce 任务(Job)通常将输入的数据集分割成独立的块,这些块被 map 任务以完全并行的

    2024年02月06日
    浏览(41)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包