想要使用hdfs文件系统,就先要启动Hadoop集群。
启动集群:
start-dfs.sh
关闭集群:
stop-dfs.sh
其实hdfs作为分布式存储的文件系统,其构成和Linux文件系统构成差不多一样,均是以“/”作为根目录的组织形式。
在以Hadoop用户作为Linux本地用户使用hdfs文件系统时,因为两者的命令结构十分相似,这里我们该如何区分呢?
在学习hdfs文件系统基础操作之后,你会发现hdfs文件系统的操作和Linux文件系统的操作十分相似,两者之间为数不多的区别就是hdfs文件系统在使用命令名时,需要在命令名前加上“-”。
hadoop@node1:~$ hadoop fs -ls /
Found 1 items
drwxr-xr-x - hadoop supergroup 0 2023-11-16 23:34 /home
hadoop@node1:~$ hdfs dfs -ls /
Found 1 items
drwxr-xr-x - hadoop supergroup 0 2023-11-16 23:34 /home
【解释】:-R选项会将当前目录下的所有文件关系罗列出来,就像二叉树的遍历一样。
hadoop@node1:~$ hdfs dfs -ls -R /
drwxr-xr-x - hadoop supergroup 0 2023-11-18 10:27 /home
drwxr-xr-x - hadoop supergroup 0 2023-11-18 10:27 /home/code1
drwxr-xr-x - hadoop supergroup 0 2023-11-18 10:27 /home/code1/thing
drwxr-xr-x - hadoop supergroup 0 2023-11-18 10:27 /home/code2
drwxr-xr-x - hadoop supergroup 0 2023-11-18 10:27 /home/code3
Linux——>hdfs
【解释】:这里将本地Hadoop用户根目录下的text.txt文件,上传到hdfs文件系统根目录下。
hadoop@node1:~$ ls
text.txt
hadoop@node1:~$ hdfs dfs -put file:///home/hadoop/text.txt hdfs://node1:8020/
hadoop@node1:~$ hdfs dfs -ls /
Found 2 items
drwxr-xr-x - hadoop supergroup 0 2023-11-18 10:27 /home
-rw-r--r-- 3 hadoop supergroup 22 2023-11-18 10:38 /text.txt
【解释】:这里查看hdfs文件系统根目录下text.txt的文件内容
hadoop@node1:~$ hdfs dfs -cat hdfs://node1:8020/text.txt
yanghaitao
hahaha
666
但是对于hadoop来说,通常都是处理几十个G的大数据,这里我们可以借助管道符more进行操作查看。more:Linux中,文件内容进行翻页的命令:
hadoop@node1:~$ hdfs dfs -cat hdfs://node1:8020/code.txt
不写协议头
上传文件
从Linux文件系统——>hdfs文件系统
yanghaitao
hahaha
666
yanghaitao
hahaha
666
yanghaitao
hahaha
666
yanghaitao
hahaha
666
yanghaitao
hahaha
666
yanghaitao
hahaha
666
yanghaitao
hahaha
666
[more]……
hdfs——>Linux
在hadoop本地创建一个文件夹mkdir YHT,将从hdfs下载的文件存储到该文件夹中。
hadoop@node1:~$ hdfs dfs -get hdfs://node1:8020/text.txt ./YHT
hadoop@node1:~$ cd YHT
hadoop@node1:~/YHT$ ls
text.txt
hdfs——>hdfs
【解释】:为了方便,这里我们删除hdfs://node1:8020/home目录下的所有文件,然后将hdfs根目录下code.txt的文件复制到hdfs根目录下的home目录内:
hadoop@node1:~$ hdfs dfs -cp hdfs://node1:8020/code.txt hdfs://node1:8020/home
hadoop@node1:~$ hdfs dfs -ls hdfs://node1:8020/home
Found 1 items
-rw-r--r-- 3 hadoop supergroup 667 2023-11-18 11:17 hdfs://node1:8020/home/code.txt
还有,我们在复制的同时,实现文件的重命名工作:
【操作解释】:此处将hdfs://node1:8020/text.txt复制到hdfs://node1:8020/home/new.txt,并将文件名改为new.txt
hadoop@node1:~$ hdfs dfs -cp hdfs://node1:8020/text.txt hdfs://node1:8020/home/new.txt
hadoop@node1:~$ hdfs dfs -ls hdfs://node1:8020/home
Found 2 items
-rw-r--r-- 3 hadoop supergroup 667 2023-11-18 11:17 hdfs://node1:8020/home/code.txt
-rw-r--r-- 3 hadoop supergroup 22 2023-11-18 11:22 hdfs://node1:8020/home/new.txt
整个hdfs文件系统,文件的修改只支持两种,那就是删除和追加。
Linux——>hdfs
在这里,我们将Hadoop用户根目录下的append.txt文件,追加到hdfs文件系统的根目录下text.txt的文件中。
hadoop@node1:~$ hdfs dfs -cat hdfs://node1:8020/text.txt
yanghaitao
hahaha
666
hadoop@node1:~$ cat append.txt
I'm append things.
from hadoop to hdfs://node1:8020/text.txt
hadoop@node1:~$ hdfs dfs -appendToFile append.txt hdfs://node1:8020/text.txt
hadoop@node1:~$ hdfs dfs -cat hdfs://node1:8020/text.txt
yanghaitao
hahaha
666
I'm append things.
from hadoop to hdfs://node1:8020/text.txt
hdfs——>hdfs
hadoop@node1:~$ hdfs dfs -ls hdfs://node1:8020/
Found 2 items
drwxr-xr-x - hadoop supergroup 0 2023-11-18 11:22 hdfs://node1:8020/home
-rw-r--r-- 3 hadoop supergroup 83 2023-11-18 11:33 hdfs://node1:8020/text.txt
hadoop@node1:~$ hdfs dfs -mv hdfs://node1:8020/text.txt hdfs://node1:8020/home/
hadoop@node1:~$ hdfs dfs -ls hdfs://node1:8020/home
Found 3 items
-rw-r--r-- 3 hadoop supergroup 667 2023-11-18 11:17 hdfs://node1:8020/home/code.txt
-rw-r--r-- 3 hadoop supergroup 22 2023-11-18 11:22 hdfs://node1:8020/home/new.txt
-rw-r--r-- 3 hadoop supergroup 83 2023-11-18 11:33 hdfs://node1:8020/home/text.txt
·实际操作演示
【解释】:删除hdfs://node1:8020/home文件夹
hadoop@node1:~$ hdfs dfs -rm -r hdfs://node1:8020/home/
Deleted hdfs://node1:8020/home
hadoop@node1:~$ hdfs dfs -ls hdfs://node1:8020/
vim /export/server/hadoop/etc/hadoop/core-site.xml
fs.trash.interval
1440
fs.trash.checkpoint.interval
120
回收站地址:
hdfs://node1:8020/user/hadoop/.Trash/Current
在hdfs://node1:8020/home目录下创建名为thing.txt的文件,删除演示:
# 删除hdfs文件系统home目录下的thing.txt文件
hadoop@node1:~$ hdfs dfs -ls hdfs://node1:8020/home/
Found 1 items
-rw-r--r-- 3 hadoop supergroup 0 2023-11-18 12:27
hdfs://node1:8020/home/thing.txt
hadoop@node1:~$ hdfs dfs -rm -r hdfs://node1:8020/home/thing.txt
2023-11-18 12:28:08,439 INFO fs.TrashPolicyDefault:Moved:'hdfs://node1:8020/home/thing.txt' to trash at: hdfs://node1:8020/user/hadoop/.Trash/Current/home/thing.txt
# 进入回收,可以看到刚刚被删除的thing.txt文件
hadoop@node1:~$ hdfs dfs -ls hdfs://node1:8020/user/hadoop/.Trash/Current
Found 1 items
drwx------ - hadoop supergroup 0 2023-11-18 12:28 hdfs://node1:8020/user/hadoop/.Trash/Current/home