(1) fs是一个通用的文件系统可以指向任何的文件系统如local,HDFS等,而dfs是分布式文件系统,是针对hdfs的(经博主验证,hdfs dfs也能用于操作local)。
(2) 使用hadoop dfs时内部会被转为hdfs dfs命令
fs:
调用文件系统(FS)Shell命令应使用 hadoop fs <args>
的形式。 所有的的FS shell命令使用URI路径作为参数。URI格式是scheme://authority/path
。对HDFS文件系统,scheme是hdfs
,对本地文件系统,scheme是file
。其中scheme和authority参数都是可选的,如果未加指定,就会使用配置中指定的默认scheme。一个HDFS文件或目录比如/parent/child
可以表示成hdfs://namenode:namenodeport/parent/child
,或者更简单的/parent/child
(假设你配置文件中的默认值是namenode:namenodeport
)。大多数FS Shell命令的行为和对应的Unix Shell命令类似。出错信息会输出到stderr,其他信息输出到stdout。
dfs:
If HDFS is being used,hdfs dfs is a synonym.
即,如果对于的是hdfs文件系统,hdfs dfs和hadoop fs一样。
默认scheme查看:
which hadoop #查看hadoop安装路径
cd 到安装路径
cd ./etc/hadoop
vi core-site.xml
对应hdfs系统通常是:
<property>
<name>fs.defaultFS</name>
<value>hdfs://minecluster</value>
</property>
或者对应本地:
<property>
<name>fs.defaultFS</name>
<value>file://opt</value>
</property>
hadoop fs 和hdfs dfs都受上述默认变量控制
经验证,hdfs dfs也能控制本地文件系统。验证版本:Hadoop 3.1.1。
建议:还是用hadoop fs,官方文档里用的基本是这个。
参考:
https://www.cnblogs.com/hulianweb/p/13062971.html
https://hadoop.apache.org/docs/stable/hadoop-project-dist/hadoop-common/FileSystemShell.html
https://stackoverflow.com/questions/30749364/where-is-the-default-scheme-configuration-in-hadoop