Managed テーブルは、テーブルのデータのライフサイクル全体がHiveによって管理および制御される、Hiveが所有するテーブルです。 外部テーブルとは、Hiveがデータと疎結合しているテーブルのことです。 レプリケーションマネージャは、外部テーブルをターゲットクラスタに正常にレプリケートします。
Hive はデータを含む外部テーブルのターゲットクラスタへのレプリケーションをサポートしており、外部テーブルのすべてのプロパティを保持します。 外部テーブルへの書き込みはHiveのSQLコマンドで実行され、データファイルはHiveの外部のプロセスからアクセスおよび管理することもできます。 外部テーブルやパーティションが削除された場合、そのテーブルやパーティションに関連するメタデータのみが削除されますが、基盤となるデータファイルはそのまま残ります。 外部テーブルの典型的な例としては、HBaseやDruidが所有するデータに対して、Hiveを使って分析クエリを実行することです。データファイルはHBaseやDruidが書き込み、Hiveがそれを読み込んで分析します。
Hive レプリケーション ポリシーのスケジュールを作成するときは、変更が頻繁にレプリケートされるように頻度を設定し、コピーが大きくなりすぎないようにします。
Replication Manager のアップグレード使用例 通常のシナリオでは、管理テーブルとしてレプリケーションされる外部テーブルがあった場合、アップグレード処理後、ターゲットからそれらのテーブルを削除してベース ディレクトリをセットしなければなりません。 次のインスタンスでは、これらのテーブルは外部テーブルとしてレプリケートされます。 複数のソースクラスタから同じターゲットクラスタへのレプリケーションにおける外部テーブルのデータロケーションの競合 複数のソースクラスタから同じターゲットクラスタへのレプリケーションにおける外部テーブルのデータロケーションの競合を処理するために、Replication Managerは各ソースクラスタに固有のベースディレクトリを割り当て、その下に対応するソースクラスタの外部テーブルのデータがコピーされるようにします。 たとえば、ソース クラスターの外部テーブルの場所が /ext/hbase_data の場合、レプリケーション後のターゲット クラスターの場所は <base_dir>/ext/hbase_data になります。 DESCRIBE TABLEコマンドを使用すると、外部テーブルの新しい場所を追跡することができます。 HDFSとHive外部テーブルの場所間のレプリケーションの競合 外部テーブルに対してHiveレプリケーションポリシーを実行すると、データはターゲットディレクトリの特定の場所に保存されます。 次に、同じ外部テーブルの場所にデータをコピーしようとするHDFSレプリケーションポリシーを実行すると、Replication Managerは、HiveデータがHDFSによって上書きされないようにします。 たとえば、外部テーブルでHiveレプリケーション ポリシーを実行すると、ポリシーによってターゲット ディレクトリ/tmp/db1/ext1が作成されます。 HDFSレプリケーションポリシーを実行する場合、ポリシーは/tmp/db1/ext1ディレクトリにレプリケーションすることによってデータを上書きしてはいけません。 外部テーブルのレプリケーション処理中の競合 DB1とDB2上の2つのHiveレプリケーションポリシー(同じソースクラスタまたは異なるソースクラスタ)が、同じデータロケーション(たとえば、/abc)を指す外部テーブルを持ち、同じターゲットクラスタにレプリケーションされると、競合が発生することがあります。 このような競合を避けるには、両方のポリシーの外部テーブルのベースディレクトリ構成に異なるパスを設定する必要があります。 例えば、DB1には/db1を設定し、DB2には/db2を設定します。 これにより、ターゲット外部テーブルデータの場所が両方のデータベースで異なることが保証されます。 例えば、/db1/abcdと/db2/abcdのように。