On-premises Apache Hadoop-clusters migreren naar Azure HDInsight - best practices voor architectuur

Dit artikel bevat aanbevelingen voor de architectuur van Azure HDInsight-systemen. Het maakt deel uit van een reeks met aanbevolen procedures voor het migreren van on-premises Apache Hadoop-systemen naar Azure HDInsight.

Meerdere clusters die zijn geoptimaliseerd voor workloads gebruiken

Veel on-premises Apache Hadoop-implementaties bestaan uit één groot cluster dat veel workloads ondersteunt. Dit ene cluster kan complex zijn en kan inbreuk op de afzonderlijke services vereisen om alles samen te laten werken. Voor het migreren van on-premises Hadoop-clusters naar Azure HDInsight is een andere aanpak vereist.

Azure HDInsight-clusters zijn ontworpen voor een specifiek type rekengebruik. Omdat opslag kan worden gedeeld over meerdere clusters, is het mogelijk om meerdere voor workloads geoptimaliseerde rekenclusters te maken om te voldoen aan de behoeften van verschillende taken. Elk clustertype heeft de optimale configuratie voor die specifieke workload. De volgende tabel bevat de ondersteunde clustertypen in HDInsight en de bijbehorende workloads.

Workload HDInsight-clustertype
Batchverwerking (ETL/ELT) Hadoop, Spark
Datawarehousing Hadoop, Spark, Interactive Query
IoT/streaming Kafka, Spark
Transactionele NoSQL-verwerking HBase
Interactieve en snellere query's met in-memory caching Interactive Query
Gegevenswetenschap Spark

In de volgende tabel ziet u de verschillende methoden die kunnen worden gebruikt om een HDInsight-cluster te maken.

Hulpprogramma Op basis van browser Opdrachtregel REST-API SDK
Azure Portal X
Azure Data Factory X X X X
Azure CLI (versie 1.0) X
Azure PowerShell X
cURL X X
.NET SDK X
Python SDK X
Java SDK X
Azure Resource Manager-sjablonen X

Zie het artikel Clustertypen in HDInsight voor meer informatie.

Tijdelijke clusters op aanvraag gebruiken

HDInsight-clusters worden mogelijk gedurende langere tijd niet gebruikt. Om te helpen besparen op resourcekosten, ondersteunt HDInsight tijdelijke clusters op aanvraag, die kunnen worden verwijderd zodra de workload is voltooid.

Wanneer u een cluster verwijdert, worden het gekoppelde opslagaccount en de externe metagegevens niet verwijderd. Het cluster kan later opnieuw worden gemaakt met dezelfde opslagaccounts en metastores.

Azure Data Factory kunnen worden gebruikt om het maken van HDInsight-clusters op aanvraag te plannen. Zie het artikel Apache Hadoop-clusters op aanvraag maken in HDInsight met behulp van Azure Data Factory voor meer informatie.

Opslag loskoppelen van berekening

Typische on-premises Hadoop-implementaties gebruiken dezelfde set computers voor gegevensopslag en gegevensverwerking. Omdat ze een colocatie hebben, moeten rekenkracht en opslag samen worden geschaald.

Op HDInsight-clusters hoeft opslag niet te worden gekoppeld aan rekenkracht en kan deze zich in Azure Storage, Azure Data Lake Storage of beide bevinden. Het loskoppelen van opslag van rekenkracht heeft de volgende voordelen:

  • Gegevens delen tussen clusters.
  • Gebruik van tijdelijke clusters omdat de gegevens niet afhankelijk zijn van het cluster.
  • Lagere opslagkosten.
  • Opslag en rekenkracht afzonderlijk schalen.
  • Gegevensreplicatie tussen regio's.

Rekenclusters worden dicht bij opslagaccountresources in een Azure-regio gemaakt om de prestatiekosten van het scheiden van rekenkracht en opslag te beperken. Snelle netwerken maken het efficiënt voor de rekenknooppunten om toegang te krijgen tot de gegevens in Azure Storage.

Externe metagegevensopslag gebruiken

Er zijn twee belangrijke metastores die werken met HDInsight-clusters: Apache Hive en Apache Oozie. De Hive-metastore is de centrale schemaopslagplaats die kan worden gebruikt door gegevensverwerkingsengines, waaronder Hadoop, Spark, LLAP, Presto en Apache Pig. In de Oozie-metastore worden details opgeslagen over de planning en de status van actieve en voltooide Hadoop-taken.

HDInsight maakt gebruik van Azure SQL Database for Hive- en Oozie-metastores. Er zijn twee manieren om een metastore in HDInsight-clusters in te stellen:

  1. Standaardmetastore

    • Geen extra kosten.
    • Metastore wordt verwijderd wanneer het cluster wordt verwijderd.
    • Metastore kan niet worden gedeeld tussen verschillende clusters.
    • Maakt gebruik van basic Azure SQL DB, met een limiet van vijf DTU's.
  2. Aangepaste externe metastore

    • Geef een externe Azure SQL Database op als de metastore.
    • Clusters kunnen worden gemaakt en verwijderd zonder dat metagegevens verloren gaan, waaronder de taakgegevens van het Hive-schema Oozie.
    • Eén metastore-database kan worden gedeeld met verschillende typen clusters.
    • Metastore kan naar behoefte omhoog worden geschaald.
    • Zie Externe metagegevensarchieven gebruiken in Azure HDInsight voor meer informatie.

Aanbevolen procedures voor Hive-metastore

Sommige aanbevolen procedures voor HDInsight Hive-metastore zijn als volgt:

  • Gebruik een aangepaste externe metastore om rekenresources en metagegevens te scheiden.
  • Begin met een S2-laag Azure SQL-exemplaar, dat 50 DTU en 250 GB opslagruimte biedt. Als u een knelpunt ziet, kunt u de database omhoog schalen.
  • Deel de metastore die is gemaakt voor één HDInsight-clusterversie niet met clusters van een andere versie. Verschillende Hive-versies gebruiken verschillende schema's. Een metastore kan bijvoorbeeld niet worden gedeeld met zowel Hive 1.2- als Hive 2.1-clusters.
  • Maak regelmatig een back-up van de aangepaste metastore.
  • Houd de metastore en het HDInsight-cluster in dezelfde regio.
  • Bewaak de metastore op prestaties en beschikbaarheid met behulp van Azure SQL Hulpprogramma's voor databasebewaking, zoals Azure Portal- of Azure Monitor-logboeken.
  • Voer de ANALYZE TABLE opdracht uit zoals vereist om statistieken voor tabellen en kolommen te genereren. Bijvoorbeeld ANALYZE TABLE [table_name] COMPUTE STATISTICS.

Best practices voor verschillende workloads

  • Overweeg het gebruik van LLAP-cluster voor interactieve Hive-query's met verbeterde reactietijd LLAP is een nieuwe functie in Hive 2.0 waarmee query's in het geheugen in de cache kunnen worden opgeslagen.
  • Overweeg spark-taken te gebruiken in plaats van Hive-taken.
  • Overweeg om op impala's gebaseerde query's te vervangen door LLAP-query's.
  • Overweeg MapReduce-taken te vervangen door Spark-taken.
  • Overweeg spark-batchtaken met lage latentie te vervangen met behulp van Spark Structured Streaming-taken.
  • Overweeg het gebruik van Azure Data Factory (ADF) 2.0 voor gegevensindeling.
  • Overweeg Ambari voor clusterbeheer.
  • Wijzig de gegevensopslag van on-premises HDFS in WASB of ADLS of ADFS voor het verwerken van scripts.
  • Overweeg het gebruik van Ranger RBAC voor Hive-tabellen en controle.
  • Overweeg het gebruik van CosmosDB in plaats van MongoDB of Cassandra.

Volgende stappen

Lees het volgende artikel in deze reeks: