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

news/2024/5/20 2:57:55 标签: hdfs, 大数据, mapreduce, linux, hadoop

文章目录

  • 一、实验环境
  • 二、实验内容
    • 利用Hadoop提供的Shell命令完成以下任务
    • 利用HDFS的Java API编程实现以下任务功能
    • 编写MapReduce程序实现以下任务功能
  • 出现的问题


一、实验环境

  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编译版本过低,修改即可。


http://www.niftyadmin.cn/n/1771219.html

相关文章

ctf python大法好_CTF中RSA攻击方法总结

RSA近期因为一些比赛以及其他原因,总结了一些RSA方面的东西,于是在这里与大家分享,希望大家能有所收获,如有不当之处敬请批评指正。0x01 前言这里就不讨论数论的基础了,进行RSA的题目解答,至少要懂得基本的…

【大数据技术】实验3:熟悉常用的Hive操作

文章目录一、实验环境二、实验内容安装Hive环境HiveQL练习词频统计出现的问题一、实验环境 操作系统:Linux(与实验1保持一致);Hadoop版本:3.3.1;JDK版本:1.8;Hive版本:3…

overflow 不隐藏_css轻松搞定显示隐藏的效果

在网页中我们经常看到鼠标划上时会显示一些网页中一开始没有的东西,例如二级菜单,或者鼠标划上图片时会显示一些淡入淡出的效果问:这是怎么原理实现的?其实就是显示和隐藏问:那么这个现实和隐藏如何实现呢?…

ora 00900 已编译但有错误_ORA-00265 要求实例恢复, 无法设置 ARCHIVELOG 模式

在更改数据库归档模式时碰到ORA-00265错误SQL> alter database archivelog;ORA-00265: 要求例程恢复,无法设置 ARCHIVELOG 模式查阅资料,解决方法如下:SQL> shutdown immediateORA-01109: 数据库未打开已经卸载数据库。ORACLE 例程已经…

【运维】迁移Git项目到新的地址

【运维】迁移Git项目到新的地址 包含所有分支 及其提交记录等 迁移项目 1 创建新的空项目 newProject https://127.0.0.1/new/newProject.git 2 克隆老项目 git clone --mirror https://127.0.0.2/old/oldProject.git 进入老项目目录 cd oldProject 3将老项目更改远程地址…

【大数据技术】实验4:熟悉Spark基础编程

文章目录一、实验环境二、实验内容安装Spark环境Spark编程练习:使用scala语言编写独立应用程序:出现的问题一、实验环境 操作系统:Linux(与实验1保持一致);Hadoop版本:3.3.1;Spark版本&#xf…

java对接物联网api对接_java接口对接——调用别人接口推送数据

/*** 调用XXX市接口推送银行开户信息* ywguid 即为 projectguid*exception/throws [违例类型] [违例说明]*see[类、类#方法、类#成员]*/public voidpushToSZOpenAcountApplyinfo(String projectguid) {try{YzyhEntityServiceImpl yzyhEntityServiceImpl newYzyhEntityServiceIm…

es scroll 时间_ElasticSearch scroll分页查询

from sizefrom size不能大于10000, 适用小数据量的查询,总量大于10000时这种方法就不适用了。scroll_id分页查询通过游标的方式查,无查询上限,实际是一种分页机制。from elasticsearch import Elasticsearchclass MyElastic:def __init__(se…