119

それらは等しいはずですか?

しかし、なぜ " hadoop fs"コマンドはローカル ファイルを表示するのに、 hdfs files" " コマンドは を表示するのでしょうか?hdfs dfs

Hadoop のバージョン情報は次のとおりです。

Hadoop 2.0.0-mr1-cdh4.2.1 サブバージョン 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 2013 年 4 月 22 日月曜日 10:48:26 PDT に jenkins によってコンパイル

4

8 に答える 8

152

以下は、同じように見えるがわずかな違いがある 3 つのコマンドです。

  1. Hadoop fs {args}
  2. Hadoop dfs {args}
  3. hdfs dfs {args}

  hadoop fs <args>

FS は、ローカル、HDFS などの任意のファイル システムを指すことができる汎用ファイル システムに関連しています。そのため、これは、ローカル FS、(S)FTP、S3 などのさまざまなファイル システムを扱う場合に使用できます。


  hadoop dfs <args>

dfs は HDFS に非常に固有です。HDFSに関連する操作で機能します。これは廃止されたため、代わりにhdfs dfsを使用する必要があります。


  hdfs dfs <args>

2 番目と同じです。つまり、HDFS に関連するすべての操作で機能し、hadoop dfsの代わりに推奨されるコマンドです。

以下は、hdfsコマンドとして分類されたリストです。

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

したがって、 hadoop dfsを使用している場合でも、hdfs を見つけて、そのコマンドをhdfs dfsに委譲するように見えます。

于 2014-06-25T08:49:50.577 に答える
7

fs任意のファイル システムを指します。ローカルまたは HDFS の可能性がありますが、HDFSファイル システムdfsのみを指します。したがって、異なるファイルシステム間でデータのアクセス/転送を実行する必要がある場合は、これが最適です。fs

于 2013-08-09T08:45:40.210 に答える
5

hdfs dfs私が知る限り、 と の間に違いはありませんhadoop fs。これらは、使用している Hadoop のバージョンに基づいて、単純に異なる命名規則です。たとえば、1.2.1のメモは0.19を使用hdfs dfsしています。個別のコマンドが逐語的に説明されていることに注意してください。それらは同じように使用されます。hadoop fs

また、どちらのコマンドも、指定する内容 (hdfs、file、s3 など) に応じて異なるファイル システムを参照できることに注意してください。ファイル システムがリストされていない場合は、構成で指定されているデフォルトに戻ります。

Hadoop 2.0.0 を使用しており、( 2.0.5 のドキュメントに基づいて) Alpha バージョンが使用hadoop fsし、構成のデフォルト スキームとして HDFS を使用するように設定されているようです。コマンドはhdfs dfs以前から残されている可能性があり、構成で指定されていないため、ローカル ファイル システムにデフォルト設定されている可能性があります。

したがってhadoop fs、ドキュメントでは同じであるため、あまり心配する必要はありません。

于 2013-08-09T16:16:50.147 に答える
3

FS は、ローカル、HDFS などの任意のファイル システムを指すことができる汎用ファイル システムに関連していますが、dfs は HDFS に非常に固有です。したがって、FS を使用すると、ローカルまたは Hadoop 分散ファイル システムとの間で操作を実行できますが、DFS 操作を指定すると、HDFS に関連します。

以下は、これら 2 つを異なるシェルとして説明している Hadoop ドキュメントからの抜粋です。

FS シェル:

FileSystem (FS) シェルは、によって呼び出されbin/hadoop fsます。すべての FS シェル コマンドは、パス URI を引数として受け取ります。URI 形式はscheme://autority/path. HDFS のスキームは hdfs で、ローカル ファイルシステムのスキームは file です。スキームと権限はオプションです。指定しない場合、構成で指定されたデフォルトのスキームが使用されます。のような HDFS ファイルまたはディレクトリは、として、または単に として/parent/child指定できます(構成が を指すように設定されている場合)。FS シェルのほとんどのコマンドは、対応する Unix コマンドのように動作します。hdfs://namenodehost/parent/child/parent/childhdfs://namenodehost

DFシェル:

HDFS シェルは によって呼び出されbin/hadoop dfsます。すべての HDFS シェル コマンドは、パス URI を引数として受け取ります。URI 形式はscheme://autority/path. HDFS のスキームは hdfs で、ローカル ファイルシステムのスキームは file です。スキームと権限はオプションです。指定しない場合、構成で指定されたデフォルトのスキームが使用されます。のような HDFS ファイルまたはディレクトリは、として、または単に として/parent/child指定できます(構成が を指すように設定されている場合)。HDFS シェルのほとんどのコマンドは、対応する Unix コマンドのように動作します。hdfs://namenode:namenodeport/parent/child/parent/childnamenode:namenodeport

上記から、すべてが設定スキームに依存していると結論付けることができます。この 2 つのコマンドを絶対 URI で使用するとscheme://a/b、動作は同じになります。fs と dfs の file と hdfs のデフォルトで構成されたスキーム値のみが、動作の違いの原因です。

于 2015-10-17T13:34:52.183 に答える
-1

hadoop fs と hdfs dfs は基本的に同じです。どちらも、ls、rm などの一部の Linux コマンドで同じ結果になります。このようなコマンドを使用する必要があります

hadoop fs -ls <path>
hdfs dfs -ls <path>
于 2021-07-15T05:11:56.797 に答える