Zephyrnet-logo

Migreren van Google BigQuery naar Amazon Redshift met behulp van AWS Glue en Custom Auto Loader Framework | Amazon-webservices

Datum:

Amazon roodverschuiving is een veelgebruikt, volledig beheerd cloud datawarehouse op petabyte-schaal. Tienduizenden klanten gebruiken Amazon Redshift om elke dag exabytes aan gegevens te verwerken om hun analytische werklast te ondersteunen. Klanten zijn op zoek naar tools die het gemakkelijker maken om te migreren van andere datawarehouses, zoals Google BigQuery, naar Amazon Redshift om te profiteren van de prijs-prestatieverhouding, het gebruiksgemak, de beveiliging en de betrouwbaarheid van de service.

In dit bericht laten we u zien hoe u AWS-native services kunt gebruiken om uw migratie van Google BigQuery naar Amazon Redshift te versnellen. We gebruiken AWS lijm, een volledig beheerde, serverloze ETL-service (extraheren, transformeren en laden) en de Google BigQuery-connector voor AWS Glue (voor meer informatie, zie Gegevens migreren van Google BigQuery naar Amazon S3 met behulp van aangepaste AWS Glue-connectoren). We voegen ook automatisering en flexibiliteit toe om de migratie van meerdere tabellen naar Amazon Redshift te vereenvoudigen met behulp van de Aangepast Auto Loader-framework.

Overzicht oplossingen

De oplossing biedt een schaalbare en beheerde workflow voor gegevensmigratie om gegevens van Google BigQuery naar te migreren Amazon eenvoudige opslagservice (Amazon S3), en vervolgens van Amazon S3 naar Amazon Redshift. Deze vooraf gebouwde oplossing schaalt om gegevens parallel te laden met behulp van invoerparameters.

Het volgende architectuurdiagram laat zien hoe de oplossing werkt. Het begint met het instellen van de migratieconfiguratie om verbinding te maken met Google BigQuery, converteert vervolgens de databaseschema's en migreert ten slotte de gegevens naar Amazon Redshift.

Architectuurdiagram dat laat zien hoe de oplossing werkt. Het begint met het instellen van de migratieconfiguratie om verbinding te maken met Google BigQuery, vervolgens de databaseschema's te converteren en ten slotte de gegevens naar Amazon Redshift te migreren.

De workflow bevat de volgende stappen:

  1. Er wordt een configuratiebestand geüpload naar een S3-bucket die u voor deze oplossing hebt gekozen. Dit JSON-bestand bevat de migratiemetadata, namelijk het volgende:
    • Een lijst met Google BigQuery-projecten en datasets.
    • Een lijst met alle te migreren tabellen voor elk project en dataset-paar.
  2. An Amazon EventBridge regel activeert een AWS Stap Functies state machine om te beginnen met het migreren van de tabellen.
  3. De Step Functions-statusmachine herhaalt de tabellen die moeten worden gemigreerd en voert een AWS Glue Python-shelltaak uit om de metadata uit Google BigQuery te extraheren en op te slaan in een Amazon DynamoDB tabel gebruikt voor het volgen van de migratiestatus van de tabellen.
  4. De statusmachine herhaalt de metadata van deze DynamoDB-tabel om de tabelmigratie parallel uit te voeren, op basis van het maximale aantal migratietaken zonder limieten of quota op Google BigQuery. Het voert de volgende stappen uit:
    • Voert de AWS Glue-migratietaak voor elke tabel parallel uit.
    • Volgt de uitvoeringsstatus in de DynamoDB-tabel.
    • Nadat de tabellen zijn gemigreerd, wordt gecontroleerd op fouten en afgesloten.
  5. De gegevens die uit Google BigQuery worden geëxporteerd, worden opgeslagen in Amazon S3. We gebruiken Amazon S3 (hoewel AWS Glue-taken rechtstreeks naar Amazon Redshift-tabellen kunnen schrijven) om een ​​aantal specifieke redenen:
    • We kunnen de datamigratie en de datalaadstappen loskoppelen.
    • Het biedt meer controle over de laadstappen, met de mogelijkheid om de gegevens opnieuw te laden of het proces te pauzeren.
    • Het biedt een fijnmazige monitoring van de laadstatus van Amazon Redshift.
  6. De Aangepast Auto Loader-framework maakt automatisch schema's en tabellen in de doeldatabase en laadt continu gegevens van Amazon S3 naar Amazon Redshift.

Een paar extra aandachtspunten:

  • Als u het doelschema en de tabellen al in de Amazon Redshift-database hebt gemaakt, kunt u het Custom Auto Loader Framework configureren om het schema niet automatisch te detecteren en te converteren.
  • Als u meer controle wilt over het converteren van het Google BigQuery-schema, kunt u de AWS Schema Conversie Tool (AWS SCT). Voor meer informatie, zie Migreer Google BigQuery naar Amazon Redshift met behulp van de AWS Schema Conversion Tool (SCT).
  • Op het moment van schrijven ondersteunen noch de AWS SCT noch het Custom Auto Loader Framework de conversie van geneste gegevenstypen (record, array en struct). Amazon Redshift ondersteunt semigestructureerde gegevens met behulp van het gegevenstype Super, dus als uw tabel dergelijke complexe gegevenstypen gebruikt, moet u de doeltabellen handmatig maken.

Om de oplossing te implementeren, zijn er twee hoofdstappen:

  1. Implementeer de oplossingsstack met behulp van AWS CloudFormatie.
  2. Implementeer en configureer Custom Auto Loader Framework om bestanden van Amazon S3 naar Amazon Redshift te laden.

Voorwaarden

Voordat u aan de slag gaat, moet u ervoor zorgen dat u over het volgende beschikt:

In dit voorbeeld hebben we het bestand een naam gegeven bq-mig-config.json

    1. Configureer uw Google-account.
    2. Maak een IAM-rol aan voor AWS Glue (en noteer de naam van de IAM-rol).
    3. Abonneer u op en activeer de Google BigQuery Connector voor AWS Glue.

Implementeer de oplossing met behulp van AWS CloudFormation

Voer de volgende stappen uit om de oplossingsstack te implementeren met behulp van AWS CloudFormation:

  1. Kies Start Stack:

Deze sjabloon levert de AWS-resources in de us-east-1 Regio. Als u wilt implementeren in een andere regio, downloadt u de sjabloon bigquery-cft.yaml en start het handmatig: kies op de AWS CloudFormation-console Create stack with new resources en upload het sjabloonbestand dat u hebt gedownload.

De lijst met ingerichte resources is als volgt:

    • Een EventBridge-regel om de Step Functions-statusmachine te starten bij het uploaden van het configuratiebestand.
    • Een Step Functions-statusmachine die de migratielogica uitvoert. Het volgende diagram illustreert de toestandsmachine.
      Diagram dat de toestandsmachine weergeeft die wordt ingezet door de oplossingsstapel.
    • Een AWS Glue Python-shelltaak die wordt gebruikt om de metadata uit Google BigQuery te extraheren. De metadata worden opgeslagen in een DynamoDB-tabel, met een berekend attribuut om prioriteit te geven aan de migratietaak. De connector maakt standaard één partitie per 400 MB in de tabel die wordt gelezen (vóór het filteren). Op het moment van schrijven is de Google BigQuery Storage-API heeft een maximum quota voor parallelle leesstromen, dus hebben we de limiet ingesteld voor werkknooppunten voor tabellen die groter zijn dan 400 GB. Op basis van die waarden berekenen we ook het maximale aantal taken dat parallel kan worden uitgevoerd.
    • Een AWS Glue ETL-taak die wordt gebruikt om de gegevens uit elke Google BigQuery-tabel te extraheren en op te slaan in Amazon S3 in Parquet-indeling.
    • Een DynamoDB-tabel (bq_to_s3_tracking) gebruikt om de metadata op te slaan voor elke te migreren tabel (grootte van de tabel, S3-pad gebruikt om de gemigreerde gegevens op te slaan en het aantal werknemers dat nodig is om de tabel te migreren).
    • Een DynamoDB-tabel (bq_to_s3_maxstreams) gebruikt om het maximale aantal streams per statusmachine-run op te slaan. Dit helpt ons het aantal mislukte opdrachten als gevolg van limieten of quota's te minimaliseren. Gebruik de Cloud Formation-sjabloon om de naam van de DynamoDB-tabel aan te passen. Het voorvoegsel voor de DynamoDB-tabel is bq_to_s3.
    • De IAM-rollen die nodig zijn voor de statusmachine en AWS Glue-taken.
  1. Kies Volgende.

Schermbijschrift met de AWS Cloudformation Create stack-pagina.

  1. Voor Stack naam, voer een naam in.
  2. Voor parameters, voer de parameters in de volgende tabel in en maak vervolgens uw keuze creëren.
CloudFormation-sjabloonparameter Toegestane waarden Omschrijving
InputBucketName S3-bucketnaam

De S3-bucket waar de AWS Glue-taak de gemigreerde gegevens opslaat.

De gegevens worden feitelijk opgeslagen in een map met de naam s3-redshift-loader-source, dat wordt gebruikt door het Custom Auto Loader Framework.

InputConnectionName AWS Glue-verbindingsnaam, de standaard is glue-bq-connector-24 De naam van de AWS Glue-verbinding die is gemaakt met de Google BigQuery-connector.
InputDynamoDBTablePrefix DynamoDB-tabelnaamvoorvoegsel, de standaardwaarde is bq_to_s3 Het voorvoegsel dat wordt gebruikt bij het benoemen van de twee DynamoDB-tabellen die door de oplossing zijn gemaakt.
InputGlueETLJob AWS Glue ETL-taaknaam, de standaard is bq-migration-ETL De naam die u aan de AWS Glue ETL-taak wilt geven. Het daadwerkelijke script wordt opgeslagen in het S3-pad dat is opgegeven in de parameter InputGlueS3Path.
InputGlueMetaJob AWS Glue Python shell-taaknaam, de standaard is bq-get-metadata De naam die u wilt geven aan de AWS Glue Python-shelltaak. Het daadwerkelijke script wordt opgeslagen in het S3-pad dat is opgegeven in de parameter InputGlueS3Path.
InputGlueS3Path S3-pad, de standaard is s3://aws-glue-scripts-${AWS::Account}-${AWS::Region}/admin/ Dit is het S3-pad waarin de stapel de scripts voor AWS Glue-taken kopieert. Vergeet niet te vervangen: ${AWS::Account} met de daadwerkelijke AWS-account-ID en ${AWS::Region} met de regio die u van plan bent te gebruiken, of geef uw eigen bucket en voorvoegsel op in een volledig pad.
InputMaxParallelism Aantal uit te voeren parallelle migratietaken, de standaardwaarde is 30 Het maximum aantal tabellen dat u gelijktijdig wilt migreren.
InputBQSecret AWS Secrets Manager geheime naam De naam van het AWS Secrets Manager-geheim waarin u de Google BigQuery-inloggegevens heeft opgeslagen.
InputBQProjectName Naam Google BigQuery-project De naam van uw project in Google BigQuery waarin u tijdelijke tabellen wilt opslaan; je hebt schrijfrechten nodig voor het project.
StateMachineName

Step Functions staat machinenaam, de standaard is

bq-to-s3-migration-state-machine

De naam van de Step Functions-statusmachine.
SourceS3BucketName S3-bucketnaam, de standaardwaarde is aws-blogs-artifacts-public

De S3-bucket waarin de artefacten voor dit bericht zijn opgeslagen.

Verander de standaard niet.

Implementeer en configureer het Custom Auto Loader Framework om bestanden van Amazon S3 naar Amazon Redshift te laden

Het hulpprogramma Custom Auto Loader Framework maakt het opnemen van gegevens naar Amazon Redshift eenvoudiger en laadt automatisch gegevensbestanden van Amazon S3 naar Amazon Redshift. De bestanden worden toegewezen aan de respectievelijke tabellen door bestanden simpelweg neer te zetten op vooraf geconfigureerde locaties op Amazon S3. Raadpleeg voor meer informatie over de architectuur en interne workflow Aangepast Auto Loader-framework.

Voer de volgende stappen uit om het Custom Auto Loader Framework in te stellen:

  1. Kies Start Stack om de CloudFormation-stack te implementeren in de us-east-1 Regio:

  1. Kies op de AWS CloudFormation-console Volgende.
  2. Geef de volgende parameters op om ervoor te zorgen dat resources met succes worden gemaakt. Zorg dat je deze waarden vooraf hebt verzameld.
Parameternaam Toegestane waarden Omschrijving
CopyCommandSchedule cron(0/5 * ? * * *) De EventBridge-regels KickoffFileProcessingSchedule en QueueRSProcessingSchedule worden geactiveerd op basis van dit schema. De standaardwaarde is 5 minuten.
DatabaseName dev De naam van de Amazon Redshift-database.
DatabaseSchemaName public De naam van het Amazon Redshift-schema.
DatabaseUserName demo De gebruikersnaam van Amazon Redshift die toegang heeft om COPY-opdrachten uit te voeren op de Amazon Redshift-database en het schema.
RedshiftClusterIdentifier democluster De naam van het Amazon Redshift-cluster.
RedshiftIAMRoleARN arn:aws:iam::7000000000:role/RedshiftDemoRole De aan het Amazon Redshift-cluster gekoppelde rol, die toegang heeft tot de S3-bucket. Deze rol wordt gebruikt in COPY-opdrachten.
SourceS3Bucket Your-bucket-name De S3-bucket waar gegevens zich bevinden. Gebruik dezelfde bucket die u gebruikte om de gemigreerde gegevens op te slaan, zoals aangegeven in de vorige stapel.
CopyCommandOptions delimiter '|' gzip

Geef de extra gegevensformaatparameters van de COPY-opdracht als volgt op:

delimiter '|' dateformat 'auto' TIMEFORMAT 'auto'

InitiateSchemaDetection Yes De instelling om het schema dynamisch te detecteren voordat het bestand wordt geüpload.

De volgende schermafbeelding toont een voorbeeld van onze parameters.

Schermopname met de stapeldetailpagina met de invoerparameters gevuld met voorbeeldwaarden

  1. Kies creëren.
  2. Bewaak de voortgang van het maken van de stapel en wacht tot deze is voltooid.
  3. Om de Custom Auto Loader Framework-configuratie te controleren, logt u in op het Amazon S3-console en navigeer naar de S3-bucket die u hebt opgegeven als een waarde voor de SourceS3Bucket parameter.

Je zou een nieuwe directory moeten zien genaamd s3-redshift-loader-source is gecreëerd.

Schermbijschrift van de Amazon S3-console met de map die u in uw S3-bucket zou moeten kunnen zien.

Test de oplossing

Voer de volgende stappen uit om de oplossing te testen:

  1. Maak het configuratiebestand op basis van de vereisten. U kunt ook de downloaden demo bestand.
  2. Om de S3-bucket in te stellen, navigeert u op de Amazon S3-console naar de map bq-mig-config in de emmer die u in de stapel hebt opgegeven.
  3. Upload het configuratiebestand erin.
  4. Om EventBridge-meldingen voor de bucket in te schakelen, opent u de bucket op de console en op de Properties tabblad, zoek Gebeurtenismeldingen.
  5. In het Amazon EventBridge sectie, kies Edit.
  6. kies On, kies dan Wijzigingen opslaan.

  1. Bewaak op de AWS Step Function-console de werking van de statusmachine.
  2. Bewaak de status van de ladingen in Amazon Redshift. Raadpleeg voor instructies Huidige belastingen bekijken.
  3. Open de Amazon Redshift Query Editor V2 en vraag uw gegevens op.

Prijsoverwegingen

Er worden mogelijk kosten in rekening gebracht voor het migreren van gegevens van Google BigQuery naar Amazon S3. Bekijk en bereken de kosten voor het verplaatsen van uw gegevens op uw Google Cloud-factureringsconsole. Op het moment van schrijven rekent AWS Glue 3.0 of later $ 0.44 per DPU-uur, gefactureerd per seconde, met een minimum van 1 minuut voor Spark ETL-taken. Voor meer informatie, zie AWS Glue-prijzen. Met automatisch schalen ingeschakeld, voegt AWS Glue automatisch werknemers toe aan en verwijdert deze uit het cluster, afhankelijk van de parallelliteit in elke fase of microbatch van de taakuitvoering.

Opruimen

Om te voorkomen dat er in de toekomst kosten in rekening worden gebracht, ruimt u uw resources op:

  1. Verwijder de CloudFormation-oplossingsstack.
  2. Verwijder de CloudFormation Custom Auto Loader Framework-stack.

Conclusie

In dit bericht hebben we laten zien hoe u een schaalbare en geautomatiseerde datapijplijn kunt bouwen om uw gegevens van Google BigQuery naar Amazon Redshift te migreren. We hebben ook benadrukt hoe het Custom Auto Loader-framework de schemadetectie kan automatiseren, tabellen voor uw S3-bestanden kan maken en de bestanden continu in uw Amazon Redshift-magazijn kan laden. Met deze aanpak kun je de migratie van hele projecten (zelfs meerdere projecten tegelijk) in Google BigQuery naar Amazon Redshift automatiseren. Dit helpt de datamigratietijden naar Amazon Redshift aanzienlijk te verbeteren door de automatische parallellisatie van tabelmigratie.

De functie voor automatisch kopiëren in Amazon Redshift vereenvoudigt het automatisch laden van gegevens vanuit Amazon S3 met een eenvoudige SQL-opdracht. Gebruikers kunnen de gegevensopname van Amazon S3 naar Amazon Redshift eenvoudig automatiseren met behulp van de Amazon Redshift voorbeeldfunctie voor automatisch kopiëren

Raadpleeg voor meer informatie over de prestaties van de Google BigQuery-connector voor AWS Glue Migreer terabytes aan gegevens snel van Google Cloud naar Amazon S3 met AWS Glue Connector voor Google BigQuery en leer hoe u snel een grote hoeveelheid gegevens (1.9 TB) naar Amazon S3 kunt migreren (ongeveer 8 minuten).

Zie voor meer informatie over AWS Glue ETL-taken Vereenvoudig datapijplijnen met automatische codegeneratie en workflows van AWS Glue en ETL gemakkelijker maken met AWS Glue Studio.


Over de auteurs

Tahir Aziz is een Analytics Solution Architect bij AWS. Hij heeft meer dan 13 jaar gewerkt aan het bouwen van datawarehouses en big data-oplossingen. Hij helpt klanten graag bij het ontwerpen van end-to-end analytics-oplossingen op AWS. Naast zijn werk houdt hij van reizen en koken.

Ritesh Kumar Sinha is een Analytics Specialist Solutions Architect gevestigd in San Francisco. Hij heeft klanten al meer dan 16 jaar geholpen bij het bouwen van schaalbare datawarehousing en big data-oplossingen. Hij ontwerpt en bouwt graag efficiënte end-to-end-oplossingen op AWS. In zijn vrije tijd houdt hij van lezen, wandelen en yoga.

Fabrizio Napolitano is een Principal Specialist Solutions Architect voor DB en Analytics. Hij heeft de afgelopen 20 jaar in de analyseruimte gewerkt en is onlangs en nogal verrast een hockeyvader geworden nadat hij naar Canada was verhuisd.

Manjula Nagineni is een Senior Solutions Architect bij AWS in New York. Ze werkt samen met grote financiële dienstverleners, ontwerpt en moderniseert hun grootschalige applicaties terwijl ze AWS Cloud-services adopteert. Ze is gepassioneerd door het cloud-native ontwerpen van big data-workloads. Ze heeft meer dan 20 jaar IT-ervaring in softwareontwikkeling, analyse en architectuur in meerdere domeinen, zoals financiën, detailhandel en telecom.

Sohaib Katariwala is een Analytics Specialist Solutions Architect bij AWS. Hij heeft meer dan 12 jaar ervaring met het helpen van organisaties om inzichten uit hun data te halen.

spot_img

Laatste intelligentie

spot_img