Utilizzo di Apache Hadoop come fonte per AWS SCT - AWS Schema Conversion Tool

Le traduzioni sono generate tramite traduzione automatica. In caso di conflitto tra il contenuto di una traduzione e la versione originale in Inglese, quest'ultima prevarrà.

Utilizzo di Apache Hadoop come fonte per AWS SCT

Puoi utilizzare l'interfaccia a riga di AWS SCT comando (CLI) per migrare da Apache Hadoop ad Amazon EMR. AWS SCTutilizza il tuo bucket Amazon S3 come spazio di archiviazione temporaneo per i tuoi dati durante la migrazione.

AWS SCTsupporta come sorgente Apache Hadoop versione 2.2.0 e successive. Inoltre, AWS SCT supporta Apache Hive versione 0.13.0 e successive.

AWS SCTsupporta come destinazione Amazon EMR versione 6.3.0 e successive. Inoltre, AWS SCT supporta come destinazione Apache Hadoop versione 2.6.0 e successive e Apache Hive versione 0.13.0 e successive.

Prerequisiti per l'utilizzo di Apache Hadoop come sorgente

I seguenti prerequisiti sono necessari per connettersi ad Apache Hadoop con la CLI. AWS SCT

  • Crea un bucket Amazon S3 per archiviare i dati durante la migrazione. Puoi quindi copiare i dati su Amazon EMR HDFS o utilizzare Amazon S3 come archivio di dati per i tuoi carichi di lavoro Hadoop. Per ulteriori informazioni, consulta Creazione di un bucket nella Guida per l'utente di Amazon S3.

  • Crea un ruolo AWS Identity and Access Management (IAM) con la AmazonS3FullAccess policy. AWS SCTutilizza questo ruolo IAM per accedere al tuo bucket Amazon S3.

  • Prendi nota della tua chiave AWS segreta e della tua chiave di accesso AWS segreta. Per ulteriori informazioni sulle chiavi di AWS accesso, consulta Managing Access Keys nella IAM User Guide.

  • Crea e configura un cluster Amazon EMR di destinazione. Per ulteriori informazioni, consulta la Guida introduttiva ad Amazon EMR nella Guida alla gestione di Amazon EMR.

  • Installa l'distcputilità sul tuo cluster Apache Hadoop di origine. Inoltre, installa l's3-dist-cputilità sul cluster Amazon EMR di destinazione. Assicurati che gli utenti del tuo database dispongano delle autorizzazioni necessarie per eseguire queste utilità.

  • Configura il core-site.xml file nel tuo cluster Hadoop di origine per utilizzare il protocollo s3a. A tale scopo, impostate il fs.s3a.aws.credentials.provider parametro su uno dei seguenti valori.

    • org.apache.hadoop.fs.s3a.TemporaryAWSCredentialsProvider

    • org.apache.hadoop.fs.s3a.SimpleAWSCredentialsProvider

    • org.apache.hadoop.fs.s3a.AnonymousAWSCredentialsProvider

    • org.apache.hadoop.fs.s3a.auth.AssumedRoleCredentialProvider

    È possibile aggiungere il seguente esempio di codice nel core-site.xml file.

    <property> <name>fs.s3a.aws.credentials.provider</name> <value>org.apache.hadoop.fs.s3a.SimpleAWSCredentialsProvider</value> </property>

    L'esempio precedente mostra una delle quattro opzioni del precedente elenco di opzioni. Se non imposti il fs.s3a.aws.credentials.provider parametro nel core-site.xml file, AWS SCT sceglie automaticamente il provider.

Autorizzazioni per l'utilizzo di Hive come fonte

Le autorizzazioni richieste per un utente sorgente di Hive sono le seguenti:

  • READaccesso alle cartelle dei dati di origine e al bucket Amazon S3 di origine

  • READ+WRITEaccesso ai bucket Amazon S3 intermedi e di destinazione

Per aumentare la velocità di migrazione, ti consigliamo di eseguire la compattazione per le tabelle di origine transazionali ACID.

Le autorizzazioni richieste per un utente target di Amazon EMR Hive sono le seguenti:

  • READaccesso al bucket Amazon S3 di destinazione

  • READ+WRITEaccesso al bucket Amazon S3 intermedio

  • READ+WRITEaccesso alle cartelle HDFS di destinazione

Autorizzazioni per l'utilizzo di HDFS come fonte

Le autorizzazioni richieste per HDFS come sorgente sono le seguenti:

  • EXECUTE per NameNode

  • EXECUTE+READper tutte le cartelle e i file di origine inclusi nel progetto di migrazione

  • READ+WRITEper la tmp directory in cui NameNode eseguire i job Spark e archiviare i file prima della migrazione ad Amazon S3

In HDFS, tutte le operazioni richiedono l'accesso trasversale. L'accesso trasversale richiede l'EXECUTEautorizzazione per tutti i componenti esistenti del percorso, ad eccezione del componente finale del percorso. Ad esempio, per qualsiasi operazione di accesso/foo/bar/baz, l'utente deve disporre dell'EXECUTEautorizzazione su //foo, e/foo/bar.

L'esempio di codice seguente mostra come concedere EXECUTE+READ le autorizzazioni per le cartelle e i file di origine e le READ+WRITE autorizzazioni per la directory. tmp

hadoop fs –chmod –R 744 /user/hdfs-data hadoop fs –chmod –R 766 /tmp

Autorizzazioni per l'utilizzo di HDFS come destinazione

Le autorizzazioni richieste per Amazon EMR HDFS come destinazione sono le seguenti:

  • EXECUTEper il NameNode cluster Amazon EMR di destinazione

  • READ+WRITEper le cartelle HDFS di destinazione in cui archivierai i dati dopo la migrazione

Connessione ad Apache Hadoop come fonte

È possibile utilizzare Apache Hadoop come sorgente nella AWS SCT versione 1.0.670 o superiore. Puoi migrare i cluster Hadoop su Amazon EMR solo nell'interfaccia a riga di AWS SCT comando (CLI). Prima di iniziare, acquisisci familiarità con l'interfaccia a riga di comando di. AWS SCT Per ulteriori informazioni, consulta AWS SCT Riferimento CLI.

Per connettersi ad Apache Hadoop nella CLI AWS SCT
  1. Crea un nuovo script AWS SCT CLI o modifica un modello di scenario esistente. Ad esempio, puoi scaricare e modificare il HadoopMigrationTemplate.scts modello. Per ulteriori informazioni, consulta Ottenere scenari CLI.

  2. Configura le impostazioni AWS SCT dell'applicazione come la posizione del driver e la cartella di registro.

    Scarica il driver JDBC richiesto e specifica la posizione in cui archiviare il file. Per ulteriori informazioni, consulta Scaricamento dei driver di database richiesti.

    Il seguente esempio di codice mostra come aggiungere il percorso al driver Apache Hive. Dopo aver eseguito questo esempio di codice, AWS SCT memorizza i file di registro nella c:\sct cartella.

    SetGlobalSettings -save: 'true' -settings: '{ "hive_driver_file": "c:\\sct\\HiveJDBC42.jar", "log_folder": "c:\\sct", "console_log_folder": "c:\\sct" }' /

    È possibile utilizzare questo esempio e i seguenti in Windows.

  3. Crea un nuovo AWS SCT progetto.

    L'esempio di codice seguente crea il hadoop_emr progetto nella c:\sct cartella.

    CreateProject -name: 'hadoop_emr' -directory: 'c:\sct' /
  4. Aggiungi il tuo cluster Hadoop di origine al progetto.

    Usa il AddSourceCluster comando per connetterti al cluster Hadoop di origine. Assicurati di fornire valori per i seguenti parametri obbligatori: namehost,port, euser. Gli altri parametri sono opzionali.

    L'esempio di codice seguente aggiunge il cluster Hadoop di origine. Questo esempio viene impostato HADOOP_SOURCE come nome del cluster di origine. Utilizzate questo nome di oggetto per aggiungere servizi Hive e HDFS al progetto e creare regole di mappatura.

    AddSourceCluster -name: 'HADOOP_SOURCE' -vendor: 'HADOOP' -host: 'hadoop_address' -port: '22' -user: 'hadoop_user' -password: 'hadoop_password' -useSSL: 'true' -privateKeyPath: 'c:\path\name.pem' -passPhrase: 'hadoop_passphrase' /

    Nell'esempio precedente, sostituisci hadoop_address con l'indirizzo IP del tuo cluster Hadoop. Se necessario, configura il valore dell'opzione porta. Quindi, sostituisci hadoop_user e hadoop_password con il nome del tuo utente Hadoop e la password per questo utente. In path\ name, inserisci il nome e il percorso del file PEM per il cluster Hadoop di origine.

  5. Salva il tuo script CLI. Quindi, aggiungi le informazioni di connessione per i tuoi servizi Hive e HDFS.

Connessione ai servizi Hive e HDFS di origine

Puoi connetterti ai servizi Hive e HDFS di origine con la AWS SCT CLI. Per connetterti ad Apache Hive, usa il driver Hive JDBC versione 2.3.4 o superiore. Per ulteriori informazioni, consulta Scaricamento dei driver di database richiesti.

AWS SCTsi connette ad Apache Hive con l'utente del hadoop cluster. A tale scopo, utilizzate i AddSourceClusterHDFS comandi AddSourceClusterHive and. È possibile utilizzare uno dei seguenti approcci.

  • Crea un nuovo tunnel SSH.

    In createTunnel, immettere true. Perhost, inserisci l'indirizzo IP interno del tuo servizio Hive o HDFS di origine. Perport, inserisci la porta di servizio del tuo servizio Hive o HDFS.

    Quindi, inserisci le tue credenziali Hive o HDFS per e. user password Per ulteriori informazioni sui tunnel SSH, consulta Configurare un tunnel SSH verso il nodo primario utilizzando il port forwarding locale nella Amazon EMR Management Guide.

  • Usa un tunnel SSH esistente.

    In host, immettere localhost. Perport, inserisci la porta locale dai parametri del tunnel SSH.

  • Connettiti direttamente ai tuoi servizi Hive e HDFS.

    Perhost, inserisci l'indirizzo IP o il nome host del servizio Hive o HDFS di origine. Perport, inserisci la porta di servizio del tuo servizio Hive o HDFS. Quindi, inserisci le tue credenziali Hive o HDFS per e. user password

Per connettersi a Hive e HDFS nella CLI AWS SCT
  1. Apri il tuo script CLI che include le informazioni di connessione per il tuo cluster Hadoop di origine. Assicurati di utilizzare il nome del cluster Hadoop definito nel passaggio precedente.

  2. Aggiungi il tuo servizio Hive di origine al progetto.

    Usa il AddSourceClusterHive comando per connettere il servizio Hive di origine. Assicurati di fornire valori per i seguenti parametri obbligatori: userpassword,cluster,name, eport. Gli altri parametri sono opzionali.

    L'esempio di codice seguente crea un tunnel AWS SCT per funzionare con il tuo servizio Hive. Questo servizio Hive di origine viene eseguito sullo stesso PC diAWS SCT. Questo esempio utilizza il cluster di HADOOP_SOURCE origine dell'esempio precedente.

    AddSourceClusterHive -cluster: 'HADOOP_SOURCE' -name: 'HIVE_SOURCE' -host: 'localhost' -port: '10005' -user: 'hive_user' -password: 'hive_password' -createTunnel: 'true' -localPort: '10005' -remoteHost: 'hive_remote_address' -remotePort: 'hive_port' /

    Il seguente esempio di codice si connette al tuo servizio Hive senza un tunnel.

    AddSourceClusterHive -cluster: 'HADOOP_SOURCE' -name: 'HIVE_SOURCE' -host: 'hive_address' -port: 'hive_port' -user: 'hive_user' -password: 'hive_password' /

    Negli esempi precedenti, sostituisci hive_user e hive_password con il nome del tuo utente Hive e la password per questo utente.

    Quindi, sostituisci hive_address e hive_port con l'indirizzo NameNode IP e la porta del tuo cluster Hadoop di origine.

    Per hive_remote_address, puoi utilizzare il valore predefinito 127.0.0.1 o l'indirizzo NameNode IP del servizio Hive di origine.

  3. Aggiungi il tuo servizio HDFS di origine al progetto.

    Usa il AddSourceClusterHDFS comando per connettere il servizio HDFS di origine. Assicurati di fornire valori per i seguenti parametri obbligatori: userpassword,cluster,name, eport. Gli altri parametri sono opzionali.

    Assicurati che l'utente disponga delle autorizzazioni necessarie per migrare i dati dal servizio HDFS di origine. Per ulteriori informazioni, consulta Autorizzazioni per l'utilizzo di Hive come fonte.

    L'esempio di codice seguente crea un tunnel AWS SCT per funzionare con il servizio Apache HDFS. Questo esempio utilizza il cluster HADOOP_SOURCE di origine che hai creato in precedenza.

    AddSourceClusterHDFS -cluster: 'HADOOP_SOURCE' -name: 'HDFS_SOURCE' -host: 'localhost' -port: '9005' -user: 'hdfs_user' -password: 'hdfs_password' -createTunnel: 'true' -localPort: '9005' -remoteHost: 'hdfs_remote_address' -remotePort: 'hdfs_port' /

    Il codice seguente si connette al tuo servizio Apache HDFS senza un tunnel.

    AddSourceClusterHDFS -cluster: 'HADOOP_SOURCE' -name: 'HDFS_SOURCE' -host: 'hdfs_address' -port: 'hdfs_port' -user: 'hdfs_user' -password: 'hdfs_password' /

    Negli esempi precedenti, sostituisci hdfs_user e hdfs_password con il nome dell'utente HDFS e la password di questo utente.

    Quindi, sostituisci hdfs_address e hdfs_port con l'indirizzo NameNode IP e la porta del tuo cluster Hadoop di origine.

    Per hdfs_remote_address, è possibile utilizzare il valore predefinito 127.0.0.1 o l'indirizzo NameNode IP del servizio Hive di origine.

  4. Salva il tuo script CLI. Quindi, aggiungi le informazioni di connessione per il cluster Amazon EMR di destinazione e i comandi di migrazione.

Connessione ad Amazon EMR come destinazione

Puoi connetterti al cluster Amazon EMR di destinazione con l'interfaccia a AWS SCT riga di comando. A tal fine, autorizzi il traffico in entrata e usi SSH. In questo caso, AWS SCT dispone di tutte le autorizzazioni necessarie per lavorare con il tuo cluster Amazon EMR. Per ulteriori informazioni, consulta Prima della connessione e della connessione al nodo primario tramite SSH nella Amazon EMR Management Guide.

AWS SCTsi connette ad Amazon EMR Hive con l'utente del hadoop cluster. Per connetterti ad Amazon EMR Hive, usa il driver Hive JDBC versione 2.6.2.1002 o superiore. Per ulteriori informazioni, consulta Scaricamento dei driver di database richiesti.

Per connettersi ad Amazon EMR nell'interfaccia a riga di comando AWS SCT
  1. Apri il tuo script CLI che include le informazioni di connessione per il tuo cluster Hadoop di origine. Aggiungi le credenziali Amazon EMR di destinazione in questo file.

  2. Aggiungi il cluster Amazon EMR di destinazione al progetto.

    L'esempio di codice seguente aggiunge il cluster Amazon EMR di destinazione. Questo esempio viene impostato HADOOP_TARGET come nome del cluster di destinazione. Usa questo nome di oggetto per aggiungere i tuoi servizi Hive e HDFS e una cartella bucket Amazon S3 al progetto e creare regole di mappatura.

    AddTargetCluster -name: 'HADOOP_TARGET' -vendor: 'AMAZON_EMR' -host: 'ec2-44-44-55-66.eu-west-1.EXAMPLE.amazonaws.com' -port: '22' -user: 'emr_user' -password: 'emr_password' -useSSL: 'true' -privateKeyPath: 'c:\path\name.pem' -passPhrase: '1234567890abcdef0!' -s3Name: 'S3_TARGET' -accessKey: 'AKIAIOSFODNN7EXAMPLE' -secretKey: 'wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY' -region: 'eu-west-1' -s3Path: 'doc-example-bucket/example-folder' /

    Nell'esempio precedente, inserisci i nomi AWS delle tue risorse e le informazioni di connessione Amazon EMR. Ciò include l'indirizzo IP del cluster Amazon EMR, la chiave di AWS accesso, la chiave di accesso AWS segreta e il bucket Amazon S3. Se necessario, configura il valore della variabile porta. Quindi, sostituisci emr_user ed emr_password con il nome del tuo utente Amazon EMR e la password per questo utente. In path\ name, inserisci il nome e il percorso del file PEM per il cluster Amazon EMR di destinazione. Per ulteriori informazioni, vedere Scarica il file PEM per EMR Cluster Access.

  3. Aggiungi il bucket Amazon S3 di destinazione al progetto.

    L'esempio di codice seguente aggiunge il bucket Amazon S3 di destinazione. Questo esempio utilizza il HADOOP_TARGET cluster che hai creato in precedenza.

    AddTargetClusterS3 -cluster: 'HADOOP_TARGET' -Name: 'S3_TARGET' -accessKey: 'AKIAIOSFODNN7EXAMPLE' -secretKey: 'wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY' -region: 'eu-west-1' -s3Path: 'doc-example-bucket/example-folder' /

    Nell'esempio precedente, inserisci la tua chiave di AWS accesso, la chiave di accesso AWS segreta e il bucket Amazon S3.

  4. Aggiungi il servizio Hive di destinazione al progetto.

    L'esempio di codice seguente crea un tunnel AWS SCT per funzionare con il servizio Hive di destinazione. Questo esempio utilizza il cluster HADOOP_TARGET di destinazione che hai creato in precedenza.

    AddTargetClusterHive -cluster: 'HADOOP_TARGET' -name: 'HIVE_TARGET' -host: 'localhost' -port: '10006' -user: 'hive_user' -password: 'hive_password' -createTunnel: 'true' -localPort: '10006' -remoteHost: 'hive_address' -remotePort: 'hive_port' /

    Nell'esempio precedente, sostituisci hive_user e hive_password con il nome del tuo utente Hive e la password per questo utente.

    Quindi, sostituisci hive_address con il valore predefinito 127.0.0.1 o con l'indirizzo NameNode IP del servizio Hive di destinazione. Quindi, sostituisci hive_port con la porta del servizio Hive di destinazione.

  5. Aggiungi il servizio HDFS di destinazione al progetto.

    L'esempio di codice seguente crea un tunnel AWS SCT per funzionare con il servizio Apache HDFS. Questo esempio utilizza il cluster HADOOP_TARGET di destinazione che hai creato in precedenza.

    AddTargetClusterHDFS -cluster: 'HADOOP_TARGET' -name: 'HDFS_TARGET' -host: 'localhost' -port: '8025' -user: 'hdfs_user' -password: 'hdfs_password' -createTunnel: 'true' -localPort: '8025' -remoteHost: 'hdfs_address' -remotePort: 'hdfs_port' /

    Nell'esempio precedente, sostituisci hdfs_user e hdfs_password con il nome dell'utente HDFS e la password di questo utente.

    Quindi, sostituisci hdfs_address e hdfs_port con l'indirizzo IP privato e la porta del NameNode servizio HDFS di destinazione.

  6. Salva il tuo script CLI. Quindi, aggiungi le regole di mappatura e i comandi di migrazione. Per ulteriori informazioni, consulta Migrazione di Apache Hadoop su Amazon EMR.