hadoop学习|hadoop学习【10】——HDFS的shell操作

【前言】前面一直使用java api来操作hdfs做项目,一直没时间总结下HDFS的shell操作,趁项目中期休息,总结下HDFS的常用shell操作
一、HDFS的来源简介(自己的理解)


理解:因为数据量越来越大,单台服务器已经承受不了那么大的数据量,所以很自然就会想到使用多台机器共同来存放数据,但是这样就会存在多台机器中数据的管理问题,因此分布式的文件系统HDFS就诞生了,HDFS文件系统相当于一个管理者,让多台存储数据的机器在用户面前像是透明的一样,就像在操作一台存储数据的服务器一样,这里再往深入的考虑的话,就是相当于把多台存储着数据的机器封装了起来,用户不需要知道具体的数据怎么存的,存在哪几台机器上,每台机器上存储了多少数据等细节的信息,只需要知道怎么用这个文件系统即可,因为HDFS对外开放的使用接口是一样的,所以对于hadoop 升级不需要担心,因为对外的接口是一样的。
在HDFS环境中,因为涉及到多台机器,通过网络进行数据的传递,但是这样就会存在各种问题,如网络故障等,那么这个文件系统就需要具有容错能力,这个HDFS的解决方案就是采用备份的方法来解决的。
在HDFS文件系统中,对于数据来说,是一次写入多次查询的,如果写入错误,需要删除,重新上传文件,HDFS对于小文件也不适合处理,因为HDFS会对每个文件进行分块处理,每一块64M,小文件也会如此对待,这样的话,就会浪费空间。
二、常见HDFS的shell操作:
常用的操作:创建文件、删除文件、上传文件、查看文件、从HDFS文件系统中下载文件

查看文件:
查看HDFS根目录的文件
hadoop学习|hadoop学习【10】——HDFS的shell操作
文章图片

横杠的位置表示备份数量,因为文件是一个虚的东西,不需要备份。
迭代查看根目录下所有的文件:hadoop学习|hadoop学习【10】——HDFS的shell操作
文章图片


创建文件夹:hadoop fs –mkdir hdfs://localhost:9000/dir1
创建文件:hadoop fs –touchz hdfs://localhost:9000/dir1/file1
上传文件到HDFS中:hadoop fs –put /home/grid/hello hdfs://localhost:9000/dir1(如果再次执行上传任务到同一个文件夹下,会报一个文件已存在的提示,上传不上去;如果上传的目的地是一个不存在的路径时,新文件上传是可以成功的,文件名是目标路径的名称,很容易在这里犯错)
查看文件内容:hadoop fs –text hdfs://localhost:9000/dir1/file1(如果上传的文件太大,就不要在HDFS里面查看内容,可能会卡死)
从HDFS文件系统中下载文件到本地:hadoop fs –get hdfs://localhost:9000/dir1/file1
删除HDFS文件系统中的文件:hadoop fs –rmr hdfs://localhost:9000/dir1
三、对于不长用的shell命令的摸索:
hadoop学习|hadoop学习【10】——HDFS的shell操作
文章图片

对于里面比较重要的命令:-du/dus/count为例进行说明
-du:
hadoop学习|hadoop学习【10】——HDFS的shell操作
文章图片

通过查看帮助信息可以看到这个命令的作用:显示符合文件模式要求的文件下的各个文件的空间大小,跟UNIX下的du -sb 是一样的,输出格式就是文件的全路径加上文件的空间大小(这里其实不是这样的,当我使用这个命令的时候,其实显示的是反的,不过也无所谓了)
hadoop学习|hadoop学习【10】——HDFS的shell操作
文章图片

-dus:
hadoop学习|hadoop学习【10】——HDFS的shell操作
文章图片

显示所给出目录的空间大小,不显示出其中每个文件的大小信息
hadoop学习|hadoop学习【10】——HDFS的shell操作
文章图片




-count:
hadoop学习|hadoop学习【10】——HDFS的shell操作
文章图片

从解释来看,是显示给定的目录下的目录数目、文件数目、目录空间大小
【hadoop学习|hadoop学习【10】——HDFS的shell操作】hadoop学习|hadoop学习【10】——HDFS的shell操作
文章图片


    推荐阅读