Metadati della visualizzazione coerente EMRFS - Amazon EMR

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à.

Metadati della visualizzazione coerente EMRFS

La visualizzazione coerente EMRFS verifica la consistenza utilizzando una tabella DynamoDB per monitorare gli oggetti in Amazon S3 che sono stati sincronizzati o creati da EMRFS. I metadati sono utilizzati per monitorare tutte le operazioni (lettura, scrittura, aggiornamento e copia) e alcun contenuto effettivo è memorizzato negli stessi. Questi metadati sono utilizzati per confermare che gli oggetti o i metadati ricevuti da Amazon S3 corrispondono a quanto previsto. Questa conferma offre a EMRFS la possibilità di verificare la coerenza e read-after-write la coerenza delle liste per i nuovi oggetti che EMRFS scrive su Amazon S3 o gli oggetti sincronizzati con EMRFS. Più cluster possono condividere gli stessi metadati.

Come aggiungere voci ai metadati

Puoi utilizzare i sottocomandi sync o import per aggiungere voci ai metadati. sync riflette lo stato degli oggetti Amazon S3 in un percorso, mentre import viene utilizzato esclusivamente per aggiungere nuove voci ai metadati. Per ulteriori informazioni, consulta Riferimento ai comandi CLI di EMRFS.

Come verificare le differenze tra metadati e oggetti in Amazon S3

Per verificare le differenze tra i metadati e Amazon S3, utilizza il sottocomando diff della CLI di EMRFS. Per ulteriori informazioni, consulta Riferimento ai comandi CLI di EMRFS.

Come determinare se le operazioni di metadati sono sottoposte a throttling

EMRFS imposta i limiti di capacità di velocità effettiva di default sui metadati per le operazioni di lettura e scrittura rispettivamente su 500 e 100 unità. Con un gran numero di oggetti o bucket, le operazioni possono superare questa capacità e quindi essere sottoposte a limitazione da DynamoDB. Ad esempio, un'applicazione può portare EMRFS a generare un'eccezione ProvisionedThroughputExceededException se si sta eseguendo un'operazione che supera questi limiti di capacità. Con la limitazione, la CLI di EMRFS esegue un nuovo tentativo di scrittura sulla tabella DynamoDB utilizzando il backoff esponenziale fino al termine dell'operazione o fino a quando non viene raggiunto il numero massimo di tentativi di scrittura di oggetti da Amazon EMR su Amazon S3.

È possibile configurare i propri limiti di capacità di velocità effettiva. Tuttavia, DynamoDB dispone di limiti di partizione rigorosi di 3000 unità di capacità in lettura (RCU) e 1000 unità di capacità in scrittura (WCU) al secondo per operazioni di lettura e scrittura. Per evitare errori sync causati dalla limitazione, consigliamo di limitare la velocità effettiva per le operazioni di lettura a meno di 3000 RCU e le operazioni di scrittura a meno di 1000 WCU. Per istruzioni sull'impostazione dei limiti di capacità di velocità effettiva personalizzati, consulta Configurazione della visualizzazione coerente.

Puoi anche visualizzare i CloudWatch parametri Amazon per i tuoi metadati EMRFS nella console DynamoDB, dove puoi vedere il numero di richieste di lettura e scrittura limitate. Se il numero di richieste sottoposte a throttling è diverso da zero, la tua applicazione può potenzialmente beneficiare di una capacità di throughput allocata superiore per le operazioni di lettura o scrittura. Puoi anche ottenere un miglioramento delle prestazioni se le tue operazioni si avvicinano alla capacità di throughput allocata massima per le letture o le scritture durante un periodo di tempo prolungato.

Caratteristiche di throughput per operazioni EMRFS significative

L'impostazione predefinita per le operazioni di lettura e scrittura è rispettivamente di 400 e 100 unità di capacità di throughput. Le caratteristiche prestazionali seguenti offrono un'idea di quale throughput è richiesto per determinate operazioni. Questi test sono stati eseguiti utilizzando un cluster m3.large a nodo singolo. Tutte le operazioni erano a thread singolo. Le prestazioni differiscono notevolmente a seconda delle specifiche caratteristiche dell'applicazione e potrebbe essere necessario sperimentare per ottimizzare le operazioni del file system.

Operazione Media read-per-second Media write-per-second
create (oggetto) 26.79 6.70
delete (oggetto) 10.79 10.79
delete (directory contenente 1.000 oggetti) 21.79 338.40
getFileStatus(oggetto) 34.70 0
getFileStatus(elenco) 19.96 0
listStatus (directory contenente 1 oggetto) 43.31 0
listStatus (directory contenente 10 oggetti) 44.34 0
listStatus (directory contenente 100 oggetti) 84.44 0
listStatus (directory contenente 1.000 oggetti) 308.81 0
listStatus (directory contenente 10.000 oggetti) 416.05 0
listStatus (directory contenente 100.000 oggetti) 823.56 0
listStatus (directory contenente 1 milione di oggetti) 882.36 0
mkdir (continua per 120 secondi) 24.18 4.03
mkdir 12.59 0
rename (oggetto) 19.53 4.88
rename (directory contenente 1.000 oggetti) 23.22 339.34
Per inviare una fase che rimuove dati obsoleti dallo store di metadati

È possibile che gli utenti vogliano rimuovere specifiche voci nei metadati basati su DynamoDB. Ciò può contribuire a ridurre i costi di storage associati alla tabella. Gli utenti hanno la possibilità di rimuovere manualmente o a livello di codice determinate voci utilizzando il sottocomando delete della CLI di EMRFS. Tuttavia, se elimini delle voci dai metadati, EMRFS non esegue più alcuna verifica di consistenza.

La rimozione a livello di codice dopo il completamento di un processo può essere eseguita inviando una fase finale al cluster, il quale esegue un comando sulla CLI di EMRFS. Ad esempio, digitare il comando seguente per inviare una fase al cluster allo scopo di eliminare tutte le voci di più di due giorni.

aws emr add-steps --cluster-id j-2AL4XXXXXX5T9 --steps Name="emrfsCLI",Jar="command-runner.jar",Args=["emrfs","delete","--time","2","--time-unit","days"] { "StepIds": [ "s-B12345678902" ] }

Utilizzate il StepId valore restituito per verificare nei log il risultato dell'operazione.