一、实验目的
1、掌握HDFS文件上传与下载的具体命令。
2、掌握HDFS文件管理的基本操作。
二、HDFSShell操作学习
1.准备工作
(1)启动Hadoop集群
start-all.sh
(2)-help:输入这个命令参数的帮助信息
hadoop fs -help rm
(3)查看所有命令
hadoop fs
(4) 创建/sanguo文件夹
cd /opt/software/hadoop-2.6.5 ##按照自己文件的路径去进入hadoop文件夹
hadoop fs -mkdir /sanguo
我们查看namenode节点端口来查看是否成功创建,结果如下
Namenode主节点的端口(http://192.168.36.128:50070)
Namenode:管理文件系统的命名空间和元数据,同时也控制着文件数据块的分布
2、上传命令学习
(1)-moveFromLocal:从本地剪切粘贴到HDFS
(注意:该命令剪切粘贴后本地创建的文件就没有了)
vim shuguo.txt
输入:shuguo
hadoop fs -moveFromLocal ./shuguo.txt /sanguo
查看sanguo目录下的文件
查看HDFS中的具体内容
查看本地文件
(2)-copyFromLocal:从本地文件系统中拷贝文件到HDFS路径去
(因为是复制所有本地文件还存在,创建后可以使用命令ll查看)
vim weiguo.txt
输入:weiguo
hadoop fs -copyFromLocal weiguo.txt /sanguo
创建成功:在namenode主节点的端口可以验证
(3)-put:等同于-copyFromLocal,生产环境更习惯用put
vim wuguo.txt
输入:wuguo
hadoop fs -put ./wuguo.txt /sanguo
成功上传:
(4)-appendToFile:追加一个文件到已经存在的文件末尾
vim liubei.txt
输入:liubei
adoop fs -appendToFile liubei.txt /sanguo/shuguo.txt
可以使用cat命令查看一下shuguo.txt文件的内容是否发生改变
(可以看到liubei已经添加到HDFS根目录的sanguo文件夹中的shuguo.txt文件中了)
3、下载命令的学习
(1)-copyToLocal:从HDFS拷贝到本地
hadoop fs -copyToLocal /sanguo/shuguo.txt ./
##./:表示将文件复制到当前工作目录(也即是执行命令的目录
ll
(2)-get:等同于-copyToLocal,生产环境更习惯用get
hadoop fs -get /sanguo/shuguo.txt ./shuguo2.txt
4、学习HDFS的直接操作
(1)-ls: 显示目录信息
hadoop fs -ls /sanguo
(2)-cat:显示文件内容
hadoop fs -cat /sanguo/shuguo.txt
(3)-chgrp、-chmod、-chown命令
-chgrp、-chmod、-chown:Linux文件系统中的用法一样,修改文件所属权限, -chown更改文件拥有者与所在组,-chmod修改文件权限
查看修改前的文件拥有者、所属者及文件权限
hadoop fs -ls /sanguo/shuguo.txt
rw-r--r-- :
第一个字符: - 表示这是一个普通文件更改文件所有者(如果是目录,则为 d)。
接下来的九个字符分成三组,每组三个字符,表示不同用户类型的权限:
rw-:文件所有者(user)root 具有读(r)和写(w)权限,但没有执行(x)权限。
r--:文件所属组(group)supergroup 只有读(r)权限,没有写(w)和执行(x)权限。
r--:其他用户(others)也只有读(r)权限,没有写(w)和执行(x)权限。
1:文件占用的块数,通常是 1,表示文件在 HDFS 中占用一个块
root:该文件的所有者是 root 用户
supergroup:该文件的所属组是 supergroup,这意味着属于这个组的用户将具有相应的组权限
将文件的所有者和所有属改为aliyun且修改文件权限为666
hadoop fs -chown aliyun:aliyun /sanguo/shuguo.txt
##将文件的所有者和所有属改为aliyun
hadoop fs -chmod 666 /sanguo/shuguo.txt
##修改文件权限为666
hadoop fs -ls /sanguo/shuguo.txt
修改后的文件:
rw- :具有读(r)和写(w)权限,但没有执行(x)权限[权限即666]
(4)-mkdir:创建路径
hadoop fs -mkdir /jinguo
(5)-cp:从HDFS的一个路径拷贝到HDFS的另一个路径
hadoop fs -cp /sanguo/shuguo.txt /jinguo
(6)-mv:在HDFS目录中移动文件
移动wuguo.txt和weiguo.txt到文件夹jinguo
hadoop fs -mv /sanguo/wuguo.txt /jinguo
hadoop fs -mv /sanguo/weiguo.txt /jinguo
(7)-tail:显示一个文件的末尾1kb的数据
hadoop fs -tail /jinguo/shuguo.txt
(8)-rm:删除文件或文件夹
hadoop fs -rm /sanguo/shuguo.txt
(9)-rm -r:递归删除目录及目录里面内容
hadoop fs -rm -r /sanguo
## rm r :是递归删除命令,用于删除目录及其子目录和文件
(10)-du:统计文件夹的大小信息(字节大小)
显示 /jinguo 目录的总磁盘使用量,每项都将以可读格式显示:
hadoop fs -du -s -h /jinguo
(28表示文件大小为28字节)
-s:表示汇总(summarize)模式。此选项会显示指定目录的总使用量,而不是列出该目录下每个文件和子目录的使用情况
-h:表示以可读性更高的格式(human-readable)显示文件大小,例如以 KB、MB、GB 等单位显示
列出 /jinguo 目录下每个文件和子目录的磁盘使用量,每项都将以可读格式显示:
hadoop fs -du -h /jinguo
可读格式没有显示单位原因:在某些情况下,Hadoop 的 hadoop fs -du 命令可能不会自动为小于 1KB 的数字添加单位(如 B、KB、MB 等)。因此,如果目录的大小非常小(例如小于 1KB,如 28 字节),它可能只以字节数的形式显示,而没有后缀单位
(11)-setrep:设置HDFS中文件的副本数量
hadoop fs -setrep 10 /jinguo/shuguo.txt
注意:这里设置的副本数只是记录在NameNode的元数据中,是否真的会有这么多副本,还得看DataNode的数量。因为目前只有3台设备,最多也就3个副本,只有节点数的增加到10台时,副本数才能达到10。
三、实验练习
(1)实验要求
**1.**请在本地创建一个文件(文件名为学号-姓名,例0001-zhangsan.txt),并将文件上传至集群中的/test目录(需新建对应目录)下,在网页端展示文件信息截图。
**2.**请将该文件的拥有者与所在组改为aliyun,文件权限改为所有用户都可读可写,文件副本数量改为3份,在网页端展示文件信息截图。
(2)实验操作
1.1 创建/test文件夹
hadoop fs -mkdir /test
1.2 在本地创建文件
touch 20230114-lutaiyu.txt
ll
1.3 将文件上传至集群中的/test目录
有三种命令可以实现:
①hadoop fs -put 20230114-lutaiyu.txt /test
②hadoop fs -moveFromLocal 20230114-lutaiyu.txt /test
③hadoop fs -copyFromLocal 20230114-lutaiyu.txt /test
这里演示命令①:
2.1 修改文件的拥有者与所在组改为aliyun
hadoop fs -chown aliyun:aliyun /test/20230114-lutaiyu.txt
2.2 文件权限改为所有用户都可读可写
hadoop fs -chmod 666 /test/20230114-lutaiyu.txt
2.3 文件副本数量改为3份
hadoop fs -setrep 3 /test/20230114-lutaiyu.txt
截图如下:
2.4 关闭hadoop集群
stop-all.sh
四、实验总结
*本实验通过使用 HDFS 文件系统对目录和文件两大结构类型进行了上传与下载的具体命令的基本操作,帮助初学者进一步掌握和*巩固 HDFS 文件管理的*基本*操作,为之后的学习奠定基础。初学者可能会觉得甚是繁琐,命令比较多,熟能生巧即可。
离群索居者,不是神明就是野兽
版权归原作者 一整天不想干活 所有, 如有侵权,请联系我们删除。