0

これは HDFS API を介して行われますか? この場合、データのローカリティがどのように達成されるか [リージョンサーバーとデータノードが同じシステム上にあると仮定]、つまり、NameNode は統計に従ってデータノードを割り当て、データを保存します。

4

2 に答える 2

1

Tariq は、HFileSystem を使用してクライアントのインターフェイスを抽象化することについては正しいですが、ファイルが実際に HDFS DataNode にどのように書き込まれるかについてのより良い説明は、このリンクHbase Architecture HBase Storage http://ofps.oreilly にあります。 com/static/titles/9781449396107/figs/hbase-files.png

つまり、データのローカリティを維持するために、クライアントは Zookeeper クラスターにアクセスして、特定の行の ROOT 領域 (基本的にはホットネーム) の場所を見つけます。その後、受信したホスト名を照会して、.META をホストするサーバーを見つけます。テーブル。次に、テーブルのクエリに進み、必要な行があるサーバーを見つけます。クライアントは ROOT と .META の場所をキャッシュします。テーブルと必要な行の場所。

HFile を HDFS に書き込むために、クライアントは HTable で PUT を要求し、HRegionServer はそれを HRegion インスタンスに渡し、それを MemStore に格納します (先行書き込みフラグが設定されていない場合)。MemStore がいっぱいになると、DataNode にフラッシュされます

于 2013-07-02T20:16:13.490 に答える
0

はい。HBase はHFileSystem、FileSystem オブジェクトのカプセル化である を使用してデータにアクセスします。詳細については、を参照HFileSystemしてください。

残りの質問については、このリンクにアクセスしてください。実際には、このリンクを経由する必要があります。Larsはそれを美しく説明しました。

于 2013-07-02T19:44:08.927 に答える