当前位置:   article > 正文

【大数据技术】实验2:熟悉常用的HDFS操作和基于MapReduce的词频统计_hdfs词频统计

hdfs词频统计


一、实验环境

  1. 操作系统:Linux(建议Ubuntu16.04或Ubuntu18.04);
  2. Hadoop版本:3.3.1;
  3. JDK版本:1.8;
  4. Java IDE:Eclipse

二、实验内容

利用Hadoop提供的Shell命令完成以下任务

(1)查看hadoop版本号
在这里插入图片描述
(2)查看hadoop集群磁盘使用情况
在这里插入图片描述
(3)向HDFS系统目录”/src”上传任意内容的文本文件
在这里插入图片描述
(4)查看该文本文件,并输出到终端中
在这里插入图片描述
(5)将查看结果重定向到本地文件
在这里插入图片描述
(6)将HDFS系统/src目录下的文本文件复制到HDFS系统/src2目录下
在这里插入图片描述
(7)查看/src目录和/src2目录下所有文件大小
在这里插入图片描述
(8)从HDFS系统/src目录和/src2目录中下载所有文件到本地/home/hadoop目录
在这里插入图片描述
(9)显示HDFS系统根目录/下所有文件和文件夹
在这里插入图片描述
(10)将/src2目录下文件重命名
在这里插入图片描述
(11)将/src和/src2目录下文件一起移动到hdfs系统/newsrc目录下
在这里插入图片描述
(12)在hdfs的/newsrc目录下创建一个0字节的空文件
在这里插入图片描述
(13)查看hdfs集群的名称节点状态
在这里插入图片描述

利用HDFS的Java API编程实现以下任务功能

(1) 从本地向HDFS中上传任意文本文件,如果指定的文件在HDFS中已经存在则覆盖,由用户来指定是复制操作还是剪切操作;
提示:FileSystem类提供exists函数判断文件是否存在;提供copyFromLocalFile函数复制文件,该函数可以接受四个参数,第一个参数表示是否删除源文件,第二个参数表示是否覆盖,后两个参数为源路径和hdfs路径
要求:文字配合截图说明执行前后效果
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
(2) 从HDFS中下载指定文件,如果本地文件与要下载的文件名称相同,则自动对下载的文件重命名(文件名添加_0, _1, …);
提示:FileSystem类提供copyToLocalFile函数用于下载文件
要求:文字配合截图说明执行前后效果
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
第一次执行:
在这里插入图片描述
在这里插入图片描述
第二次执行:
在这里插入图片描述
在这里插入图片描述
第三次执行:
在这里插入图片描述
在这里插入图片描述
(3)从HDFS中读取指定文件输出文件内容,文件内容要求不止一行
要求:文字配合截图说明执行前后效果
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
(4)给定HDFS中某一个目录,输出该目录下所有文件的大小、权限、路径等信息、如果该文件是目录,则递归输出该目录下所有文件相关信息;
提示:FileSystem类提供listStatus函数返回FileStatus对象,该对象提供各种方法返回对应信息
要求:文字配合截图说明执行前后效果
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
(5)删除HDFS中指定文件
要求:文字配合截图说明执行前后效果
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

编写MapReduce程序实现以下任务功能

(1)自行在网上搜索一篇英文短文,编写MapReduce程序,完成词频统计。要求给出代码及注释,程序运行结果截图
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
(2)对于两个输入文件,即文件A和文件B,请编写MapReduce程序,对两个文件进行合并,并剔除其中重复的内容,得到一个新的输出文件C。下面是输入文件和输出文件的一个样例供参考。要求在代码中给出注释说明,并给出程序运行结果截图。
输入文件A的样例如下:
20170101 x
20170102 y
20170103 x
20170104 y
20170105 z
20170106 x
输入文件B的样例如下:
20170101 y
20170102 y
20170103 x
20170104 z
20170105 y
根据输入文件A和B合并得到的输出文件C的样例如下:
20170101 x
20170101 y
20170102 y
20170103 x
20170104 y
20170104 z
20170105 y
20170105 z
20170106 x
数据去重的最终目标是让原始数据中出现次数超过一次的数据在输出文件中只出现一次。由于shuffle过程会有合并相同key值记录的过程,会想到将不同文件中相同内容数据的Key设置成一样的,即是Map处理后是一样的,然后把交给Reduce,无论这个数据的value-list是怎么样,只要在最终结果输出它的key就行了。
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述


出现的问题

1.xshell中ssh服务器登录不上。
2.运行java程序时eclipse报错:Exception in thread “main” java.net.ConnectException: Call From Leiquanyou_Master001/192.168.122.101 to Leiquanyou_Master001:9000 failed on connection exception: java.net.ConnectException: 拒绝连接;
3.运行jar包时报错:Exception in thread “main” java.lang.UnsupportedClassVersionError;

解决办法:
1.可以尝试使用共享文件夹的方法实现主机到虚拟机的文件传输。
https://www.cnblogs.com/skyheaving/p/12286513.html
2.启动hdfs。
3.jdk的版本和class版本不一致,检查发现eclipse编译版本过低,修改即可。

声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:【wpsshop博客】
推荐阅读
  

闽ICP备14008679号