他们应该是平等的吗?
但是,为什么 hadoop fs
“命令显示 hdfs files
“当” hdfs dfs
“命令显示本地文件?
以下是hadoop版本信息:
hadoop 2.0.0-mr1-cdh4.2.1 subversion版本git://ubuntu-slave07.jenkins.cloudera.com/var/lib/jenkins/workspace/cdh4.2.1-packaging-mr1/build/cdh4/mr1/2.0.0-mr1-cdh4.2.1/source -r由jenkins于2013年4月22日(周一)10:48:26编制
6条答案
按热度按时间eoigrqb61#
https://hadoop.apache.org/docs/current/hadoop-project-dist/hadoop-common/filesystemshell.html
文件系统(fs)shell包括各种类似shell的命令,这些命令直接与hadoop分布式文件系统(hdfs)以及hadoop支持的其他文件系统(如local fs、webhdfs、s3fs等)交互。
bin/hadoop文件系统
<args>
所有fs shell命令都将路径uri作为参数。uri格式为scheme://authority/path. 对于hdfs,方案是hdfs,对于本地fs,方案是file。方案和权限是可选的。如果未指定,则使用配置中指定的默认方案。hdfs文件或目录(如/parent/child)可以指定为hdfs://namenodehost/parent/child 或者简单地作为/parent/child(假设您的配置设置为指向hdfs://namenodehost).fs shell中的大多数命令的行为类似于相应的unix命令。每个命令都描述了不同之处。错误信息被发送到stderr,输出被发送到stdout。
如果使用hdfs,
hdfs dfs
是同义词。
ngynwnxp2#
fs指任何文件系统,它可以是本地或hdfs,但dfs只指hdfs文件系统。因此,如果您需要在不同的文件系统之间执行访问/传输数据,那么fs就是一种方法。
hsgswve43#
据我所知,两者之间没有区别
hdfs dfs
以及hadoop fs
. 它们只是基于您使用的hadoop版本的不同命名约定。例如,1.2.1中的注解使用hdfs dfs
而0.19使用hadoop fs
. 注意,单独的命令是逐字描述的。它们的用法相同。还要注意,这两个命令都可以引用不同的文件系统,具体取决于您指定的内容(hdfs、file、s3等)。如果没有列出任何文件系统,它们将返回到配置中指定的默认值。
您使用的是hadoop2.0.0,它看起来像alpha版本使用的(基于2.0.5文档)
hadoop fs
并设置为使用hdfs作为配置中的默认方案。这个hdfs dfs
命令可能在以前保留,由于没有在配置中指定,因此可能只是默认为本地文件系统。所以我会坚持
hadoop fs
不用太担心,因为在文档中,它们是相同的。bzzcjhmw4#
fs
=文件系统dfs
=分布式文件系统fs
=其他文件系统+分布式文件系统fs涉及到一个通用文件系统,它可以指向任何文件系统,如local、hdfs等,但是dfs非常特定于hdfs。因此,当我们使用fs时,它可以执行从/到本地或hadoop分布式文件系统到目标的操作。但是指定dfs操作与hdfs有关。
这完全取决于方案。当使用这个带有绝对uri的双命令时,即。
scheme://a/b
行为应相同。只有它是的默认配置方案值file://
以及hdfs://
为了fs
以及dfs
这是导致行为差异的原因。vshtjzan5#
fs涉及到一个通用文件系统,它可以指向任何文件系统,如local、hdfs等,但是dfs非常特定于hdfs。因此,当我们使用fs时,它可以执行从/到本地或hadoop分布式文件系统到目标的操作。但是指定dfs操作与hdfs有关。
下面是hadoop文档的摘录,它将这两个shell描述为不同的shell。
fs shell文件系统(fs)shell由bin/hadoop fs调用。所有fs shell命令都将路径uri作为参数。uri格式为scheme://autority/path. 对于hdfs,方案是hdfs,对于本地文件系统,方案是file。方案和权限是可选的。如果未指定,则使用配置中指定的默认方案。hdfs文件或目录(如/parent/child)可以指定为hdfs://namenodehost/parent/child 或者简单地作为/parent/child(假设您的配置设置为指向hdfs://namenodehost). fs shell中的大多数命令的行为类似于相应的unix命令。
dfshell hdfs shell由bin/hadoop dfs调用。所有hdfsshell命令都以路径uri作为参数。uri格式为scheme://autority/path. 对于hdfs,方案是hdfs,对于本地文件系统,方案是file。方案和权限是可选的。如果未指定,则使用配置中指定的默认方案。hdfs文件或目录(如/parent/child)可以指定为hdfs://namenode:namenodeport/parent/child或简称为/parent/child(假定您的配置设置为指向namenode:namenodeport). hdfsshell中的大多数命令的行为类似于相应的unix命令。
因此,从上面可以得出结论,这一切都取决于方案配置。当使用这个带有绝对uri的双命令时,即。scheme://a/b 行为应相同。只有文件的默认配置方案值和fs和dfs的hdfs的默认配置方案值是导致行为差异的原因。
r1zhe5dt6#
下面是三个看起来相同但有细微差别的命令
hadoop fs{args}
hadoop dfs{args}
hdfs dfs{args}
fs涉及到一个通用文件系统,它可以指向任何文件系统,如local、hdfs等。因此,当您处理不同的文件系统(如local fs、(s)ftp、s3等)时,可以使用它
dfs非常特定于hdfs。与hdfs相关的操作。这已经被否决了,我们应该改用hdfs。
与2nd相同,即适用于所有与hdfs相关的操作,是建议使用的命令,而不是hadoop dfs
以下是分类为
hdfs
命令。因此,即使您使用hadoop dfs,它也会查找locate hdfs并将该命令委托给hdfs dfs