Hadoop的Shell操作
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Hadoop的Shell操作相关的知识,希望对你有一定的参考价值。
Hadoop shell命令操作,输入hadoop回车后可以发现如图所示:
常用的命令有:
hadoop namenode -format 这个是启动Hadoop之前格式化文件系统时使用的命令。
hadoop dfsadmin 这是Hadoop的管理命令,我们输入hadoop dfsadmin回车后可以看到详细命令如下图:
hadoop dfsadmin常用的命令有:
1):hadoop dfsadmin -report 查看Hadoop的运行状态
2):hadoop dfsadmin -safemode enter | leave | get | wait 设置Hadoop的安全模式(安全模式下不允许对文件进行上传和修改操作)
3):hadoop dfsadmin -refreshNodes 刷新节点(重新读取hosts和exclude文件,使新的结点和退出集群的节点能够被NameNode重新识别,这个命令在新增节点或注销节点时使用)
4):hadoop dfsadmin -help 查看命令帮助,如:hadoop dfsadmin -help safemode。
hadoop fsck 检查hadoop文件系统的健康状态;查看文件所在的数据块;删除坏掉的块;查找缺失的块,输入hadoop fsck 如下:
hadoop fsck命令的例子:
hadoop fsck /lavimer/liao.txt -file -blocks 查看文件所在块和健康状态,结果如下:
hadoop balancer 磁盘均衡。
hadoop jar 运行jar包,例如:hadoop jar liao.jar 参数1 参数2
hadoop archive 文件归档,这个命令非常有用,hadoop可以用这个命令来解决处理众多小文件的问题。
例如:hadoop archive -archiveName liao.har -p /usr / 把/usr目录下的所有文件归档打包到/目录下(这是hadoop的根目录)
查看归档后har包的内部结构,使用 hadoop fs -lsr /liao.har命令,如图:
如果要查看归档后的文件更详细的内容,可以使用:hadoop fs -lsr har:///liao.har(三个斜杠),结果如下:
下面介绍hadoop中最重要的一种shell命令,即对HDFS的shell操作命令!
既然HDFS是存取数据的分布式文件系统,那么对HDFS的操作,就是对文件系统的基本操作,比如文件的创建、修改、删除、修改权限等,文件夹的创建、删除、重命名等。对HDFS的操作命令类似于Linux的Shell对文件的操作,如:ls、mkdir、rm等。
我们在操作HDFS的时候一定要确保Hadoop是正常运行的,可以使用jps命令来确保看到各个Hadoop进程,如图:
注:如上图所示,使用jps命令可以看到Hadoop的五个进程即NameNode、DataNode、SecondaryNameNode、TaskTrackers、JobTracker启动了,就表示hadoop启动成功了。
我们执行hadoop fs命令来查看HDFS的相关命令,如图:
上图中显示了很多命令选项信息,截图不全,我在一下表格中完整的列出了支持的命令选项:
注:以上表格中的路径包括HDFS中的路径和Linux中的路径。对于容易产生歧义的地方,会特别指出"Linux路径"或者"HDFS路径",如果没有明确指出,意味着是HDFS路径。
下面详细讲解上述表格中的每个命令:
-ls 显示当前目录结构
该命令选项表示查看指定路径的当前目录结构,后面跟HDFS路径,如下图:
上图中的路径是HDFS根目录,显示的内容格式与Linux的命令ls -l 显示的内容格式非常相似,下面解释每一列内容的含义:
1.首字母表示文件类型(d表示目录,-表示普通文件)
2.后面的9位是权限位,每3个一组(第一组为文件拥有者的权限;第二组为文件拥有组的权限;第三组表示其他人的权限,如上图第一行的drwxr-xr-x表示这是一个目录,目录拥有者有rwx的权限;目录拥有组有rx的权限;其他人有rx的权限)。
3.权限位后面的数字或者是"-"表示副本数。如果是文件,使用数字表示副本数量;文件夹没有副本。
4.后面的"root"和"Liao"表示所属主即拥有者。
5.所属者后面的"supergroup"表示所属组。
6.所属组后面的0表示文件的大小,单位为字节。
7.文件大小后面的为修改时间,格式是年月日时分。
8.最后那个表示文件的路径。
如果hadoop fs -ls 后面没有路径,那么就会访问/user/当前用户目录。我们使用root用户登录,因此会访问HDFS的/user/root目录,如下图:
注:如果没有/user/root目录,会提示文件不存在的错误。
-lsr 递归显示目录结构
该命令选项表示递归显示当前路径的目录结构,后面跟HDFS路径,如下图所示:
注:上述命令为递归显示HDFS根目录下的内容
-du 统计目录下个文件大小
该命令选项显示指定路径下的文件大小,单位是字节,如下图所示:
-dus汇总统计目录下文件大小
该命令选项显示指定路径的文件大小,单位是字节,如下图所示:
-count统计文件(夹)数量
该命令选项显示指定路径下的文件夹数量、文件数量、文件总大小信息,如下图所示:
注:上图中的7表示文件夹数量,1表示文件数量,4表示文件总共4kb。
-mv移动
该命令选项表示移动HDFS的文件到指定的目录中。后面跟两个路径,第一个表示源文件,第二个表示目的目录,如下图所示:
注:上述3条命令展示了移动前后的变化情况。
-cp复制
该命令选项表示复制HDFS指定的文件到指定的HDFS目录中,后面跟两个路径,第一个是被复制的文件,第二个是目的地,如下图:
注:上述3条命令体现了文件移动前后的变化情况。
-rm删除文件/空白文件夹
该命令选项表示删除指定的文件或者是空目录,如下图:
注:最后一条命令hadoop fs -rm /user/root表示删除目录,但是该目录下有内容,所以不能删除,如果该目录是空的,那么就可以删除。
-rmr递归删除
该命令选项表示递归删除指定目录及该目录下的所有子目录和文件,如下图:
注:上述递归删除表示删除HDFS根目录下的user目录即user目录下的所有内容。
-put上传文件
该命令选项表示把Linux上的文件复制到HDFS中,如下图表示:
注:上述命令体现了文件上传前后的变化。
-copyFromLocal从本地复制
操作与-put一致,如下图:
-moveFromLocal从本地移动
该命令表示把文件从Linux上移动到HDFS中,如下图:
-getmerge合并到本地
该命令选项的含义是把HDFS指定目录下的所有文件内容合并到本地Linux文件中,如下图:
-cat查看文件内容
该命令选项是查看文件内容,如下图:
-text查看文件内容
该命令可以认为和-cat的作用相同,如下图:
-mkdir创建空白文件夹
该命令选项表示创建文件夹,后面跟的是在HDFS中将要被创建的文件夹,如下图:
-setrep设置副本数量
该命令选项是修改已保存文件的副本数量,后面跟的是副本数量再跟文件路径,如下图:
注:上图中,我们把/liao.txt文件的副本数由1变为了3,意味着多了两个副本,HDFS会自动执行文件的复制工作,产生新的副本。
如果最后的路径是文件夹,那么需要跟选项-R,表示对文件夹中的所有文件都修改副本,如下图:
注:当我们对目录进行设置副本数时,该目录下的所有文件都会产生效果。
-touchz创建空白文件夹
该命令选项是在HDFS中创建空白文件夹,如下图所示:
-stat显示文件的统计信息
该命令选项显示文件的一些统计信息,如下图:
注:命令选项后面可以有格式,使用单引号表示。上述示例中的格式:‘%b %n %o %r %Y’依次表示文件大小、文件名称、块大小、副本数、访问时间。
-tail查看文件尾部内容
该命令选项显示文件最后1k字节的内容。一般用于查看日志。如果带有选项-f,那么当文件内容变化时,也会自动显示,如下图:
-chmod修改文件权限
该命令选项使用类似于Linux的Shell中的chmod用法,作用是修改文件的权限,如下图:
加上选项-R,可以对文件夹中的所有文件修改权限,如下图所示:
-chown修改所属主
该命令选项表示修改文件的所属主,如下图所示:
注:上述命令把所属主为root的文件改为了所属主为lavimer。另外如果带有选项-R,意味着可以递归修改文件夹中的所有文件的所属主和所属组的信息。
-chgrp修改所属组
该命令的作用是修改文件的所属组,如下图所示:
-help帮助
该命令选项会显示帮助信息,后面跟上需要查询的命令选项即可,如下图:
注:上述命令为查询rm的用法。
-help命令显示的内容也并非完全准确,比如查询count的结果就不正确,而是把所有命令选项的用法都显示出来了,如下图:
希望以后的版本会纠正!
以上是关于Hadoop的Shell操作的主要内容,如果未能解决你的问题,请参考以下文章
学习笔记Hadoop—— Hadoop基础操作—— HDFS常用Shell操作