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à.
S3DistCp (s3-dist-cp)
Apache DistCp è uno strumento open source che puoi usare per copiare grandi quantità di dati. S3DistCpè simile DistCp, ma ottimizzato per funzionare AWS, in particolare con Amazon S3. Il comando per S3DistCp Amazon EMR versione 4.0 e successive ès3-dist-cp, da aggiungere come passaggio in un cluster o nella riga di comando. S3DistCpUsandolo, 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 usarlo S3DistCp per copiare dati tra bucket Amazon S3 o da HDFS ad Amazon S3. S3DistCp è più scalabile ed efficiente per la copia parallela di un gran numero di oggetti tra bucket e account. AWS
Per comandi specifici che dimostrano la flessibilità di S3DistCP in scenari reali, consulta Seven tips for use nel blog Big Data. S3DistCp
Ad esempio DistCp, S3DistCp utilizza MapReduce per copiare 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 DistCp guida
Se non S3DistCp è possibile copiare alcuni o tutti i file specificati, la fase del cluster ha esito negativo e restituisce un codice di errore diverso da zero. In tal caso, S3DistCp non pulisce i file parzialmente copiati.
Importante
S3DistCp non supporta i nomi di bucket Amazon S3 che contengono il carattere di sottolineatura.
S3DistCp 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.
S3DistCp opzioni
Sebbene simile a DistCp, S3DistCp supporta un diverso set di opzioni per modificare il modo in cui copia e comprime i dati.
Quando si chiama S3DistCp, è possibile 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 degli S3DistCp argomenti.
| Opzione | Description | Richiesto |
|---|---|---|
--src=LOCATION
|
Posizione dei dati da copiare. Può essere una posizione HDFS o Amazon S3. Ad esempio: ImportanteS3DistCp non 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. Ad esempio: ImportanteS3DistCp non 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 Ad 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 e restituisce un errore. S3DistCp Se l'argomento dell'espressione regolare contiene caratteri speciali quali l'asterisco (*), l'espressione regolare o l'intera stringa Se è specificato Ad esempio: |
No |
--targetSize=SIZE
|
La dimensione in mebibyte (MiB) dei file da creare in base all'opzione Se i file concatenati da Ad esempio: |
No |
--appendToLastFile |
Specifica il comportamento della S3DistCp copia su file già presenti da Amazon S3 a HDFS. 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 Ad esempio: |
No |
--s3ServerSideEncryption
|
Assicura che i dati di destinazione vengano trasferiti tramite SSL e crittografati automaticamente in Amazon S3 utilizzando una chiave lato servizio. AWS Quando si recuperano i dati utilizzando S3DistCp, gli oggetti vengono automaticamente 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. Ad esempio: |
No |
--deleteOnSuccess
|
Se l'operazione di copia ha esito positivo, questa opzione causa S3DistCp l'eliminazione dei 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. Ad esempio: |
No |
--disableMultipartUpload
|
Disattiva l'utilizzo del caricamento in più parti. Ad esempio: |
No |
--multipartUploadChunkSize=SIZE
|
La dimensione, in MiB, di ogni parte in un caricamento multiparte su Amazon S3. S3DistCp utilizza il caricamento in più parti quando copia dati di dimensioni superiori a. Ad 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 Ad esempio: |
No |
--startingIndex=INDEX
|
Utilizzato con Ad esempio: |
No |
--outputManifest=FILENAME
|
Crea un file di testo, compresso con Gzip, che contiene un elenco di tutti i file copiati da. S3DistCp Ad esempio: |
No |
--previousManifest=PATH
|
Legge un file manifesto creato durante una precedente chiamata all' S3DistCp uso del Ad esempio: |
No |
--requirePreviousManifest |
Richiede un manifesto precedente creato durante una precedente chiamata a S3DistCp. Se impostato su false, non vengono generati errori se non viene specificato un manifest precedente. Il valore predefinito è true. |
No |
--copyFromManifest
|
Inverte il comportamento Ad 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 è Ad 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, S3DistCp tenta di preservare la classe di archiviazione. Ad 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 Ad esempio: |
No |
Oltre alle opzioni precedenti, S3DistCp implementa l'interfaccia Tool, il
Aggiunta S3DistCp come passaggio in un cluster
Puoi chiamare S3DistCp aggiungendolo come passaggio nel tuo cluster. È possibile aggiungere fasi a un cluster all'avvio o in esecuzione utilizzando la console, la CLI o l'API. Gli esempi seguenti dimostrano l'aggiunta di un S3DistCp passaggio 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 S3DistCp passaggio a un cluster in esecuzione utilizzando 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 richiama S3DistCp, passa come argomenti i parametri che specificano come S3DistCp 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-idspecifica il cluster -
Jarè la posizione del file S3DistCp JAR. 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 delle opzioni a cui passare. S3DistCp Per un elenco completo delle opzioni disponibili, consulta S3DistCp opzioni.
Per aggiungere una fase di S3DistCp copia 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.
SostituiscilomyStep.jsonj-3GYXXXXXX9IOKcon l'ID del tuo cluster e sostituisciloamzn-s3-demo-bucketcon il nome del tuo 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-idj-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. Sostituiscilo myStep.jsonj-3GYXXXXXX9IOK con l'ID del tuo cluster e sostituiscilo amzn-s3-demo-bucket con il nome del tuo 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" } ]