FS 涉及到一个通用文件系统,它可以指向任何文件系统,如本地、HDFS 等,但 dfs 非常特定于 HDFS。因此,当我们使用 FS 时,它可以执行从/到本地或 hadoop 分布式文件系统到目标的操作,但指定 DFS 操作与 HDFS 相关。
以下是 Hadoop 文档的摘录,将这两个描述为不同的外壳。
FS 外壳:
FileSystem (FS) shell 由bin/hadoop fs
. 所有 FS shell 命令都将路径 URI 作为参数。URI 格式为scheme://autority/path
. 对于 HDFS,方案是 hdfs,对于本地文件系统,方案是文件。方案和权限是可选的。如果未指定,则使用配置中指定的默认方案。HDFS 文件或目录/parent/child
可以指定为hdfs://namenodehost/parent/child
或简单地指定为/parent/child
(假设您的配置设置为指向hdfs://namenodehost
)。FS shell 中的大多数命令的行为类似于相应的 Unix 命令。
DFShell:
HDFS shell 由bin/hadoop dfs
. 所有 HDFS shell 命令都将路径 URI 作为参数。URI 格式为scheme://autority/path
. 对于 HDFS,方案是 hdfs,对于本地文件系统,方案是文件。方案和权限是可选的。如果未指定,则使用配置中指定的默认方案。HDFS 文件或目录/parent/child
可以指定为hdfs://namenode:namenodeport/parent/child
或简单地指定为/parent/child
(假设您的配置设置为指向namenode:namenodeport
)。HDFS shell 中的大多数命令的行为类似于相应的 Unix 命令。
从上面可以得出结论,这一切都取决于方案配置。当这两个命令与绝对 URI 一起使用时,即scheme://a/b
行为应该是相同的。只有文件的默认配置方案值和 fs 和 dfs 的 hdfs 分别是行为差异的原因。