Hadoop-0.20.0源代码分析(07)

前面分析了与操作系统有关的Shell命令,它们用于与操作系统进行命令行方式的交互。在Hadoop中,自定义了FileSystem文件系统,这是基于Unix操作系统之上的文件系统,为了方便对FileSystem的管理,通过org.apache.hadoop.fs.FsShell类定义了对Hadoop FileSystem文件系统进行命令行方式管理的命令实现。

先给出对Hadoop文件系统进行管理的命令实现类的继承层次关系:

由于DFSAdmin类是对HDFS分布式文件系统提供基于命令行的管理功能,这里先不对DFSAdmin进行分析,在后面分析HDFS实现的时候,进行详细分析理解。

Configured就不用多说了,是Hadoop配置类的高层抽象。

Tool接口支持命令行方式的处理,如果需要通过命令行方式来执行一定的任务,都可以实现该接口,通过该接口定义的run方法来运行命令行。由于它继承自Configurable 接口,使得实现Tool的接口可以对特定的待执行的任务进行详细配置,满足执行一个命令能够完成任务的要求。下面是接口的定义:

在Hadoop中,Tool接口主要是为进行MapReduce并行计算而定义的,这里FsShell类实现了该接口,其实也是使得命令行执行与任务关联起来,通过执行命令行,而执行设置的待完成的任务。

下面来看FsShell类的具体实现。

既然,FsShell是与命令行有关的,那么我们就从其中对指定的命令实现的角度来看,分别对每个命令的实现进行阅读分析。在分析每个命令实现过程之前,先看一下该类中printUsage方法的执行,该方法能够打印出全部命令用法的信息,如下所示:

非常清晰明了,FsShell所支持的命令行,及其该命令的可以设置的参数,都在上述列表中显示出来。

另外,对于每个命令的帮助信息,都可以通过printHelp方法得到,例如,如果想要得到命令“ls”的帮助信息,调用printHelp("ls");即可。如果想要得到全部命令的帮助信息,只要给printHelp随便传入一个非命令字符串,如printHelp("hashyes3532333");,将打印出全部命令帮助信息,下面是一个帮助信息的片段:

下面介绍每个命令的实现:

  • ls与lsr命令

执行ls命令,能够列出匹配指定Path下的全部文件,并且不递归列出子目录中文件;lsr能够列出指定Path下的所有文件,并且如果存在子目录,也会递归列出子目录中的文件。实现这两个命令的方法均为ls方法,如下所示:

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值