Java技术栈 —— Hadoop入门(二)
- 一、用MapReduce对统计单词个数
- 1.1 项目流程
- 1.2 可能遇到的问题
- 1.3 代码勘误
- 1.4 总结
一、用MapReduce对统计单词个数
1.1 项目流程
(1) 上传jar包。
(2) 上传words.txt
文件。
(3) 用hadoop执行jar包的代码,对words.txt
进行分析。
参考文章或视频链接 |
---|
重点看这篇文章 [1] 《Hadoop实战——MapReduce对英文单词文本进行统计和排序(超详细教学,算法分析)》- CSDN |
[2] Hadoop实战项目源码集合 - gitee |
[3] HDFS文件系统的根目录和用户主目录解析 - CSDN |
1.2 可能遇到的问题
(1) 无法Download结果文件。 这个问题看参考文章[1]-[3],有两个点要注意,注意你的hosts文件有没有配对,以及有没有开启
dfs.webhdfs.enabled
。
(2) 删除不了hadoop下的文件夹。 这个问题的解决方案看本节参考文章[4],不过我要提醒你的是,他那篇文章里的
summer
对应与你当前的Linux用户,我这里就叫programmer
,然后重启hadoop,dr.who
是谁可以看参考文章[5]。
(3) 更改用户后还是无法删除文件夹。 解决方案看本节参考文章[6],先关闭安全模式再删除。
# 进入安全模式 hdfs dfsadmin -safemode enter # 退出安全模式 hdfs dfsadmin -safemode leave
(4) 这里面的input文件夹和output文件夹在Linux系统上没搜到,是怎么回事?
当然搜不到,这并不是你自己OS的真实文件夹,而是存储在Hadoop的HDFS上,我下载的是3.3.6版本的hadoop,请检查你的hdfs-site.xml
文件的${dfs.datanode.data.dir}
配置项,注意!不同版本的hadoop这些配置项名字可能不一样,所以一切以官方文档为准,然而我并没有找到hdfs-default.xml
,这些值可能已经默认存储了,具体见参考文章[7]-[9]。
这些是我的OS上的文件夹与文件位置。
1.2 参考文章或视频链接 |
---|
[1] Unable to open/download files in HDFS using Hadoop Web UI - stackoverflow |
[2] 记一次HDFS Web报错Couldn‘t preview the file. NetworkError: Failed to execute ‘send‘ on ‘XMLHttpRequest‘ - CSDN |
[3] HDFS Web报错Couldn‘t preview the file. - CSDN |
[4] 《Hadoop常见错误及解决方案、Permission denied: user=dr.who, access=WRITE, inode=“/“:summer:supergroup:drwxr-xr-x》 |
[5] 《Permission denied. user=dr.who is not the owner of inode=/tmp》 |
[6] 《Name node is in safe mode》 |
[7] Where does HDFS store it’s files - stackoverflow |
[8] hdfs-default.xml - hadoop |
[9] 《过时的属性:Deprecated Properties》 - 博客园 |
1.3 代码勘误
本章节代码作者有个地方写错了,注意下即可。
//WordReduce.java文件里应该这样写
System.out.println(new Date().toGMTString() + ":" + key + "出现了" + sum);
1.4 总结
MapReduce也没那么神神秘秘(世界上没有事物是不可认识的,只有还有待认识的事物),总结起来就还是四个字,分工+协作,或者可以理解为民主集中制的基本原则之一:“个别酝酿,集体决定”。
Map
是拆分开来,各自计算各自思考,而Reduce
就是将结果集中起来,看看大家提出的意见到底如何,并对结果按照具体需求进行排序。在MapReduce这个思想上,共产党人走在这帮搞技术的老外的前面。