赞
踩
HDFS的常用命令
接下来我们来了解一下一些常用的文件系统操作,例如:读取文件,新建目录,移动文件,删除数据,列出目录,等等。你可以在命令行中输入hadoop fs -help
命令读取每个命令的详细帮助文件。
现在请跟着我一起,在Linux
环境下对Hadoop
进行文件系统操作,来体验一下Hadoop
的使用。
新建目录:
在本地和hadoop
中分别创建文件夹:
本地创建目录:
- root@evassh-12039904:~# mkdir /develop
- root@evassh-12039904:~# mkdir /develop/input
- root@evassh-12039904:~# mkdir /develop/output
hadoop
创建目录:
- root@evassh-12039904:~# start-dfs.sh
-
- Starting namenodes on [localhost]
- localhost: Warning: Permanently added 'localhost' (ECDSA) to the list of known hosts.
- localhost: starting namenode, logging to /usr/local/hadoop/logs/hadoop-root-namenode-evassh-12039904.out
- localhost: Warning: Permanently added 'localhost' (ECDSA) to the list of known hosts.
- localhost: starting datanode, logging to /usr/local/hadoop/logs/hadoop-root-datanode-evassh-12039904.out
- Starting secondary namenodes [0.0.0.0]
- 0.0.0.0: Warning: Permanently added '0.0.0.0' (ECDSA) to the list of known hosts.
- 0.0.0.0: starting secondarynamenode, logging to /usr/local/hadoop/logs/hadoop-root-secondarynamenode-evassh-12039904.out
-
-
- root@evassh-12039904:~# hadoop fs -mkdir /usr
- root@evassh-12039904:~# hadoop fs -mkdir /usr/input
- root@evassh-12039904:~# hadoop fs -mkdir /usr/output
上传文件至dfs:
切换到本地input
目录下,创建文件并添加数据:hello hadoop
。
- root@evassh-12039904:~# cd /develop/input/
- root@evassh-12039904:/develop/input# touch helloworld.txt
- root@evassh-12039904:/develop/input# vi helloworld.txt
将该文件上传至hadoop
:使用hadoop fs -put <要上传的文件> <
hdfs目录>
命令。
root@evassh-12039904:/develop/input# hadoop fs -put helloworld.txt /usr/output
查看上传到HDFS
的文件:
hadoop fs -cat /usr/output/helloworld.txt
移动与删除
列出HDFS
中的目录和文件:
- root@evassh-12039904:/develop/input# hadoop fs -ls /usr/hadoop
- ls: `/usr/hadoop': No such file or directory
- root@evassh-12039904:/develop/input# hadoop fs -ls /user/hadoop
- root@evassh-12039904:/develop/input# hadoop fs -ls /
- Found 2 items
- drwxr-xr-x - root supergroup 0 2017-10-17 07:21 /user
- drwxr-xr-x - root supergroup 0 2022-07-26 07:00 /usr
- root@evassh-12039904:/develop/input# hadoop fs -ls /usr
- Found 2 items
- drwxr-xr-x - root supergroup 0 2022-07-26 07:00 /usr/input
- drwxr-xr-x - root supergroup 0 2022-07-26 07:04 /usr/output
- root@evassh-12039904:/develop/input# hadoop fs -ls /usr/output
- Found 1 items
- -rw-r--r-- 1 root supergroup 15 2022-07-26 07:04 /usr/output/helloworld.txt
将helloworld.txt
移动到根目录;
- root@evassh-12039904:/develop/input# hadoop fs -mv /usr/output/helloworld.txt /
- root@evassh-12039904:/develop/input# hadoop fs -ls /
- Found 3 items
- -rw-r--r-- 1 root supergroup 15 2022-07-26 07:04 /helloworld.txt
- drwxr-xr-x - root supergroup 0 2017-10-17 07:21 /user
- drwxr-xr-x - root supergroup 0 2022-07-26 07:00 /usr
删除helloworld.txt
;
- root@evassh-12039904:/develop/input# hadoop fs -rm /helloworld.txt
- 22/07/26 07:10:47 INFO fs.TrashPolicyDefault: Namenode trash configuration: Deletion interval = 0 minutes, Emptier interval = 0 minutes.
- Deleted /helloworld.txt
- root@evassh-12039904:/develop/input# hadoop fs -ls /
- Found 2 items
- drwxr-xr-x - root supergroup 0 2017-10-17 07:21 /user
- drwxr-xr-x - root supergroup 0 2022-07-26 07:00 /usr
hadoop fs -rm
命令只能删除文件或者空文件夹,如果要用这个命令去删除非空文件夹就会非常麻烦。
和Linux
中递归删除一致,我们在-rm
之后加入一个-r
即可,用-rmr
也可。
下表列出了Hadoop
常用的shell
命令,在之后使用的时候可以作为参考。
选项名称 | 使用格式 | 含义 |
---|---|---|
-ls | -ls <路径> | 查看指定路径的当前目录结构 |
- |-lsr |-lsr <路径> | 递归查看指定路径的目录结构|
- |-du |-du <路径> | 统计目录下个文件大小|
- |-dus |-dus <路径> | 汇总统计目录下文件(夹)大小|
- |-count| -count [-q] <路径> | 统计文件(夹)数量|
- |-mv |-mv <源路径> <目的路径> | 移动|
- |-cp |-cp <源路径> <目的路径> | 复制|
- |-rm |-rm [-skipTrash] <路径> | 删除文件/空白文件夹|
- |-rmr |-rmr [-skipTrash] <路径> | 递归删除|
- |-put |-put <多个 linux 上的文件> <hdfs 路径> | 上传文件|
- |-copyFromLocal| -copyFromLocal <多个 linux 上的文件><hdfs 路径> | 从本地复制|
- |-moveFromLocal |-moveFromLocal <多个 linux 上的文件><hdfs 路径> | 从本地移动|
- |-getmerge |-getmerge <源路径> <linux 路径> | 合并到本地|
- |-cat |-cat <hdfs 路径> | 查看文件内容|
- |-text |-text <hdfs 路径> | 查看文件内容|
- |-copyToLocal |-copyToLocal [-ignoreCrc] [-crc] [hdfs 源路径] [linux 目的路径] | 从HDFS复制到本地|
- |-moveToLocal |-moveToLocal [-crc] <hdfs 源路径> <linux目的路径> | 从HDFS移动到本地|
- |-mkdir |-mkdir <hdfs 路径> | 创建空白文件夹|
- |-setrep | -setrep [-R] [-w] <副本数> <路径> | 修改副本数量|
- |-touchz | -touchz <文件路径> | 创建空白文件|

HDFS
中创建/usr/output/
文件夹;hello.txt
文件并添加内容:“HDFS的块比磁盘的块大,其目的是为了最小化寻址开销。
”;hello.txt
上传至HDFS
的/usr/output/
目录下;HDFS
的/user/hadoop
目录;Hadoop
上的文件hello.txt
从HDFS
复制到本地/usr/local
目录- root@evassh-12039904:/develop/input# touch hello.txt
- root@evassh-12039904:/develop/input# vi hello.txt
- root@evassh-12039904:/develop/input# hadoop fs -put hello.txt /usr/output
- root@evassh-12039904:/develop/input# hadoop fs -ls /usr/output
- Found 1 items
- -rw-r--r-- 1 root supergroup 74 2022-07-26 07:22 /usr/output/hello.txt
- root@evassh-12039904:/develop/input# hadoop fs -rm -r /user/hadoop
- 22/07/26 07:22:52 INFO fs.TrashPolicyDefault: Namenode trash configuration: Deletion interval = 0 minutes, Emptier interval = 0 minutes.
- Deleted /user/hadoop
- root@evassh-12039904:/develop/input# hadoop fs -get /usr/output/hello.txt /usr/local
- root@evassh-12039904:/develop/input# ls /usr/local
- bin etc games hadoop hello.txt include lib man sbin share src
- root@evassh-12039904:/develop/input#
完整代码
- pwd
- 回车
- cd /
- 回车
- mkdir /develop
- 回车
- mkdir /dev
- 回车
- mkdir /develop/input
- 回车
- mkdir /develop/output
- 回车
- start-dfs.sh
- 回车
- hadoop fs -mkdir /usr
- 回车
- hadoop fs -mkdir /usr/input
- 回车
- hadoop fs -mkdir /usr/output
- 回车
- hadoop fs -ls /
- 回车
- hadoop fs -ls /usr
- 回车
- cd /dev
- 回车
- cd /develop/input
- 回车
- touch helloworld.txt
- 回车
- vim helloworld.txt
- 回车
- hello hadoop
- 退出 :wq
- hadoop fs -put helloworld.txt /usr/output
- 回车
- hadoop fs -cat /usr/output/helloworld.txt
- 回车
- hadoop fs -ls /user/hadoop
- 回车
- hadoop fs -ls /
- 回车
- hadoop fs -ls /usr
- 回车
- hadoop fs -ls /user
- 回车
- hadoop fs -mv /usr/output/helloworld.txt /
- 回车
- hadoop fs -ls /
- 回车
- hadoop fs -rm /helloworld.txt
- 回车
- hadoop fs -mkdir /usr/output
- 回车
- touch hello.txt
- 回车
- vim hello.txt
- 回车
- HDFS 的块比磁盘的块大,其目的是为了最小化寻址开销。
- 退出 wq
- hadoop fs -put hello.txt /usr/output
- 回车
- hadoop fs -ls /usr/output
- 回车
- hadoop fs -rm -r /user/hadoop
- 回车
- hadoop fs -get /usr/output/hello.txt /usr/local
- 回车
- ls /usr/local

Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。