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à.
S3 (s3-dist-cp) DistCp
Apache DistCp è uno strumento open source che puoi utilizzare per copiare grandi quantità di dati. S3 DistCp è simile DistCp, ma ottimizzato per funzionare AWS, in particolare con Amazon S3. Il comando per S3 DistCp in Amazon EMR versione 4.0 e successive s3-dist-cp
è quello che aggiungi come passaggio in un cluster o nella riga di comando. Utilizzando S3DistCp, puoi copiare in modo efficiente grandi quantità di dati da Amazon S3 in HDFS, dove possono essere elaborati con passaggi successivi nel tuo cluster Amazon EMR. Puoi anche usare S3 DistCp per copiare dati tra bucket Amazon S3 o da HDFS ad Amazon S3. S3 DistCp è più scalabile ed efficiente per la copia parallela di un gran numero di oggetti tra bucket e account. AWS
Per i comandi specifici che dimostrano la flessibilità di S3DistCP in scenari reali, consulta Sette suggerimenti
Ad esempio DistCp, S3 DistCp utilizza MapReduce la copia in modo distribuito. Condivide la copia, la gestione degli errori, il ripristino e le attività di creazione di report su più server. Per ulteriori informazioni sul progetto DistCp open source Apache, consulta la DistCpguida
Se S3 non DistCp è in grado di copiare alcuni o tutti i file specificati, la fase del cluster fallisce e restituisce un codice di errore diverso da zero. In questo caso, S3 non DistCp pulisce i file parzialmente copiati.
Importante
S3 non DistCp supporta i nomi di bucket Amazon S3 che contengono il carattere di sottolineatura.
S3 DistCp non supporta la concatenazione per i file Parquet. Usa invece. PySpark Per ulteriori informazioni, consulta la sezione relativa alla Concatenazione dei file Parquet in Amazon EMR
Per evitare errori di copia quando si utilizza S3DistCP per copiare un singolo file (anziché una directory) da S3 a HDFS, utilizza Amazon EMR versione 5.33.0 o successive o Amazon EMR versione 6.3.0 o successive.
Opzioni S3 DistCp
Sebbene sia simile a DistCp, S3 DistCp supporta un diverso set di opzioni per modificare il modo in cui copia e comprime i dati.
Quando chiami S3DistCp, puoi specificare le opzioni descritte nella tabella seguente. Le opzioni vengono aggiunte alla fase con l'elenco di argomenti. Nella tabella seguente sono riportati alcuni esempi DistCp degli argomenti S3.
Opzione | Descrizione | Richiesto |
---|---|---|
‑‑src=LOCATION
|
Posizione dei dati da copiare. Può essere una posizione HDFS o Amazon S3. Esempio: ImportanteS3 non DistCp supporta i nomi di bucket Amazon S3 che contengono il carattere di sottolineatura. |
Sì |
‑‑dest=LOCATION
|
Destinazione per i dati. Può essere una posizione HDFS o Amazon S3. Esempio: ImportanteS3 non DistCp supporta i nomi di bucket Amazon S3 che contengono il carattere di sottolineatura. |
Sì |
‑‑srcPattern=PATTERN
|
Un'espressione regolare Se l'argomento dell'espressione regolare contiene caratteri speciali quali l'asterisco (*), l'espressione regolare o l'intera stringa Esempio: |
No |
‑‑groupBy=PATTERN
|
Un'espressione regolare Le parentesi indicano il modo in cui i file devono essere raggruppati, con tutti gli elementi che soddisfano l'istruzione tra parentesi riuniti in un singolo file di output. Se l'espressione regolare non include un'istruzione tra parentesi, il cluster ha esito negativo nella fase S3 e restituisce un errore. DistCp Se l'argomento dell'espressione regolare contiene caratteri speciali quali l'asterisco (*), l'espressione regolare o l'intera stringa Se è specificato Esempio: |
No |
‑‑targetSize=SIZE
|
La dimensione in mebibyte (MiB) dei file da creare in base all'opzione Se i file concatenati da Esempio: |
No |
‑‑appendToLastFile |
Specifica il comportamento di S3 DistCp durante la copia di file da Amazon S3 a HDFS già presenti. Aggiunge i nuovi dati ai file esistenti. Se utilizzi |
No |
‑‑outputCodec=CODEC
|
Specifica i codec di compressione da utilizzare per i file copiati. I valori possibili sono Esempio: |
No |
‑‑s3ServerSideEncryption
|
Assicura che i dati di destinazione vengano trasferiti tramite SSL e crittografati automaticamente in Amazon S3 utilizzando AWS una chiave lato servizio. Quando si recuperano dati utilizzando S3, gli oggetti vengono automaticamente DistCp decrittografati. Se tenti di copiare un oggetto non crittografato in un bucket Amazon S3 che richiede la crittografia, l'operazione ha esito negativo. Per maggiori informazioni, consulta Utilizzo della crittografia dei dati. Esempio: |
No |
‑‑deleteOnSuccess
|
Se l'operazione di copia ha esito positivo, questa opzione fa sì che S3 elimini DistCp i file copiati dalla posizione di origine. Questa funzione è utile se stai copiando file di output, ad esempio i file di log, da una posizione a un'altra come attività pianificata e non vuoi copiare lo stesso file due volte. Esempio: |
No |
‑‑disableMultipartUpload
|
Disattiva l'utilizzo del caricamento in più parti. Esempio: |
No |
‑‑multipartUploadChunkSize=SIZE
|
Le dimensioni, in MiB, di ogni parte in un caricamento in più parti di Amazon S3. S3 DistCp utilizza il caricamento in più parti quando copia dati di dimensioni superiori a. Esempio: |
No |
‑‑numberFiles
|
Antepone numeri sequenziali ai file di output. Il conteggio inizia da 0, a meno che non venga specificato un valore diverso tramite Esempio: |
No |
‑‑startingIndex=INDEX
|
Utilizzato con Esempio: |
No |
‑‑outputManifest=FILENAME
|
Crea un file di testo, compresso con Gzip, che contiene un elenco di tutti i file copiati da S3. DistCp Esempio: |
No |
‑‑previousManifest=PATH
|
Legge un file manifest creato durante una precedente chiamata a S3 utilizzando il flag. DistCp Esempio: |
No |
‑‑requirePreviousManifest |
Richiede un manifesto precedente creato durante una precedente chiamata a S3. DistCp Se impostato su false, non vengono generati errori se non viene specificato un manifest precedente. Il valore predefinito è true. |
No |
‑‑copyFromManifest
|
Inverte il comportamento di Esempio: |
No |
‑‑s3Endpoint=ENDPOINT |
Specifica l'endpoint Amazon S3 da utilizzare durante il caricamento di un file. Questa opzione imposta l'endpoint sia per l'origine che per la destinazione. Se non è impostato, l'endpoint predefinito è Esempio: |
No |
‑‑storageClass=CLASS |
La classe di archiviazione da utilizzare quando la destinazione è Amazon S3. I valori validi sono STANDARD e REDUCED_REDUNDANCY. Se questa opzione non è specificata, S3 DistCp tenta di preservare la classe di archiviazione. Esempio: |
No |
‑‑srcPrefixesFile=PATH |
Un file di testo in Amazon S3 (s3://), HDFS (hdfs:///) o nel file system locale (file:/) che contiene un elenco di prefissi Se Esempio: |
No |
Oltre alle opzioni precedenti, S3 DistCp implementa l'interfaccia Tool
Aggiungere S3 DistCp come fase in un cluster
Puoi chiamare S3 DistCp aggiungendolo come passaggio nel cluster. È possibile aggiungere fasi a un cluster all'avvio o in esecuzione utilizzando la console, la CLI o l'API. Gli esempi seguenti mostrano l'aggiunta di un DistCp passaggio S3 a un cluster in esecuzione. Per ulteriori informazioni sull'aggiunta di fasi a un cluster, consulta Invio di lavoro a un cluster nella Guida alla gestione di Amazon EMR.
Per aggiungere un DistCp passaggio S3 a un cluster in esecuzione utilizzando il AWS CLI
Per ulteriori informazioni sull'utilizzo dei comandi Amazon EMR in AWS CLI, consulta il AWS CLI Command Reference.
-
Per aggiungere un passaggio a un cluster che chiama S3DistCp, inserisci come argomenti i parametri che specificano come S3 DistCp deve eseguire l'operazione di copia.
L'esempio seguente copia il log dei daemon da Amazon S3 a
hdfs:///output
. Nel comando riportato qui di seguito:-
‑‑cluster-id
specifica il cluster -
Jar
è la posizione del file JAR S3DistCp . Per un esempio di come eseguire un comando su un cluster utilizzando command-runner.jar, consulta Invia una fase JAR personalizzata per l'esecuzione di uno script o di un comando. -
Args
è un elenco separato da virgole delle coppie nome-valore di opzioni da passare a S3. DistCp Per un elenco completo delle opzioni disponibili, consulta Opzioni S3 DistCp .
Per aggiungere una fase di DistCp copia S3 a un cluster in esecuzione, inserisci quanto segue in un file JSON salvato in Amazon S3 o nel tuo file system locale,
come in questo esempio.myStep.json
j-3GYXXXXXX9IOK
Sostituiscilo con il tuo ID del cluster eamzn-s3-demo-bucket
sostituiscilo con il nome del bucket Amazon S3.[ { "Name":"S3DistCp step", "Args":["s3-dist-cp","‑‑s3Endpoint=s3.amazonaws.com","‑‑src=s3://amzn-s3-demo-bucket/logs/j-3GYXXXXXX9IOJ/node/","‑‑dest=hdfs:///output","‑‑srcPattern=.*[a-zA-Z,]+"], "ActionOnFailure":"CONTINUE", "Type":"CUSTOM_JAR", "Jar":"command-runner.jar" } ]
aws emr add-steps ‑‑cluster-id
j-3GYXXXXXX9IOK
‑‑steps file://./myStep.json -
Esempio Copia dei file di log da Amazon S3 ad HDFS
Questo esempio illustra anche come copiare in HDFS i file di log archiviati in un bucket Amazon S3 aggiungendo una fase a un cluster in esecuzione. In questo esempio l'opzione ‑‑srcPattern
viene utilizzata per limitare i dati copiati nel log dei daemon.
Per copiare i file di log da Amazon S3 a HDFS utilizzando l'opzione ‑‑srcPattern
, inserisci quanto segue in un file JSON salvato in Amazon S3 o nel file system locale come
per questo esempio. myStep.json
j-3GYXXXXXX9IOK
Sostituiscilo con il tuo ID del cluster e amzn-s3-demo-bucket
sostituiscilo con il nome del bucket Amazon S3.
[ { "Name":"S3DistCp step", "Args":["s3-dist-cp","‑‑s3Endpoint=s3.amazonaws.com","‑‑src=s3://amzn-s3-demo-bucket/logs/j-3GYXXXXXX9IOJ/node/","‑‑dest=hdfs:///output","‑‑srcPattern=.*daemons.*-hadoop-.*"], "ActionOnFailure":"CONTINUE", "Type":"CUSTOM_JAR", "Jar":"command-runner.jar" } ]