Hive-Workloadmigration zu neuem Konto in Azure Storage
Erfahren Sie, wie Sie Skriptaktionen verwenden, um Hive-Tabellen über Speicherkonten hinweg in HDInsight zu kopieren. Dies kann nützlich sein, wenn Sie zu Azure Data Lake Storage Gen2
migrieren.
Informationen zum manuellen Kopieren einer einzelnen Hive-Tabelle in HDInsight 4.0 finden Sie unter Hive-Export/-Import.
Voraussetzungen
Ein neuer HDInsight-Cluster mit folgenden Konfigurationen:
- Sein Standarddateisystem ist das Zielspeicherkonto. Weitere Informationen finden Sie unter Verwenden von Azure Storage mit Azure HDInsight-Clustern.
- Die Clusterversion muss mit der des Quellclusters identisch sein.
- Es wird eine neue externe Hive-Metastore-DB verwendet. Weitere Informationen finden Sie unter Verwenden von externen Metadatenspeichern.
Ein Speicherkonto, auf das die ursprünglichen und neue Cluster zugreifen können. Weitere Informationen zu zulässigen sekundären Speichertypen finden Sie unter Hinzufügen zusätzlicher Speicherkonten zu HDInsight und Speichertypen und Features.
Hier einige Optionen:
- Fügen Sie das Zielspeicherkonto dem ursprünglichen Cluster hinzu.
- Fügen Sie das ursprüngliche Speicherkonto dem neuen Cluster hinzu.
- Fügen Sie den ursprünglichen und den neuen Clustern ein zwischengeschaltetes Speicherkonto hinzu.
Funktionsweise
Wir führen eine Skriptaktion aus, um Hive-Tabellen aus dem ursprünglichen Cluster in ein angegebenes HDFS-Verzeichnis zu exportieren. Weitere Informationen finden Sie unter Skriptaktion für einen ausgeführten Cluster.
Anschließend führen wir eine weitere Skriptaktion für den neuen Cluster aus, um die Hive-Tabellen aus dem HDFS-Verzeichnis zu importieren.
Das Skript erstellt die Tabellen im Standarddateisystem des neuen Clusters neu. Native Tabellen kopieren auch Ihre gespeicherten Daten. Nicht native Tabellen werden nur nach Definition kopiert. Weitere Informationen zu nicht nativen Tabellen finden Sie unter Hive-Speicherhandler.
Der Pfad externer Tabellen, die sich nicht im Hive-Warehouseverzeichnis befinden, wird beibehalten. Andere Tabellen werden in den Hive-Standardpfad des Zielclusters kopiert. Siehe Hive-Eigenschaften hive.metastore.warehouse.external.dir
und hive.metastore.warehouse.dir
.
Die Skripts behalten keine benutzerdefinierten Dateiberechtigungen im Zielcluster bei.
Hinweis
Dieser Leitfaden unterstützt das Kopieren von Metadatenobjekten im Zusammenhang mit Hive-Datenbanken, Tabellen und Partitionen. Andere Metadatenobjekte müssen manuell neu erstellt werden.
- Für
Views
unterstützt Hive den BefehlSHOW VIEWS
ab Hive 2.2.0 für HDInsight 4.0. Verwenden SieSHOW CREATE TABLE
für die Sichtdefinition. Fragen Sie für frühere Versionen von Hive die Metastore-SQL-Datenbank ab, um Sichten anzuzeigen. - Verwenden Sie für die
Materialized Views
die BefehleSHOW MATERIALIZED VIEWS
,DESCRIBE FORMATTED
undCREATE MATERIALIZED VIEW
. Ausführliche Informationen finden Sie unter Materialisierte Sichten. - Für
Constraints
(unterstützt ab Hive 2.1.0 in HDInsight 4.0) verwenden SieDESCRIBE EXTENDED
, um Einschränkungen für eine Tabelle aufzulisten, undALTER TABLE
, um Einschränkungen hinzuzufügen. Weitere Informationen finden Sie unter ALTER TABLE-Einschränkungen.
Kopieren von Hive-Tabellen
Wenden Sie die Skriptaktion „export“ auf den ursprünglichen Cluster mit den folgenden Feldern an.
Hierdurch werden zwischengeschaltete Hive-Skripts generiert und ausgeführt. Sie werden im angegebenen
<hdfs-export-path>
gespeichert.Optional können Sie
--run-script=false
verwenden, um sie vor der manuellen Ausführung anzupassen.Eigenschaft Wert Bash-Skript-URI https://hdiconfigactions.blob.core.windows.net/linuxhivemigrationv01/export-hive-data-v01.sh
Knotentyp(en) Head Parameter <hdfs-export-path>
--run-script
usage: generate Hive export and import scripts and export Hive data to specified HDFS path [--run-script={true,false}] hdfs-export-path positional arguments: hdfs-export-path remote HDFS directory to write export data to optional arguments: --run-script={true,false} whether to execute the generated Hive export script (default: true)
Nach erfolgreichem Abschluss des Exports wenden Sie die Skriptaktion „import“ auf den neuen Cluster mit den folgenden Feldern an.
Eigenschaft Wert Bash-Skript-URI https://hdiconfigactions.blob.core.windows.net/linuxhivemigrationv01/import-hive-data-v01.sh
Knotentyp(en) Head Parameter <hdfs-export-path>
usage: download Hive import script from specified HDFS path and execute it hdfs-export-path positional arguments: hdfs-export-path remote HDFS directory to download Hive import script from
Überprüfung
Laden Sie das Skript herunter, und führen Sie es als root-Benutzer hive_contents.sh
auf dem primären Knoten jedes Clusters aus. Vergleichen Sie den Inhalt der Ausgabedatei /tmp/hive_contents.out
. Weitere Informationen finden Sie unter Herstellen einer Verbindung mit HDInsight (Apache Hadoop) per SSH.
Bereinigen zusätzlicher Speicherauslastung
Nachdem die Speichermigration abgeschlossen und überprüft wurde, können Sie die Daten im angegebenen HDFS-Exportpfad löschen.
Die Option ist die Verwendung des HDFS-Befehls hdfs dfs -rm -R
.
Option: Verringern der zusätzlichen Speicherauslastung
Die Aktion zum Exportieren eines Skripts verdoppelt wahrscheinlich die Speicherauslastung aufgrund von Hive. Allerdings ist es möglich, die zusätzliche Speicherauslastung durch manuelles Migrieren jeweils einer Datenbank oder Tabelle einzuschränken.
Geben Sie
--run-script=false
an, um die Ausführung des generierten Hive-Skripts zu überspringen. Die Hive-Export- und -Importskripts werden weiterhin im Exportpfad gespeichert.Führen Sie Codeausschnitte der Hive-Export- und -Importskripts datenbankweise oder tabellenweise aus, und bereinigen Sie den Exportpfad nach jeder migrierten Datenbank oder Tabelle.