使用Maven构建Hadoop工程并实现词频统计案例(详细篇)

简介: 使用Maven构建Hadoop工程并实现词频统计案例(详细篇)

使用Maven构建Hadoop工程并实现词频统计案例(详细篇)


3ba048ffa5674f2bac0dd22e93a6290d.jpeg



一、实验环境:


  • Hadoop3.1.3
  • IDEA
  • CentOS7.5
  • Maven3.6.3
  • 伪分布式


二、使用Maven构建Hadoop工程


1.解压Maven到自己的安装目录


tar -zxvf ./apache-maven-3.6.3-bin.tar.gz -C /opt/module/


2.配置Maven环境变量


vim /etc/profile.d/my_env.sh
# JDK_HOMEexportJAVA_HOME=/opt/module/jdk1.8.0_212
exportCLASSPATH=$:CLASSPATH:$JAVA_HOME/lib/
exportPATH=$PATH:$JAVA_HOME/bin
#HADOOP_HOMEexportHADOOP_HOME=/opt/module/hadoop-3.1.3
exportPATH=$PATH:$HADOOP_HOME/bin
exportPATH=$PATH:$HADOOP_HOME/sbin
# Set Maven EnvironmentexportMAVEN_HOME=/opt/module/maven-3.6.3
exportPATH=$PATH:$MAVEN_HOME/bin

3.查看maven版本信息


mvn -version


4.使用IDEA创建一个空项目(提前在IDEA中配置Maven)


如图:(借用尚硅谷的图)


1.png


5.Maven安装目录和仓库地址的设置

2.png


# 先进入到maven的安装目录# 修改 settings.xml(核心配置文件)vim ./conf/settings.xml


# 本地仓库地址更改到/home/zhangsan/LocalRepository,默认在xxx\.m2\repository<localRepository>/home/zhangsan/LocalRepository</localRepository>


# 配置阿里云镜像(下载速度快)<mirror>
    <id>nexus-aliyun</id>
    <mirrorOf>central</mirrorOf>
    <name>Nexus aliyun</name>
    <url>http://maven.aliyun.com/nexus/content/groups/public</url>
</mirror>


  • Maven home directory:可以指定本地 Maven 的安装目录所在。这里不建议使用IDEA默认的。


  • User settings file / Local repository:我们还可以指定 Maven 的 settings.xml 位置和本地仓库位置。


三、词频统计案例


配置文件:


<?xmlversion="1.0" encoding="UTF-8"?><projectxmlns="http://maven.apache.org/POM/4.0.0"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"><modelVersion>4.0.0</modelVersion><groupId>com.zhangsan</groupId><artifactId>MapReduce</artifactId><version>1.0-SNAPSHOT</version><dependencies><dependency><groupId>org.apache.hadoop</groupId><artifactId>hadoop-client</artifactId><version>3.1.3</version></dependency><dependency><groupId>junit</groupId><artifactId>junit</artifactId><version>3.8.2</version><scope>test</scope></dependency><dependency><groupId>org.apache.logging.log4j</groupId><artifactId>log4j-slf4j-impl</artifactId><version>2.12.0</version></dependency></dependencies></project>


WordCount案例代码:


Mapper类

3.png


Reducer类


4.png


Driver类

5.png


执行Jar包之前要先在HDFS上创建一个文本文件作为词频统计的输入文件


hdfs dfs -mkdir /wcinput


/

6.png


并创建一个文本文件:word.txt(内容如下)


hello java

hello hadoop

hello mapreduce


7.png


在Hadoop安装目录下执行Jar包(MR的Jar放置在hadoop安装目录下)


hadoop jar ./MapReduce-1.0-SNAPSHOT.jar WordCountDirver /wcinput /wcoutput


执行Jar包的成功运行结果:


8.png


Web端可以查看到成功运行:

9.png


命令行查看/wcoutput的词频统计结果


10.png


四、报错解决


1.Hadoop:找不到或无法加载主类org.apache.hadoop.mapreduce.v2.app.MRAppMaster

11.png


解决方案:


# 输入命令 hadoop classpath


<!--先输出的结果复制到yarn-site.xml--><property><name>yarn.application.classpath</name><value>/opt/module/hadoop-3.1.3/etc/hadoop:/opt/module/hadoop-3.1.3/share/hadoop/common/lib/*:/opt/module/hadoop-3.1.3/share/hadoop/common/*:/opt/module/hadoop-3.1.3/share/hadoop/hdfs:/opt/module/hadoop-3.1.3/share/hadoop/hdfs/lib/*:/opt/module/hadoop-3.1.3/share/hadoop/hdfs/*:/opt/module/hadoop-3.1.3/share/hadoop/mapreduce/lib/*:/opt/module/hadoop-3.1.3/share/hadoop/mapreduce/*:/opt/module/hadoop-3.1.3/share/hadoop/yarn:/opt/module/hadoop-3.1.3/share/hadoop/yarn/lib/*:/opt/module/hadoop-3.1.3/share/hadoop/yarn/*
</value></property>



2.INFO ipc.Client: Retrying connect to server: 0.0.0.0/0.0.0.0:8032. Already tried 0 time(s); retry policy is RetryUpToMaximumCountWithFixedSleep(maxRetries=10, sleepTime=1000 MILLISECONDS)

12.png


原因 是:本人机器采用 伪分布式 ,且 选择启动Yarn为MapReduce作业进行资源管理和任务调度 ,然后机器有没有启动Yarn,从而出错。


解决方案

start-yarn.sh


Yarn对于分布式模式(真正由多台机器构成的集群环境)才有意义,在伪分布式环境下,Yarn其实是无法真正发挥作用的,因此,在伪分布式环境下不需要借助于Yarn为MapReduce作业进行资源管理和任务调度,而是可以直接借助于Hadoop自身内置的 mapred.LocalJobRunner 来为mapReduce作业进行资源管理和任务调度。也就是说,不启动Yarn照样可以运行MapReduce程序。


选择启动Yarn为MapReduce作业进行资源管理和任务调度的设置方式可以参考这一篇文章 


解决方案

start-yarn.sh


Yarn对于分布式模式(真正由多台机器构成的集群环境)才有意义,在伪分布式环境下,Yarn其实是无法真正发挥作用的,因此,在伪分布式环境下不需要借助于Yarn为MapReduce作业进行资源管理和任务调度,而是可以直接借助于Hadoop自身内置的 `mapred.LocalJobRunner`来为mapReduce作业进行资源管理和任务调度。也就是说,不启动Yarn照样可以运行MapReduce程序。


目录
相关文章
|
1月前
|
分布式计算 NoSQL Java
Hadoop-32 ZooKeeper 分布式锁问题 分布式锁Java实现 附带案例和实现思路代码
Hadoop-32 ZooKeeper 分布式锁问题 分布式锁Java实现 附带案例和实现思路代码
43 2
|
2月前
|
分布式计算 Hadoop Devops
Hadoop集群配置https实战案例
本文提供了一个实战案例,详细介绍了如何在Hadoop集群中配置HTTPS,包括生成私钥和证书文件、配置keystore和truststore、修改hdfs-site.xml和ssl-client.xml文件,以及重启Hadoop集群的步骤,并提供了一些常见问题的故障排除方法。
75 3
Hadoop集群配置https实战案例
|
3月前
|
存储 SQL 分布式计算
Hadoop生态系统概述:构建大数据处理与分析的基石
【8月更文挑战第25天】Hadoop生态系统为大数据处理和分析提供了强大的基础设施和工具集。通过不断扩展和优化其组件和功能,Hadoop将继续在大数据时代发挥重要作用。
|
3月前
|
Java 持续交付 项目管理
Maven是一款基于Apache许可的项目管理和构建自动化工具,在Java开发中极为流行。
Maven是一款基于Apache许可的项目管理和构建自动化工具,在Java开发中极为流行。它采用项目对象模型(POM)来描述项目,简化构建流程。Maven提供依赖管理、标准构建生命周期、插件扩展等功能,支持多模块项目及版本控制。在Java Web开发中,Maven能够自动生成项目结构、管理依赖、自动化构建流程并运行多种插件任务,如代码质量检查和单元测试。遵循Maven的最佳实践,结合持续集成工具,可以显著提升开发效率和项目质量。
52 1
|
3月前
|
机器学习/深度学习 存储 分布式计算
Hadoop与机器学习的融合:案例研究
【8月更文第28天】随着大数据技术的发展,Hadoop已经成为处理大规模数据集的重要工具。同时,机器学习作为一种数据分析方法,在各个领域都有着广泛的应用。本文将介绍如何利用Hadoop处理大规模数据集,并结合机器学习算法来挖掘有价值的信息。我们将通过一个具体的案例研究——基于用户行为数据预测用户留存率——来展开讨论。
239 0
|
4月前
|
自然语言处理 Java Maven
Maven 自动化构建
Maven自动化构建确保依赖稳定性。`bus-core-api(1.0-SNAPSHOT)`构建后,自动触发`app-web-ui`和`app-desktop-ui`的构建,两者均依赖bus-core-api的1.0快照版。 ``` 纯文本摘要: Maven自动化构建保证依赖项的稳定性:当`bus-core-api`的1.0-SNAPSHOT版本完成构建时,它会触发依赖它的`app-web-ui`和`app-desktop-ui`项目的构建,这两个项目都依赖`bus-core-api`的相同版本。
|
4月前
|
Java API Maven
Maven 自动化构建
**摘要 (Markdown 格式)**: Maven自动化构建确保依赖稳定性。当`bus-core-api` (1.0-SNAPSHOT) 构建后,依赖它的`app-web-ui`和`app-desktop-ui`(均依赖bus-core-api的1.0快照)会自动触发构建,保证与最新核心API兼容。
|
4月前
|
Java Maven
maven 工程pom依赖优化及常用命令
maven 工程pom依赖优化及常用命令
58 0
|
4月前
|
存储 分布式计算 Hadoop
阿里巴巴飞天大数据架构体系与Hadoop生态系统的深度融合:构建高效、可扩展的数据处理平台
技术持续创新:随着新技术的不断涌现和应用场景的复杂化,阿里巴巴将继续投入研发力量推动技术创新和升级换代。 生态系统更加完善:Hadoop生态系统将继续扩展和完善,为用户提供更多元化、更灵活的数据处理工具和服务。

相关实验场景

更多

推荐镜像

更多