HDFS练习

HDFS练习

1. 实验目的:

1) 掌握Hadoop中HDFS的Shell命令操作

2) 掌握Hadoop中HDFS的API操作

2. 实验原理:

1) HDFS是hadoop平台的核心组成之一

2) HDFS的访问方式有多种,可通过web访问,也可通过shell方式或者API方式访问。

3) 基本操作有:对文件的读、写、追加、删除;新建文件夹、删除文件夹等;还可显示文件及文件夹的属性。

3. 实验准备:

1) 实验一中已经完成配置的伪分布式hadoop环境。

2) 项目1、项目2,可以直接使用上述环境

3) 项目3有可能需要配置自己的虚拟机网络连接模式

4. 实验内容:

1) 项目1:HDFS常见命令练习

可以在终端输入hdfs dfs -help command查询命令用法),执行并查看结果。

(1) 列出HDFS当前用户家目录下的文件及文件夹:hdfs dfs -ls /
在这里插入图片描述

(2) 列出HDFS文件下名为directory的文件夹中的文件: hdfs dfs -ls sum
在这里插入图片描述

(3) 上传文件,将本地目录file1文件上传到HDFS上并重命名为file2:hdfs dfs -put file1 file2
在这里插入图片描述

(4) 下载文件,将HDFS中的file2文件复制到本地系统并命名为file1: hdfs dfs -get file2 file1
在这里插入图片描述

(5) 查看文件,查看HDFS下file1文件中的内容:hdfs dfs -cat file1
在这里插入图片描述

(6) 删除文档,删除HDFS下名为file1的文件:hdfs dfs -rm file1
在这里插入图片描述

(7) 在HDFS根路径下建立新目录,名为directory: hdfs dfs -mkdir hdfs根目录/directory
在这里插入图片描述

(8)本地文件复制到HDFS(注意与put的区别):hdfs dfs -copyFromLocal src dst
在这里插入图片描述

(9)本地文件移动到HDFS: hdfs dfs -moveFromLocal src dst
在这里插入图片描述

(10)文件或文件夹复制: hdfs dfs -cp src dst
在这里插入图片描述

(11)文件或文件夹的移动: hdfs dfs -mv src dst
在这里插入图片描述

(12)copyToLocal 复制文件到本地: hdfs dfs -copyToLocal src dst
在这里插入图片描述

(13) touchz 创建一个空文件file: hdfs dfs -touchz file
在这里插入图片描述

(14)追加到文件末尾的指令: hdfs dfs -appendToFile local.txt text.txt
在这里插入图片描述

2) 项目2:HDFS命令的综合运用实践

(1) 创建一个文件file1,查看file1是否创建成功,往file1内写一些内容。
在这里插入图片描述

(2) 在HDFS上创建一个文件夹folder1,把file1上传到folder1中。
在这里插入图片描述

(3) 查看是否上传成功,成功后查看file1的内容。
在这里插入图片描述

(4) 把file1下载到本地,查看file1的内容。
在这里插入图片描述

(5) 把folder1删除,并查看是否删除成功。
在这里插入图片描述

(6) 最后把本地的file1删除
在这里插入图片描述

【拓展与思考】思考题1、思考题2、思考题3必做,其余选做

 思考题1(必做):对项目1、项目2命令行操作的结果,是否能在Web访问模式下看到?如果能请截图举例说明;如果不能,请查清原因并确认结果。
在这里插入图片描述

 思考题2(必做):hdfs dfs -ls -R 某个HDFS上的目录该命令中“R”参数的作用是什么?请截图并给出相应的说明。
递归显示目录
在这里插入图片描述

 思考题3(必做):如果已经上传了某个本地A文件到HDFS上,并在HDFS中命名为file1,
在这里插入图片描述

	那再次上传A文件并在HDFS中命名为file1是否可行(路径一致)?

不行
在这里插入图片描述

如果换另一个本地文件B上传到HDFS中也命名为file1是否可行(路径一致)?
不行
在这里插入图片描述

 思考题4(必做):如果操作对象是文件夹,如何使用命令完成和文件类似的操作?

(1) 列出HDFS文件下名为directory的文件夹中的文件: hdfs dfs -ls directory
在这里插入图片描述

(2) 上传文件,将本地目录folder1文件夹上传到HDFS上并重命名为folder2:hdfs dfs -put folder1 folder2
在这里插入图片描述

(3) 下载文件,将HDFS中的folder2文件复制到本地系统并命名为floder1:hdfs dfs -get floder2 floder1
在这里插入图片描述

(4) 递归删除文件及目录,删除HDFS下名为floder1的文件: hdfs dfs -rm -r floder1
在这里插入图片描述

(5) 删除空目录,删除HDFS下floder2 文件中的内容:hdfs dfs -rmdir floder1
在这里插入图片描述

(6) 在HDFS根路径下建立新目录,名为directory:hdfs dfs -mkdir hdfs根目录/directory
在这里插入图片描述

思考题5(选做,可加分保命): hdfs dfs -copyFromLocal 与 hdfs dfs -put 有什么区别?
Hdfs dfs -copyFormLocal 只可以将本地文件拷贝到HDFS文件中

hdfs dfs -copyFromLocal和hdfs dfs -put都是HDFS命令,用于将本地文件复制到HDFS集群中。它们的作用是相同的,都可以将本地文件拷贝到HDFS中,但是它们在使用上还是有一些区别的。
hdfs dfs -copyFromLocal命令只能将本地文件拷贝到HDFS文件系统中,而不能将一个HDFS文件系统中的文件复制到另一个HDFS文件系统中。
hdfs dfs -put命令可以将本地文件拷贝到HDFS文件系统中,也可以将一个HDFS文件系统中的文件复制到另一个HDFS文件系统中。

思考题6(选做,可加分保命): linux中每一个命令其实都是对应程序的执行结果,那HDFS命令对应的程序具体在哪些文件中定义呢?

HDFS命令是指用于操作Hadoop分布式文件系统的命令,这些命令的实现程序一般都在Hadoop软件包中的bin目录下。具体地说,HDFS命令对应的程序通常是由Java编写的可执行文件,文件名通常以hdfs-开头,例如hdfs dfs、hdfs fsck、hdfs namenode等。
这些程序的代码实现通常位于Hadoop源代码的src目录下的hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/hdfs/tools目录下,其中包含了各种HDFS命令对应的Java类的实现代码。例如,hdfs dfs命令对应的程序实现代码通常在hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/hdfs/tools/DFSAdmin.java文件中。
总之,HDFS命令对应的程序实现代码都是由Java编写的,并且通常位于Hadoop软件包的bin目录和源代码的src目录下。

项目3:HDFS的API使用实践**

(1) 改造虚拟机网络

参考我的另一篇博客:VMware NAT虚拟网络改造

(2) 改造Hadoop配置

【实操】将hadoop涉及到的5个进程的localhost都调整为新设定的IP,也可以使用/etc/hosts中设定一个名称,方便后续快速更改(这样做更加正规)

step_1 先查看有哪些文件使用了localhost
在这里插入图片描述

【实操】step_2-1 在关闭Hadoop所有服务的前提下修改相关配置文件(yarn-site.xml)

在这里插入图片描述
【实操】step_2-2 在关闭Hadoop所有服务的前提下修改相关配置文件(hdfs-site.xml)

在这里插入图片描述
step_2-3 在关闭Hadoop所有服务的前提下修改相关配置文件(core-site.xml)

在这里插入图片描述
【实操】step_2-4 最后在检查下是否还有遗漏

在这里插入图片描述
【实操】step_2-5 启动Hadoop,确认相关JVM进程正常工作
在这里插入图片描述
step_2-6 简单测试功能是否可用

在这里插入图片描述

(3) 编写代码 ==> 要完成文件的 创建/追加/修改

【实操】只提供eclipse演示与IDEA演示,具体细节请参考Hadoop_Liang的博客,下方有链接

1)eclipse 配置Maven
1. 配置开发环境

(1)我们建议,可先采用非Maven的方式完成开发,因为这样可以规避许多的网络访问问题。
(2)如果非Maven方式完成后,再尝试去做Maven模式。

2. 参考博客,编写代码

(1)非Maven工程API访问HDFS:https://blog.csdn.net/qq_42881421/article/details/83001401
(2)Maven工程API访问HDFS:https://blog.csdn.net/qq_42881421/article/details/100762022

2)IDEA 配置Maven
1. 配置开发环境

需要提前下载Maven:https://pan.baidu.com/s/1VhtAlf2Xf9RM6GT7gVNVIw?pwd=sko1

2. 参考博客,编写代码

Maven工程API访问HDFS:https://blog.csdn.net/qq_42881421/article/details/123674818?ops_request_misc=%257B%2522request%255Fid%2522%253A%2522168109399816800225525350%2522%252C%2522scm%2522%253A%252220140713.130102334.pc%255Fblog.%2522%257D&request_id=168109399816800225525350&biz_id=0&utm_medium=distribute.pc_search_result.none-task-blog-2blogfirst_rank_ecpm_v1~rank_v31_ecpm-3-123674818-null-null.article_score_rank_blog&utm_term=api&spm=1018.2226.3001.4450

【注】
① Maven的相关配置和下载请耐心完成
② 如果遇到海外网络不能访问的问题,请参考实验1介绍的配置国内镜像源的方法解决
③ 其实为了方便,建议直接使用IDEA完成;后续课程《大数据内存计算》(spark)也要使用IDEA

  • 3
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值