Migrera lokala Apache Hadoop-kluster till Azure HDInsight – metodtips för datamigrering

Den här artikeln ger rekommendationer för datamigrering till Azure HDInsight. Det är en del av en serie som innehåller metodtips för att migrera lokala Apache Hadoop-system till Azure HDInsight.

Migrera lokala data till Azure

Det finns två huvudsakliga alternativ för att migrera data från en lokal miljö till En Azure-miljö:

  • Överföra data via nätverk med TLS

    • Via Internet – Du kan överföra data till Azure Storage via en vanlig Internetanslutning med något av flera verktyg som: Azure Storage Explorer, AzCopy, Azure PowerShell och Azure CLI. Mer information finns i Flytta data till och från Azure Storage.

    • Express Route – ExpressRoute är en Azure-tjänst som gör att du kan skapa privata anslutningar mellan Microsofts datacenter och infrastruktur som finns lokalt eller i en samlokaliseringsanläggning. ExpressRoute-anslutningar går inte via det offentliga Internet och erbjuder högre säkerhet, tillförlitlighet och hastigheter med kortare svarstider än vanliga anslutningar via Internet. Mer information finns i Skapa och ändra en ExpressRoute-krets.

    • Data Box online-dataöverföring – Data Box Edge och Data Box Gateway är onlineprodukter för dataöverföring som fungerar som nätverkslagringsgatewayer för att hantera data mellan din webbplats och Azure. Data Box Edge, en lokal nätverksenhet, överför data till och från Azure och använder AI-aktiverad gränsberäkning för att bearbeta data. Data Box Gateway är en virtuell installation med funktioner för lagringsgateway. Mer information finns i Dokumentation om Azure Data Box – Onlineöverföring.

  • Skicka data offline

    Data Box offline-dataöverföring – Data Box-, Data Box Disk- och Data Box Heavy-enheter hjälper dig att överföra stora mängder data till Azure när nätverket inte är ett alternativ. Dessa offline-dataöverföringsenheter levereras mellan din organisation och Azure-datacentret. De använder AES-kryptering för att skydda dina data under överföring, och de genomgår en grundlig saneringsprocess efter uppladdningen för att ta bort dina data från enheten. Mer information om data box-enheter för offlineöverföring finns i Dokumentation om Azure Data Box – offlineöverföring. Mer information om migrering av Hadoop-kluster finns i Använda Azure Data Box för att migrera från ett lokalt HDFS-arkiv till Azure Storage.

Följande tabell har ungefärlig dataöverföringstid baserat på datavolym och nätverksbandbredd. Använd en dataruta om datamigreringen förväntas ta mer än tre veckor.

Antal data Nätverksbandbredd
av
45 Mbit/s (T3)
Nätverksbandbredd
av
100 Mbit/s
Nätverksbandbredd
av
1 Gbit/s
Nätverksbandbredd
av
10 Gbit/s
1 TB 2 dagar 1 dag 2 timmar 14 minuter
10 TB 22 dagar 10 dagar 1 dag 2 timmar
35 TB 76 dagar 34 dagar 3 dagar 8 timmar
80 TB 173 dagar 78 dagar 8 dagar 19 timmar
100 TB 216 dagar 97 dagar 10 dagar 1 dag
200 TB 1 år 194 dagar 19 dagar 2 dagar
500 TB 3 år 1 år 49 dagar 5 dagar
1 PB 6 år 3 år 97 dagar 10 dagar
2 PB 12 år 5 år 194 dagar 19 dagar

Verktyg som är inbyggda i Azure, till exempel Apache Hadoop DistCp, Azure Data Factory och AzureCp, kan användas för att överföra data över nätverket. WanDisco-verktyget från tredje part kan också användas för samma ändamål. Apache Kafka Mirrormaker och Apache Sqoop kan användas för pågående dataöverföring från lokala lagringssystem till Azure-lagringssystem.

Prestandaöverväganden vid användning av Apache Hadoop DistCp

DistCp är ett Apache-projekt som använder ett MapReduce Map-jobb för att överföra data, hantera fel och återställa från dessa fel. Den tilldelar en lista över källfiler till varje map-uppgift. Aktiviteten Mappa kopierar sedan alla dess tilldelade filer till målet. Det finns flera tekniker som kan förbättra prestanda för DistCp.

Öka antalet mappare

DistCp försöker skapa map-uppgifter så att var och en kopierar ungefär samma antal byte. Som standard använder DistCp-jobb 20 mappare. Om du använder fler mappningar för Distcp (med parametern m på kommandoraden) ökar parallelliteten under dataöverföringsprocessen och dataöverföringens längd minskar. Det finns dock två saker att tänka på när du ökar antalet mappare:

  • DistCp:s lägsta kornighet är en enda fil. Att ange ett antal mappare som är mer än antalet källfiler hjälper inte och slösar bort tillgängliga klusterresurser.

  • Överväg det tillgängliga Yarn-minnet i klustret för att fastställa antalet mappare. Varje map-uppgift startas som en Yarn-container. Förutsatt att inga andra tunga arbetsbelastningar körs i klustret kan antalet mappningar bestämmas av följande formel: m = (antal arbetsnoder * YARN-minne för varje arbetsnod) /YARN-containerstorlek. Men om andra program använder minne väljer du att bara använda en del av YARN-minnet för DistCp-jobb.

Använda mer än ett DistCp-jobb

När storleken på datauppsättningen som ska flyttas är större än 1 TB använder du mer än ett DistCp-jobb. Om du använder mer än ett jobb begränsas effekten av fel. Om ett jobb misslyckas behöver du bara starta om det specifika jobbet i stället för alla jobb.

Överväg att dela upp filer

Om det finns ett litet antal stora filer bör du överväga att dela upp dem i filsegment på 256 MB för att få mer potentiell samtidighet med fler mappare.

Använda kommandoradsparametern "strategi"

Överväg att använda strategy = dynamic parametern på kommandoraden. Standardvärdet för parametern strategy är uniform size, i vilket fall varje karta kopierar ungefär samma antal byte. När den här parametern ändras till dynamicdelas listfilen upp i flera "segmentfiler". Antalet segmentfiler är en multipel av antalet kartor. Varje map-uppgift tilldelas en av segmentfilerna. När alla sökvägar i ett segment har bearbetats tas det aktuella segmentet bort och ett nytt segment hämtas. Processen fortsätter tills inga fler segment är tillgängliga. Med den här "dynamiska" metoden kan snabbare map-tasks använda fler sökvägar än långsammare, vilket påskyndar DistCp-jobbet totalt sett.

Öka antalet trådar

Se om du kan förbättra prestanda genom att öka parametern -numListstatusThreads . Den här parametern styr antalet trådar som ska användas för att skapa en fillista och 40 är det maximala värdet.

Använda algoritmen för utdatautdata

Se om överföring av parametern -Dmapreduce.fileoutputcommitter.algorithm.version=2 förbättrar DistCp-prestanda. Den här utdata-incheckningsalgoritmen har optimeringar för att skriva utdatafiler till målet. Följande kommando är ett exempel som visar användningen av olika parametrar:

hadoop distcp -Dmapreduce.fileoutputcommitter.algorithm.version=2 -numListstatusThreads 30 -m 100 -strategy dynamic hdfs://nn1:8020/foo/bar wasb://<container_name>@<storage_account_name>.blob.core.windows.net/foo/

Metadatamigrering

Apache Hive

Hive-metaarkivet kan migreras antingen med hjälp av skripten eller med hjälp av DB Replication.

Migrering av Hive-metaarkiv med hjälp av skript

  1. Generera Hive-DDL:er från det lokala Hive-metaarkivet. Det här steget kan göras med hjälp av ett bash-skript för wrapper.
  2. Redigera den genererade DDL:en för att ersätta HDFS-URL:en med WASB/ADLS/ABFS-URL:er.
  3. Kör den uppdaterade DDL:en på metaarkivet från HDInsight-klustret.
  4. Kontrollera att Hive-metaarkivversionen är kompatibel mellan lokalt och molnet.

Migrering av Hive-metaarkiv med db-replikering

  • Konfigurera databasreplikering mellan den lokala Hive-metaarkivdatabasen DB och HDInsight-metaarkivdatabasen.

  • Använd "Hive MetaTool" för att ersätta HDFS-URL:en med WASB/ADLS/ABFS-URL:er, till exempel:

    ./hive --service metatool -updateLocation hdfs://nn1:8020/ wasb://<container_name>@<storage_account_name>.blob.core.windows.net/
    

Apache Ranger

  • Exportera lokala Ranger-principer till XML-filer.
  • Transformera lokala HDFS-baserade sökvägar till WASB/ADLS med hjälp av ett verktyg som XSLT.
  • Importera principerna till Ranger som körs på HDInsight.

Nästa steg

Läs nästa artikel i den här serien: