环境准备:
Hadoop2.6.0
IDEA
maven3.5.4
MapReduce在本地已经可以正常运行,具体见:
MapReduce之wordcount案例(环境搭建及案例实施)https://blog.csdn.net/m0_54925305/article/details/120155693
https://blog.csdn.net/m0_54925305/article/details/120155693
案例实施:
1.在原pom.xml依赖中添加集群依赖:
<build> <plugins> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-compiler-plugin</artifactId> <version>3.5</version> <configuration> <source>1.8</source> <target>1.8</target> </configuration> </plugin> <plugin> <artifactId>maven-assembly-plugin </artifactId> <configuration> <descriptorRefs> <descriptorRef>jar-with-dependencies</descriptorRef> </descriptorRefs> <archive> <manifest> <mainClass>org.example.mapreduce.wordcount.WordCountDriver</mainClass> </manifest> </archive> </configuration> <executions> <execution> <id>make-assembly</id> <phase>package</phase> <goals> <goal>single</goal> </goals> </execution> </executions> </plugin> </plugins> </build>
2.修改WordCountDriver代码:
原本地代码为:
修改为集群代码:
3.生成jar包:
注:点击package生成集群运行的依赖jar包
4.找到本地生成的jar包:
成功运行完成后如图:
在这里找到jar包:
注:上面短的为不带依赖的jar包,长的为带依赖的jar包,在集群中是有很多依赖的,所以只需要导入不带依赖的jar包即可
5.拷贝并重命名jar包:
将jar包拷贝到桌面并重命名为wc.jar
6.启动集群:(此处将以完全分布式作为案例)
7.将jar包上传到集群上:
此处使用Xshell,Xftp传输jar包
8. 虚拟机查看jar包是否传入:
9.将数据文件上传到HDFS上:
(1)在HDFS根目录下新建input目录:
(2)上传本地HelloWord.txt数据文件至HDFS的input目录下 :
注:此处依旧使用Xshell,Xftp传输数据文件
(3)将上传到虚拟机/input目录下的HelloWord.txt上传到HDFS上:
(4)在虚拟机浏览器地址localhost:50070找到/input目录下的HelloWord.txt
注:如图即为上传数据文件至HDFS成功
10.运行jar包程序:
(1)先把wordcountDriver的全驱动类名copy出来:
(2)运行:
注:使用hadoop jar 命令 + (jar包在当前目录下无需加路径)jar包名 + 全驱动类名 + 输入路径 + 输出路径 #此处jar包根据自身实际情况进行修改
运行过程注意观察这几处字样,即为运行成功:
11.检测运行结果:
(1)将结果上传至HDFS:
(2)在终端查看:
(3)在虚拟机浏览器HDFS端查看:
原数据为:
发布MapReduce程序在集群上运行之wordcount案例实施完成