Ottimizzazione delle prestazioni per le EMR operazioni di Amazon in DynamoDB - 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à.

Ottimizzazione delle prestazioni per le EMR operazioni di Amazon in DynamoDB

EMRLe operazioni Amazon su una tabella DynamoDB contano come operazioni di lettura e sono soggette alle impostazioni di throughput fornite dalla tabella. Amazon EMR implementa la propria logica per cercare di bilanciare il carico sulla tabella DynamoDB per ridurre al minimo la possibilità di superare il throughput assegnato. Alla fine di ogni query Hive, Amazon EMR restituisce informazioni sul cluster utilizzato per elaborare la query, incluso il numero di volte in cui è stato superato il throughput assegnato. È possibile utilizzare queste informazioni, oltre alle CloudWatch metriche sul throughput di DynamoDB, per gestire meglio il carico sulla tabella DynamoDB nelle richieste successive.

Nelle operazioni con le tabelle DynamoDB, le prestazioni delle query di Hive sono influenzate dai fattori indicati di seguito.

Unità di capacità di lettura assegnate

Quando esegui query Hive su una tabella DynamoDB, devi accertarti di aver assegnato una quantità sufficiente di unità di capacità di lettura.

Ad esempio, supponiamo che tu disponga di 100 unità di capacità di lettura assegnate per la tabella DynamoDB. Questo ti consentirà di eseguire 100 operazioni di lettura, o 409.600 byte, al secondo. Se la tabella contiene 20 GB di dati (21.474.836.480 byte) e la tua query Hive esegue una scansione completa della tabella, puoi stimare la durata dell'esecuzione della query:

21.474.836.480 / 409.600 = 52.429 secondi = 14,56 ore

Il solo modo per ridurre il tempo necessario sarebbe modificare le unità di capacità di lettura nella tabella DynamoDB di origine. L'aggiunta di altri nodi al EMR cluster Amazon non sarà di aiuto.

Nell'output Hive, la percentuale di completamento viene aggiornata quando terminano uno o più processi del mappatore. Per una tabella DynamoDB di grandi dimensioni con una bassa capacità di lettura assegnata, l'output della percentuale di completamento potrebbe non essere aggiornato per molto tempo; in questo caso, il processo sembrerà essere completo allo 0% per diverse ore. Per uno stato più dettagliato sull'avanzamento del tuo lavoro, vai alla EMR console Amazon; potrai visualizzare lo stato delle singole attività del mapper e le statistiche per la lettura dei dati.

Puoi anche accedere all'interfaccia Hadoop sul nodo master e vedere le statistiche di Hadoop. Ti sarà mostrato lo stato della singola attività del mappatore e alcune statistiche di lettura dei dati. Per ulteriori informazioni, consulta le interfacce Web ospitate sul nodo master nell'Amazon EMR Management Guide.

Impostazione della percentuale di lettura

Per impostazione predefinita, Amazon EMR gestisce il carico delle richieste sulla tabella DynamoDB in base al throughput attualmente assegnato. Tuttavia, quando Amazon EMR restituisce informazioni sul tuo lavoro che includono un numero elevato di risposte che hanno superato il throughput assegnato, puoi modificare la frequenza di lettura predefinita utilizzando il dynamodb.throughput.read.percent parametro quando configuri la tabella Hive. Per ulteriori informazioni su come impostare il parametro della percentuale di lettura, consulta Opzioni Hive.

Impostazione della percentuale di scrittura

Per impostazione predefinita, Amazon EMR gestisce il carico delle richieste sulla tabella DynamoDB in base al throughput attualmente assegnato. Tuttavia, quando Amazon EMR restituisce informazioni sul tuo lavoro che includono un numero elevato di risposte che hanno superato il throughput assegnato, puoi modificare la velocità di scrittura predefinita utilizzando il dynamodb.throughput.write.percent parametro quando configuri la tabella Hive. Per ulteriori informazioni su come impostare il parametro della percentuale di scrittura, consulta Opzioni Hive.

Impostazione della durata dei nuovi tentativi

Per impostazione predefinita, Amazon EMR esegue nuovamente una query Hive se non restituisce un risultato entro due minuti, l'intervallo di tentativi predefinito. Puoi modificare questo intervallo impostando il parametro dynamodb.retry.duration quando esegui una query Hive. Per ulteriori informazioni su come impostare il parametro della percentuale di scrittura, consulta Opzioni Hive.

Numero di attività di mappatura

I daemon di mappatura che Hadoop avvia per elaborare le richieste di esportazione ed esecuzione di query sui dati archiviati in DynamoDB hanno una velocità di lettura massima di 1 MiB al secondo per limitare la capacità di lettura utilizzata. Se disponi di ulteriore velocità effettiva assegnata disponibile su DynamoDB, puoi migliorare le prestazioni delle operazioni di query ed esportazione di Hive aumentando il numero di daemon del mappatore. A tale scopo, puoi aumentare il numero di EC2 istanze nel cluster o aumentare il numero di daemon mapper in esecuzione su ciascuna istanza. EC2

È possibile aumentare il numero di EC2 istanze in un cluster arrestando il cluster corrente e riavviandolo con un numero maggiore di istanze. EC2 Specifichi il numero di EC2 istanze nella finestra di dialogo Configura EC2 istanze se avvii il cluster dalla EMR console Amazon o con l'‑‑num-instancesopzione se avvii il cluster da. CLI

Il numero di attività di mappatura eseguite su un'istanza dipende dal tipo di istanza. EC2 Per ulteriori informazioni sui tipi di EC2 istanza supportati e sul numero di mappatori forniti da ciascuna istanza, consultaConfigurazione attività. dove troverai una sezione relativa alla configurazione delle attività per ognuna delle configurazioni supportate.

In alternativa, puoi aumentare il numero dei daemon di mappatura modificando il parametro di configurazione mapreduce.tasktracker.map.tasks.maximum di Hadoop con un valore superiore. Questo ha il vantaggio di offrire più mappatori senza aumentare né il numero né la dimensione delle EC2 istanze, con un conseguente risparmio di denaro. Uno svantaggio è che l'impostazione di questo valore troppo alto può causare l'esaurimento della EC2 memoria delle istanze del cluster. Per impostare mapreduce.tasktracker.map.tasks.maximum, avvia il cluster e specifica un valore per mapreduce.tasktracker.map.tasks.maximum come proprietà della classificazione di configurazione mapred-site. Questo viene mostrato nell'esempio seguente. Per ulteriori informazioni, consulta Configurazione delle applicazioni.

{ "configurations": [ { "classification": "mapred-site", "properties": { "mapred.tasktracker.map.tasks.maximum": "10" } } ] }

Richieste di dati in parallelo

Molteplici richieste di dati, sia da parte di più utenti sia da più applicazioni verso un'unica tabella, possono far esaurire il throughput di lettura assegnato e rallentare le prestazioni.

Durata dei processi

La consistenza dei dati in DynamoDB dipende dall'ordine delle operazioni di lettura e scrittura di ciascun nodo. Quando una query Hive è in avanzamento, un'altra applicazione potrebbe caricare nuovi dati nella tabella DynamoDB oppure modificare o eliminare dati esistenti. In questo caso, i risultati della query Hive potrebbe non riflettere le modifiche effettuate ai dati durante l'esecuzione della query.

Evitare di superare la velocità effettiva

Quando esegui query Hive su DynamoDB, fai attenzione a non superare la velocità effettiva assegnata, perché in questo modo si esaurisce la capacità necessaria per le chiamate dell'applicazione a DynamoDB::Get. Per evitare che ciò accada, dovresti monitorare regolarmente il volume di lettura e la limitazione delle chiamate alle applicazioni controllando i log e DynamoDB::Get monitorando le metriche su Amazon. CloudWatch

Ora delle richieste

Le prestazioni possono essere migliorate pianificando query Hive che accedono a una tabella DynamoDB quando la richiesta nella tabella DynamoDB è minore. Ad esempio, se la maggior parte degli utenti dell'applicazione vive a San Francisco, è possibile scegliere di esportare i dati ogni giorno alle ore 4:00 PST, quando la maggior parte degli utenti dorme e non aggiorna i record nel database DynamoDB.

Tabelle basate sul tempo

Se i dati vengono organizzati in una serie di tabelle DynamoDB basate sul tempo, ad esempio una tabella al giorno, puoi esportare i dati quando la tabella non è più attiva. Puoi utilizzare questa tecnica per eseguire il backup dei dati su Amazon S3 in modo regolare.

Dati archiviati

Se prevedi di eseguire molte query Hive sui dati archiviati in DynamoDB e la tua applicazione può tollerare i dati archiviati, potresti voler esportare i dati su o Amazon HDFS S3 ed eseguire le query Hive su una copia dei dati anziché su DynamoDB. In questo modo, le operazioni di lettura e il throughput assegnato vengono conservati.