我也是刚入行大数据不久的萌新,我分享的陋闻可能只能打扰比我更年轻的新人,打扰啦。
(1)首先上一个mapreduce方法的流程图。
这是一个统计文本单词出现次数的方法,非常符合hadoop生态圈分而治之的智慧思路,上图中的 splitting和mapping阶段可以在不同的主机或者虚拟机上运行,如果是分布式的话,运行的速度会非常快。reducing阶段是将相同的单词统计成一个模块,最后合起来。稍后将介绍在虚拟机上的实现方法。
(2)在虚拟机上创建.txt文件
如果没有现成的数据集的话,就用我上图中写的,我们把文本写到一个.txt文件中。确保虚拟机中配置好了hadoop环境变量,hdfs和yarn各种配置文件都编辑好了,到时候运行的时候才不会报错。
[root@master ~]# cd /opt/rh/hadoop-3.2.2/
[root@master hadoop-3.2.2]# ls
bin etc hdfs include lib libexec LICENSE.txt logs NOTICE.txt README.txt sbin share tmp wcinput wcoutput
[root@master hadoop-3.2.2]# mkdir wordcountfile
[root@master hadoop-3.2.2]# ls
bin etc hdfs include lib libexec LICENSE.txt logs NOTICE.txt README.txt sbin share tmp wcinput wcoutput wordcountfile
[root@master hadoop-3.2.2]# cd wordcountfile
[root@master wordcountfile]# vi wordfile.txt
[root@master wordcountfile]# cat wordfile.txt
i like python
python like spark
Spark link hadoop
[root@master wordcountfile]#
这样我们就在hadoop主文件目录下创建好了,wordfile.txt文件。接下来我们敲入命令,运行mapreduce方法。
(3)打开虚拟机集群,start-all.sh,调用hadoop下的mapreduce方法中的wordcount jar包,指定结果文件保存路径,统计每个单词出现的次数。
[root@master hadoop-3.2.2]# bin/hadoop jar share/hadoop/mapreduce/hadoop-mapreduce-examples-3.2.2.jar wordcount file:///opt/rh/hadoop-3.2.2/wordcountfile/wordfile.txt file:///opt/rh/hadoop-3.2.2/wordoutputfile
需要关闭虚拟机防火墙,systemctl stop firewalld.service,防火墙的存在会影响集群内部主机的通信。如果没有指定输出输入文件完整的路径,到时候就会报没有将文件上传到hdfs的错误。点击运行。
2021-04-03 21:54:23,391 INFO mapreduce.Job: map 0% reduce 0%
2021-04-03 21:54:29,850 INFO mapreduce.Job: map 100% reduce 0%
2021-04-03 21:54:38,973 INFO mapreduce.Job: map 100% reduce 100%
2021-04-03 21:54:40,002 INFO mapreduce.Job: Job job_1617457620069_0002 completed successfully
2021-04-03 21:54:40,169 INFO mapreduce.Job: Counters: 54
看到这个说明wordcount程序运行成功。我们看看结果文件。
drwxr-xr-x. 2 root root 26 Apr 3 21:33 wordcountfile
drwxr-xr-x. 2 root root 88 Apr 3 21:58 wordoutputfile
[root@master hadoop-3.2.2]# cd wordoutputfile/
[root@master wordoutputfile]# ls
part-r-00000 _SUCCESS
我们打开part-r-00000文件,查看我们的结果。
[root@master wordoutputfile]# cat part-r-00000
Spark 1
hadoop 1
i 1
like 2
link 1
python 2
spark 1
[root@master wordoutputfile]#
和上图的运行结果是一样的。执行的时候可能会报错。
但是不要放弃,遇到什么问题就上网去搜,也可以问我嘛。虽然我也不咋会。