Hadoop Part 3 - 通过Shell命令访问HDFS

文章导航

«返回课程汇总页面

Hadoop Part 3 - 通过Shell命令访问HDFS

【版本】

当前版本号v20210423

版本修改说明
v20210423修正步骤30 文件夹错误
v20210328初始化版本

【实验名称】

Hadoop Part 3 - 通过Shell命令访问HDFS

【实验目的】

【实验环境】

【实验资源】

下载链接:https://pan.baidu.com/s/1ghde86wcK6pwg1fdSSWg0w
提取码:v3wv

【实验参考】

hadoop fs [generic options]
	[-appendToFile <localsrc> ... <dst>]
	[-cat [-ignoreCrc] <src> ...]
	[-checksum <src> ...]
	[-chgrp [-R] GROUP PATH...]
	[-chmod [-R] <MODE[,MODE]... | OCTALMODE> PATH...]
	[-chown [-R] [OWNER][:[GROUP]] PATH...]
	[-copyFromLocal [-f] [-p] [-l] <localsrc> ... <dst>]
	[-copyToLocal [-p] [-ignoreCrc] [-crc] <src> ... <localdst>]
	[-count [-q] [-h] <path> ...]
	[-cp [-f] [-p | -p[topax]] <src> ... <dst>]
	[-createSnapshot <snapshotDir> [<snapshotName>]]
	[-deleteSnapshot <snapshotDir> <snapshotName>]
	[-df [-h] [<path> ...]]
	[-du [-s] [-h] <path> ...]
	[-expunge]
	[-find <path> ... <expression> ...]
	[-get [-p] [-ignoreCrc] [-crc] <src> ... <localdst>]
	[-getfacl [-R] <path>]
	[-getfattr [-R] {-n name | -d} [-e en] <path>]
	[-getmerge [-nl] <src> <localdst>]
	[-help [cmd ...]]
	[-ls [-d] [-h] [-R] [<path> ...]]
	[-mkdir [-p] <path> ...]
	[-moveFromLocal <localsrc> ... <dst>]
	[-moveToLocal <src> <localdst>]
	[-mv <src> ... <dst>]
	[-put [-f] [-p] [-l] <localsrc> ... <dst>]
	[-renameSnapshot <snapshotDir> <oldName> <newName>]
	[-rm [-f] [-r|-R] [-skipTrash] <src> ...]
	[-rmdir [--ignore-fail-on-non-empty] <dir> ...]
	[-setfacl [-R] [{-b|-k} {-m|-x <acl_spec>} <path>]|[--set <acl_spec> <path>]]
	[-setfattr {-n name [-v value] | -x name} <path>]
	[-setrep [-R] [-w] <rep> <path> ...]
	[-stat [format] <path> ...]
	[-tail [-f] <file>]
	[-test -[defsz] <path>]
	[-text [-ignoreCrc] <src> ...]
	[-touchz <path> ...]
	[-truncate [-w] <length> <path> ...]
	[-usage [cmd ...]]
enter - 进入安全模式
leave - 强制NameNode离开安全模式
get   - 返回安全模式是否开启的信息
wait  - 等待,一直到安全模式结束。
#在某个目录开启快照功能
hdfs dfsadmin -allowSnapshot <snapshotDir>
#在某个目录关闭快照功能
hdfs dfsadmin -disallowSnapshot <snapshotDir>
#创建快照
hdfs dfs -createSnapshot <snapshotDir> [<snapshotName>]
#删除快照
hdfs dfs -deleteSnapshot <snapshotDir> <snapshotName>
#重命名快照
hdfs dfs -renameSnapshot <snapshotDir> <oldName> <newName>
hdfs dfsadmin -setQuota <quota> <dirname>...<dirname>
hdfs dfsadmin -setSpaceQuota <quota> <dirname>...<dirname>
hdfs dfsadmin -report
hdfs dfsadmin -printTopology

【实验步骤】

  1. 启动NodeA、NodeB、NodeC3个节点的虚拟机,使用hadoop用户登录 NodeA,启动 Hadoop。
start-hdp.sh
  1. 查看 hdfs 的机架拓扑。
hdfs dfsadmin -printTopology
  1. 查看 put 命令的使用方法和参数
hdfs dfs -help put
  1. 在用户目录下创建一个文本文件。注意替换为你的学号。
cd ~
echo "uploaded by 你的学号后4位" >uploader.txt
ls
  1. 使用hdfs dfs -put命令上传本地~/uploader.txt文件到 HDFS 的根目录/下。

  2. 查看hdfs dfs -mkdir的用法,并在 HDFS 上创建/poetry文件夹。

  3. 从实验资源下载haizi1.txt到本地~目录。

  4. 使用hdfs dfs -moveFromLocal或者hdfs dfs -put命令,上传haizi1.txt到 HDFS 的/poetry目录下。

  5. 查看 HDFS 的/poetry目录,确认是否上传成功。

hdfs dfs -ls -h /poetry
  1. 使用hdfs dfs -cat命令输出HDFS 的/poetry/haizi1.txt文件的内容。

  2. 使用hdfs dfs -cp命令把 HDFS 的/poetry/haizi1.txt复制为/poetry/FacingTheSea.txt

  3. 使用hdfs dfs -checksum命令分别输出/poetry/haizi1.txt/poetry/FacingTheSea.txt。比较两者的校验码是否一致。

  4. 使用hdfs dfs -appendToFile命令把本地的~/uploader.txt的内容追加到 HDFS 的/poetry/FacingTheSea.txt

  5. 使用hdfs dfs -tail命令输出 HDFS 的/poetry/FacingTheSea.txt的内容。

  6. 使用hdfs dfs -rm命令移除 HDFS 的/poetry/haizi1.txt,并查看/poetry目录下的文件,确认是否删除成功。

  7. 使用hdfs dfs -mv命令移动 HDFS 的/poetry/FacingTheSea.txt到根目录下。

  8. 使用hdfs dfs -rmdir命令删除 HDFS 的/poetry目录。

  9. 使用hdfs dfs -find找出 HDFS 根目录下的所有.txt结尾的文件。

  10. 使用hdfs dfs -ls -R /列出 HDFS 根目录下的所有文件。

  11. 使用命令让 HDFS 进入安全模式

hdfs dfsadmin -safemode enter
  1. 尝试创建一个文件,观察 HDFS 提示信息。
hdfs dfs -touchz /test.txt
  1. 获取安全模式的状态。
hdfs dfsadmin -safemode get
  1. 使用相应命令退出安全模式。

  2. 在 HDFS 创建目录/snapshot+你学号后4位,注意替换为你的学号。

  3. 在该目录上开启快照(snapshot)功能,注意替换为你的学号。

hdfs dfsadmin -allowSnapshot /snapshot+你学号后4位
  1. 上传本地的haizi1.txt文件到/snapshot+你学号后4位目录

  2. 创建名为v1的快照,注意替换为你的学号。

hdfs dfs -createSnapshot /snapshot+你学号后4位 v1
  1. 使用hdfs dfs -appendToFile把本地的haizi2.txt追加到/snapshot+你学号后4位/haizi1.txt文件。

  2. 使用diff命令对比快照修改前后的内容。

diff <(hdfs dfs -cat /snapshot+你学号后4位/.snapshot/v1/haizi1.txt) <(hdfs dfs -cat /snapshot+你学号后4位/haizi1.txt)
  1. 在 HDFS 上创建目录/quota+你学号后4位,注意替换为你的学号。

  2. 设置文件/目录数量配额为2,注意替换为你的学号。

hdfs dfsadmin -setQuota 2 /quota+你学号后4位
  1. 尝试在/quota+你学号后4位目录下创建2个文件,观察会有什么反馈消息。