私の Hbase は 3 台のマシンで実行されています。1 台は hmaster 用、もう 2 台は regionServers です。これはマシンのクラッシュや電源オフを防ぐための本番環境であるため、レプリケーション作業を行う必要があると考えています。しかし、いくつかの Hbase ドキュメントを読み、データを複製する方法が見つかりませんでした。私が使用している唯一の方法は、hadoop レプリケーションを設定することです。hdfs-site.xml dfs.replicate=1 を設定します。ホット バックアップ用に Hbase のレプリケーションを行うためのより良い方法はありますか。前もって感謝します
7 に答える
Hbase のレプリケーション ファクターは必要ありません。前述のように、Hbase は HDFS を介してデータを保存するため、レプリケーションは HDFS によって処理されます。RegionServer が (Hbase で) ダウンした場合、HMaster は、デッド regionServer によって処理されたリージョンを正常な regionserver に割り当てます。または、(HDFS で) dataNode に障害が発生した場合、HMaster は、新しい dataNodes (NameNode によって提供される) から新しい dataBlocks を割り当てます。正常で動作している別の地域サーバーに。
HBase は HDFS レプリケーションに完全に依存しています。
すべてのデータは HDFS に存在し、HBase には存在しません (HBase は内部的に HDFS に保存されます)。HBase は、このデータのアクセス メカニズムにすぎません。dfs.replication=1 を設定したので、データノードのバックアップを定期的に取ってみてください。
HBase のリージョン サーバーが心配な場合、このデータは Zookeeper に存在します。マスター/RS がダウンしてアップした場合でも、通常の状態に戻るはずです。
特にリージョンが気になる場合は、HBase によってカタログ テーブル (ROOT、META) として格納されます。これらは、HDFS に存在する通常のテーブルと同じです。
そのため、レプリケーションをコミュニティから推奨されている >1 (またはデフォルトの 3) に変更します。
Hbase テーブルは、データ ブロックの形式で HDFS に格納されます。Hadoop 分散ファイル システム (HDFS) を使用すると、ブロックに使用するレプリケーション ファクターを決定できます。理想的には 3 に維持されます。これにより、任意の時点で同じデータの 3 つのコピーがクラスターのノードに存在し、いずれかのノードに障害が発生した場合に同じデータを別の場所で使用してクエリを実行できるようになります。このプロパティは hdfs-site.xml の dfs.replication です。Hbase を使用すると、クラスターの状態を別のクラスターに複製することもできます。つまり、1 つの Hbase クラスターに存在するデータ全体が別のクラスターにコピーされます。これの利点は、災害復旧を管理できることです。
HBase は HDFS を使用してデータを保存するため、デフォルトでは HDFS にデータのレプリケーションがあります (デフォルトでは、HDFS に 3 つのレプリケーションがあります)。したがって、レプリケーションを明示的に行う必要はありません。