web-dev-qa-db-ja.com

Hbase-hadoop統合におけるdatanode、regionserverの役割

私の理解では、行はHBaseテーブルに挿入され、別のリージョンサーバーにリージョンとして格納されています。したがって、リージョンサーバーはデータを保存します

同様に、Hadoopに関しては、データはHadoopクラスターに存在するデータノードに格納されます。

次のように、Hadoop1.1.1の上にHBase0.90.6を構成したとします。

2ノード-マスターとスレーブ

  1. マスターノードは、として機能します
    • Hadoop-Namenode、Secondary Namenode、ジョブトラッカー、データノード、タスクトラッカー
    • HBase-マスター、RegionServer、およびzookeeper。
  2. スレーブノードは、
    • Hadoopデータノードとタスクトラッカー
    • HBaseリージョンサーバー

テーブルデータがリージョンサーバーに保存されているかどうかについての私の声明に基づいています。では、データノードとリージョンサーバーの役割は何ですか?

18

データノードはデータを格納します。リージョンサーバーは基本的に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」から)。

  • HBase-Bigtable
  • 地域-タブレット
  • RegionServer-タブレットサーバー
  • フラッシュ-マイナーコンパクション
  • マイナーコンパクション-マージコンパクション
  • メジャーコンパクション-メジャーコンパクション
  • ログ先行書き込み-コミットログ
  • HDFS-GFS
  • Hadoop MapReduce-MapReduce
  • MemStore-memtable
  • HFile-SSTable
  • 動物園の飼育係-ぽっちゃり
40