hdfs的shell操作

查看文件

hdfs dfs -ls /

这是第一个命令,就是查看文件,我们知道hdfs是分布式文件存贮系统,他的主要作用就是进行文件操作,这个命令就会列出当前hdfs所存贮的文件,执行以下发现。

我们看到有两个文件,一个是test ,一个是tmp,当然了,如果你之前从来没有上传过,是什么都不会显示的,随着后面你上传之后,再执行这个命令就可以发现有了。

那么问题来了,我们可以查看文件下面的所有文件吗?当然可以,执行下面的命令就可以了

hdfs dfs -ls -R /test

比如上面的命令就是我们想要看到test文件下面都有哪些文件,执行结果如下

我们可以看到test文件下面有output文件,output文件下面还有其他的文件。

当然了,如果文件下面有很多文件,如果全部显示出来可能会很多,我们就想test目录的下级目录有啥,你可以执行下面命令

 hdfs dfs -ls -h /test

于是,就只列出来了test下面的一级目录。

所以这个命令,就是 后面加上 想要访问的目录就可以了,注意,一切的操作都是以根目录为基础,比如我们执行下面的命令就是错误的

hdfs dfs -ls test #这是错误的命令

为啥呢?因为没有了根目录,会报错找不到文件

一定要从 斜杠"/"开始逐级写目录。

除了命令的方式,还可以提供给大家一个web的访问方式

在浏览器输入主节点的IP加上端口号,例如我的IP是192.168.200.11

然后加上端口号50070,然后点击utilitie下面的Browse the file system 就可以了。

 

 

从图中我们看到,和命令的方式是一样的,点击目录,还可以目录下面的文件。

创建文件

这个命令是创建文件

hdfs dfs -mkdir /abc

比如上面的命令就是,我们想要在根目录下面创建abc文件,就直接写就行了

然后我们用上面的查看文件命令查看一下

就会发现多了一个abc文件

那如果我们想同时创建多级目录呢,加上-p参数即可

hdfs dfs -mkdir -p /abc/mm/ff

比如上面的命令,我们想在abc下面同时创建mm文件,然后在mm文件下面创建ff文件

再用查看命令查看一下

会发现同时创建了。

上传文件

我们如果想把本地的文件上传到hdfs上改怎么操作呢

hdfs dfs -put words /abc

比如上面的命令,就是把我node1服务器上的文件words上传到hdfs的abc文件下,所以大家知道了,第一个文件目录是本地的,第二个是hdfs的目录,同样记得,hdfs的目录要从根目录开始往下写

本地有一个words文件,然后执行上传命令

然后查看

 

我们发现,我们得文件就有了。

然后上面我们介绍了查看文件,那如果我们想查看文件里面的内容,用下面的命令

hdfs dfs -cat /abc/words

上面的命令就是查看我们刚上传的words文件里面的内容

可以看到打印出来了words里面的内容。

接下来我们有一个需求,如果我们想同时上传多个文件呢?

hdfs dfs -put abc1.txt abc2.txt /abc

比如上面的命令,我同时把abc1.txt 和abc2.txt上传到 /abc 下面取,我这就上传了两个文件,实际上,你想上传多少个文件,就直接就行了,hdfs会默认最后一个目录是hdfs需要上传到的目录

执行完,我们看一下

我们会发现两个文件同时被上传了.

文件下载

比如我们刚才在hdfs上面刚上传上去的words文件,我们想要把他下载到本地

hdfs dfs -get /abc/words /home/hadoop/zz

上面的命令就是把hdfs的abc目录下面的words文件下载到本地/home/hadoop/zz文件下面

那如果hdfs文件abc下面有两个文件分别为abc1.txt 和abc2.txt ,我们想同时下载两个文件,并且下载到本地的时候自动将两个文件合并

 hdfs dfs -getmerge /abc/abc1.txt /abc/abc2.txt /home/hadoop/abc3.txt

我们使用的命令是-getmerge ,然后跟上需要下载的文件,这里我指定了两个文件,时间可指定多个,只要是hdfs的上的文件就好了,他会默认最后一个目录为本地目录,然后我们指定下载的abc1.txt 和abc2.txt 下载完之后自动合并为abc3.txt

文件内容会合并哦!

移动文件

移动文件

我们把abc目录下面的abc1.txt移动到/abc/mm下面

hdfs dfs -mv /abc/abc1.txt /abc/mm

这个命令也可以当场改名字命令

比如我们把刚才移动的abc1.txt改个名字叫123.txt

hdfs dfs -mv /abc/mm/abc1.txt /abc/mm/123.txt

复制命令

比如我们把刚才的/abc/mm/123.txt给复制到/abc下面

hdfs dfs -cp /abc/mm/123.txt /abc

删除命令

我们把刚才/abc目录下面的123.txt文件给删除掉

hdfs dfs -rm -r /abc/123.txt

会发现文件已经被删除掉了。

友情提示:本命令慎用,不然会删除到跑路,哈哈~

总结

上面的命令就是最常使用的命令了,其他的命令,有兴趣的可以自行试一下,基本上不会用。

命令列表

hdfs dfs -tail -f # 监听文件

hdfs dfs chmod 文件权限 文件 # 修改文件的权限 
posted @ 2020-11-07 20:34  Oops!#  阅读(307)  评论(0编辑  收藏  举报