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 文件权限 文件 # 修改文件的权限