私の理解では、行はHBaseテーブルに挿入され、別のリージョンサーバーにリージョンとして格納されています。したがって、リージョンサーバーはデータを保存します
同様に、Hadoopに関しては、データはHadoopクラスターに存在するデータノードに格納されます。
次のように、Hadoop1.1.1の上にHBase0.90.6を構成したとします。
2ノード-マスターとスレーブ
テーブルデータがリージョンサーバーに保存されているかどうかについての私の声明に基づいています。では、データノードとリージョンサーバーの役割は何ですか?
データノードはデータを格納します。リージョンサーバーは基本的にI/O操作をバッファリングします。データはHDFS(つまり、データノード)に永続的に保存されます。リージョンサーバーを「マスター」ノードに配置するのは良い考えではないと思います。
リージョンの管理方法の簡略図を次に示します。
レプリケーション係数が3のHDFS(NameNode + DataNodes)を実行しているクラスターがあります(各HDFSブロックは3つの異なるDataNodeにコピーされます)。
RegionServersはDataNodesと同じサーバーで実行します。書き込み要求がRegionServerに来ると、最初に変更をメモリとコミットログに書き込みます。その後、ある時点で、HDFSの永続ストレージに変更を書き込む時期であると判断します。データの局所性が関係するのは次のとおりです。RegionServerとDataNodeを同じサーバーで実行するため、ファイルの最初のHDFSブロックレプリカが同じサーバーに書き込まれます。他の2つのレプリカは、他のDataNodeに書き込まれます。その結果、リージョンにサービスを提供するRegionServerは、ほとんどの場合、データのローカルコピーにアクセスできます。
RegionServerがクラッシュした場合、またはRegionMasterがリージョンを別のRegionServerに再割り当てすることを決定した場合(クラスターのバランスを保つため)はどうなりますか?新しいRegionServerは最初にリモート読み取りを実行するように強制されますが、圧縮が実行されるとすぐに(変更ログのデータへのマージ)-新しいファイルが新しいRegionServerによってHDFSに書き込まれ、ローカルコピーがRegionServerに作成されます(繰り返しますが、DataNodeとRegionServerは同じサーバーで実行されるためです)。
注:RegionServerがクラッシュした場合、以前に割り当てられていたリージョンは、複数のRegionServerに再割り当てされます。
良い読み物:
Tom White、「Hadoop、The Definitive Guide」には、HDFSアーキテクチャについての優れた説明があります。残念ながら、元のGoogle GFSの論文を読んでいなかったので、わかりやすいかどうかわかりません。
Google BigTable 記事。 HBaseはGoogleBigTableの実装であり、この記事のアーキテクチャの説明が最もわかりやすいことがわかりました。
Google BigtableとHBaseの実装の命名法の違いは次のとおりです(Lars George、「HBase、The DefinitiveGuide」から)。