必须用XShell连接虚拟机Linux,执行以下操作:
1) 执行start-dfs.sh启动HDFS集群
2)执行hadoop fs查看Hadoop Shell帮助信息
3)执行hadoop fs -ls / 查看HDFS分布式系统根目录下当前所有文件和目录信息,再执行hadoop fs -ls -R /递归查看HDFS根目录和所有各级子目录下的全部内容
4)执行hadoop fs -mkdir /test 在HDFS分布式系统根目录下创建test子目录,再执行hadoop fs -ls / 查看一下刚创建的test子目录;
执行hadoop fs -mkdir /test1 在HDFS分布式系统根目录下创建test1子目录,再执行hadoop fs -ls / 查看一下刚创建的test1子目录
5)执行cd切换到/root目录,ls命令查看应该有个word.txt文件,执行hadoop fs -put word.txt /test 把Linux本地文件系统的word.txt文件上传到HDFS的/test目
录,再执行hadoop fs -ls /test或执行hadoop fs -ls -R / 查看一下刚上传的word.txt文件
6)执行hadoop fs -cat /test/word.txt 或执行hadoop fs -text /test/word.txt 查看HDFS的/test目录下的word.txt文件中的内容
7)执行hadoop fs -touchz /emptyFile 在HDFS的根目录创建一个空文件,再执行hadoop fs -cat /emptyFile查看该空文件应该没有任何内容
8)执行vi new.txt,随便输入内容比如aaaaaaaaaaaaaaaa后保存,再执行hadoop fs -appendToFile new.txt /emptyFile,把Linux本地的文件new.txt的内容追加写
入到HDFS的/emptyFile文件中,再执行hadoop fs -cat /emptyFile查看追加的结果(本步骤可以多次执行查看追加写操作的效果)
9)执行hadoop fs -mv /emptyFile /test 将HDFS上的/emptyFile文件移动到一个存在的/test目录,再执行hadoop fs -ls /test 查看的mptyFile文件是否已经移动到/test目录
10)再执行hadoop fs -mv /test/emptyFile /test/notEmptyFile ,移动到一个不存在的notEmptyFile目录,执行结果是将HDFS上的这个emptyFile文件重命名为notEmptyFile(把一个文件移动到一个不存在的目录,效果相当于给文件重命名)
11)执行hadoop fs -cp /test/notEmptyFile /test1 将HDFS上的/test/notEmptyFile 文件复制到一个存在的/test1目录,再执行hadoop fs -ls /test 查看的notEmptyFile 文件是否已经复制到/test1目录
12)执行hadoop fs -cp /test/notEmptyFile /test2 将HDFS上的/test/notEmptyFile 文件复制到一个不存在的/test2目录,再执行hadoop fs -ls / 查看会发现在HDFS的根目录多了一个test2文件(test2文件是notEmptyFile 文件的拷贝)
13)执行cd切换到/root目录,ls命令查看应该有个word.txt文件,执行命令hadoop fs -moveFromLocal word.txt /test1将本地文件word.txt移动到HDFS的/test1目录(本地文件word.txt会被删除,ls命令查看没有该文件)
14)执行cd切换到/root目录,执行hadoop fs -get /test/notEmptyFile /root 将HDFS的文件/test/notEmptyFile下载到本地文件系统/root目录下,执行ls命令查看Linux的/root目录下多了一个notEmptyFile文件
15) 执行hadoop fs -cp /test/word.txt /test1/ 将/test/word.txt 复制到/test1目录,在执行hadoop fs -ls /test1查看新复制的文件word.txt
16)执行hadoop fs -rm /test/* 删除HDFS的/test目录下的全部文件,再执行hadoop fs -rmdir /test删除空的/test目录,最后执行hadoop fs -ls / 查看HDFS根目录下已经没有test目录
17)执行命令hadoop fs -put -p /root / 将本地文件系统的整个/root目录内容全部上传到HDFS的根目录上
18)向HDFS文件系统上传一个较大文件(建议大小超过一个数据块128MB),查询该文件在HDFS文件系统上分布在那些DataNode上
a) 执行cd命令切换到/root目录,执行ls -l命令查看应该有个 hadoop-2.6.0-cdh5.7.0.tar.gz压缩包文件,文件大小大约是297M,再执行 hadoop fs -put hadoop-2.6.0-cdh5.7.0.tar.gz / 将该Hadoop压缩包文件上传到HDFS的根目录
b) 执行 hadoop fs -ls / 查看一下是否HDFS根目录已经上传了文件hadoop-2.6.0-cdh5.7.0.tar.gz
c)执行命令 hadoop fsck /hadoop-2.6.0-cdh5.7.0.tar.gz -files -blocks -locations 查询该文件的数据块上分布在HDFS的哪些DataNode节点上 ,该命令的输出如下:
Connecting to namenode via http://master:50070
FSCK started by root (auth:SIMPLE) from /192.168.56.10 for path /hadoop-2.6.0-cdh5.7.0.tar.gz at Thu Oct 08 16:32:06 CST 2020
/hadoop-2.6.0-cdh5.7.0.tar.gz 311585484 bytes, 3 block(s): OK
0. BP-659583651-192.168.56.10-1599660205928:blk_1073741826_1002 len=134217728 Live_repl=1 [DatanodeInfoWithStorage[192.168.56.10:50010,DS-0868c06f-0958-49f1-9c4a-35070dcdcff1,DISK]]
1. BP-659583651-192.168.56.10-1599660205928:blk_1073741827_1003 len=134217728 Live_repl=1 [DatanodeInfoWithStorage[192.168.56.10:50010,DS-0868c06f-0958-49f1-9c4a-35070dcdcff1,DISK]]
2. BP-659583651-192.168.56.10-1599660205928:blk_1073741828_1004 len=43150028 Live_repl=1 [DatanodeInfoWithStorage[192.168.56.10:50010,DS-0868c06f-0958-49f1-9c4a-35070dcdcff1,DISK]]
Status: HEALTHY
Total size: 311585484 B
Total dirs: 0
Total files: 1
Total symlinks: 0
Total blocks (validated): 3 (avg. block size 103861828 B)
Minimally replicated blocks: 3 (100.0 %)
Over-replicated blocks: 0 (0.0 %)
Under-replicated blocks: 0 (0.0 %)
Mis-replicated blocks: 0 (0.0 %)
Default replication factor: 1
Average block replication: 1.0
Corrupt blocks: 0
Missing replicas: 0 (0.0 %)
Number of data-nodes: 1
Number of racks: 1
FSCK ended at Thu Oct 08 16:32:06 CST 2020 in 3 milliseconds
The filesystem under path '/hadoop-2.6.0-cdh5.7.0.tar.gz' is HEALTHY
d)cd /root/hdfs/tmp/dfs/data/current/BP-659583651-192.168.56.10-1599660205928/current/finalized/subdir0/subdir0 进入DataNode本地文件系统保存数据块文件的目录, 执行ls -l命令查看三个数据块文件:
-rw-r--r--. 1 root root 1191 9月 9 22:04 blk_1073741825
-rw-r--r--. 1 root root 19 9月 9 22:04 blk_1073741825_1001.meta
-rw-r--r--. 1 root root 134217728 10月 8 16:31 blk_1073741826
-rw-r--r--. 1 root root 1048583 10月 8 16:31 blk_1073741826_1002.meta
-rw-r--r--. 1 root root 134217728 10月 8 16:31 blk_1073741827
-rw-r--r--. 1 root root 1048583 10月 8 16:31 blk_1073741827_1003.meta
-rw-r--r--. 1 root root 43150028 10月 8 16:31 blk_1073741828
-rw-r--r--. 1 root root 337119 10月 8 16:31 blk_1073741828_1004.meta
e)打开http://192.168.56.10:50070/ 进入Utilities,查看HDFS上之前上传的hadoop-2.6.0-cdh5.7.0.tar.gz文件的属性信息,其中显示该文件有几个数据块,如下图所示:
具体解释如下:
311585484Byte(HDFS上的一个大文件大小)%134217728Byte(128M Byte 是一个数据块的大小)=2 余43150028Byte
件)
所以该文件共占了三个数据块,每个数据块都只有一个副本 因为伪分布式 只有一个DataNode
134217728Byte(128M)
134217728Byte(128M)
43150028Byte
每个数据块都是DataNode这台计算机上的本地操作系统Linux的文件系统XFS上存放的二进制数据文件
blk_1073741826
blk_1073741827
blk_1073741828