これは HDFS API を介して行われますか? この場合、データのローカリティがどのように達成されるか [リージョンサーバーとデータノードが同じシステム上にあると仮定]、つまり、NameNode は統計に従ってデータノードを割り当て、データを保存します。
2 に答える
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 にフラッシュされます
はい。HBase はHFileSystem
、FileSystem オブジェクトのカプセル化である を使用してデータにアクセスします。詳細については、を参照HFileSystem
してください。
残りの質問については、このリンクにアクセスしてください。実際には、このリンクを経由する必要があります。Larsはそれを美しく説明しました。