6

私が読んださまざまなブログから、HDFS はコンピューターのローカル ファイル システム上に存在する別のレイヤーであることがわかりました。

Hadoop もインストールしましたが、ローカル ファイル システム上の hdfs レイヤーの存在を理解できません。

これが私の質問です..

Hadoop を疑似分散モードでインストールしているとします。このインストール中にボンネットの下で何が起こりますか? 構成ファイルに tmp.dir パラメーターを追加しました。namenode デーモンが datanode にアクセスしようとしたときに、namenode デーモンが対話する単一のフォルダーは何ですか??

4

2 に答える 2

10

OK..試してみましょう..Hadoop を構成すると、HDFS であるローカル FS の上に仮想 FS が配置されます。HDFS はデータをブロック (ローカル FS に似ていますが、ローカル FS に比べてはるかに大きい) として複製された方法で保存します。ただし、HDFS ディレクトリ ツリーまたはファイル システムの名前空間は、ローカル FS のものと同じです。HDFS へのデータの書き込みを開始すると、最終的にはローカル FS にのみ書き込まれますが、そこで直接見ることはできません。

一時ディレクトリは、実際には 3 つの目的を果たします。

1- namenode がそのメタデータを保存するディレクトリ。デフォルト値${hadoop.tmp.dir}/dfs/nameがあり、 で明示的に指定できますdfs.name.dir。dfs.name.dir を指定すると、namenode メタデータは、このプロパティの値として指定されたディレクトリに格納されます。

2- HDFS データ ブロックが保存されるディレクトリ。デフォルト値${hadoop.tmp.dir}/dfs/dataがあり、によって明示的に指定できますdfs.data.dir。dfs.data.dir を指定すると、HDFS データは、このプロパティの値として指定されたディレクトリに格納されます。

3- セカンダリ namenode がチェックポイントを格納するディレクトリ。デフォルト値は${hadoop.tmp.dir}/dfs/namesecondaryであり、 で明示的に指定できますfs.checkpoint.dir

そのため、これらのプロパティの値として適切な専用の場所を使用して、よりクリーンなセットアップを行うことを常にお勧めします。

データの特定のブロックへのアクセスが必要な場合、dfs.name.dir ディレクトリに保存されているメタデータが検索され、特定のデータ ノード上のそのブロックの場所がクライアントに返されます (これは、クライアントの dfs.data.dir ディレクトリのどこかにあります)。ローカル FS)。次に、クライアントはそこから直接データを読み取ります (書き込みにも同じことが当てはまります)。

ここで注意すべき重要な点の 1 つは、HDFS は物理 FS ではないということです。これはむしろ、ローカル FS のように単純にブラウズできない、ローカル FS 上の仮想抽象化です。これを行うには、HDFS シェル、HDFS WebUI、または利用可能な API を使用する必要があります。

HTH

于 2013-05-29T20:28:10.083 に答える
0

Hadoop を疑似分散モードでインストールすると、すべての HDFS デーモン namdenode、datanode、およびセカンダリ ネーム ノードが同じマシンで実行されます。構成する一時ディレクトリは、データ ノードがデータを格納する場所です。したがって、HDFS の観点から見ると、データは依然としてブロックに格納され、複数のファイル システム レベルのブロックではるかに大きい (および集約) ブロックで読み取られます。

于 2013-05-29T11:47:14.523 に答える