“hadoop fs”shell命令和“hdfs dfs”shell命令有什么区别?

sg2wtvxw  于 2021-06-03  发布在  Hadoop
关注(0)|答案(6)|浏览(982)

他们应该是平等的吗?
但是,为什么 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编制

eoigrqb6

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
是同义词。

ngynwnxp

ngynwnxp2#

fs指任何文件系统,它可以是本地或hdfs,但dfs只指hdfs文件系统。因此,如果您需要在不同的文件系统之间执行访问/传输数据,那么fs就是一种方法。

hsgswve4

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 不用太担心,因为在文档中,它们是相同的。

bzzcjhmw

bzzcjhmw4#

fs =文件系统 dfs =分布式文件系统 fs =其他文件系统+分布式文件系统
fs涉及到一个通用文件系统,它可以指向任何文件系统,如local、hdfs等,但是dfs非常特定于hdfs。因此,当我们使用fs时,它可以执行从/到本地或hadoop分布式文件系统到目标的操作。但是指定dfs操作与hdfs有关。
这完全取决于方案。当使用这个带有绝对uri的双命令时,即。 scheme://a/b 行为应相同。只有它是的默认配置方案值 file:// 以及 hdfs:// 为了 fs 以及 dfs 这是导致行为差异的原因。

vshtjzan

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的默认配置方案值是导致行为差异的原因。

r1zhe5dt

r1zhe5dt6#

下面是三个看起来相同但有细微差别的命令
hadoop fs{args}
hadoop dfs{args}
hdfs dfs{args}

hadoop fs <args>

fs涉及到一个通用文件系统,它可以指向任何文件系统,如local、hdfs等。因此,当您处理不同的文件系统(如local fs、(s)ftp、s3等)时,可以使用它

hadoop dfs <args>

dfs非常特定于hdfs。与hdfs相关的操作。这已经被否决了,我们应该改用hdfs。

hdfs dfs <args>

与2nd相同,即适用于所有与hdfs相关的操作,是建议使用的命令,而不是hadoop dfs
以下是分类为 hdfs 命令。

namenode|secondarynamenode|datanode|dfs|dfsadmin|fsck|balancer|fetchdt|oiv|dfsgroups

因此,即使您使用hadoop dfs,它也会查找locate hdfs并将该命令委托给hdfs dfs

相关问题