Velocità di trasmissione effettiva assegnata a DynamoDB - Amazon DynamoDB

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

Velocità di trasmissione effettiva assegnata a DynamoDB

Quando si emettono istruzioni HiveQL sulla tabella DynamoDB esterna, la proprietà DynamoDBStorageHandler crea le richieste API DynamoDB di basso livello appropriate, che utilizzano la velocità effettiva di provisioning. Se nella tabella DynamoDB non vi è sufficiente capacità di lettura o scrittura, la richiesta verrà limitata, con conseguente rallentamento delle prestazioni HiveQL. Per questo motivo, è consigliabile assicurarsi che la tabella disponga di capacità di throughput sufficiente.

Ad esempio, si supponga di avere 100 unità di capacità di lettura assegnate per la tabella DynamoDB. Questo ti permetterà di leggere 409.600 byte al secondo (dimensioni dell'unità di capacità di lettura 100 × 4 KB). Supponiamo ora che la tabella contenga 20 GB di dati (21.474.836.480 byte) e che si desideri utilizzare la funzione SELECT per selezionare tutti i dati utilizzando HiveQL. È possibile stimare quanto tempo impiegherà la query per l'esecuzione in questo modo:

21.474.836.480 / 409.600 = 52.429 secondi = 14,56 ore

In questo scenario, la tabella DynamoDB è un collo di bottiglia. Non aiuterà ad aggiungere altri nodi Amazon EMR perché il throughput Hive è limitato a soli 409.600 byte al secondo. L'unico modo per ridurre il tempo necessario per l'istruzione SELECT è di aumentare la capacità di lettura assegnata della tabella DynamoDB.

È possibile eseguire un calcolo simile per stimare il tempo necessario per caricare dati in massa in una tabella esterna Hive mappata a una tabella DynamoDB. Determina il numero totale di unità di capacità di scrittura necessarie per elemento (meno di 1 KB = 1, 1-2 KB = 2, ecc.) e moltiplicalo per il numero di elementi da caricare. Il risultato sarà il numero di unità di capacità di scrittura. Dividi questo risultato per il numero di unità di capacità di scrittura allocate al secondo. Ciò produrrà il numero di secondi necessari per caricare la tabella.

È necessario monitorare regolarmente le CloudWatch metriche della tabella. Per una rapida panoramica nella console DynamoDB, scegli la tabella e seleziona la scheda Parametri. Da qui, è possibile visualizzare le unità di capacità di lettura e scrittura consumate e le richieste di lettura e scrittura che sono state limitate.

Capacità di lettura

Per impostazione predefinita, Amazon EMR gestisce il carico di richieste sulla tabella DynamoDB, in base alle impostazioni di velocità effettiva assegnata della tabella. Tuttavia, se si nota un grande numero di messaggi ProvisionedThroughputExceeded nell'output del processo, è possibile regolare la velocità di lettura predefinita. A tale scopo, puoi modificare la variabile di configurazione dynamodb.throughput.read.percent. Puoi utilizzare il comando SET per impostare questa variabile al prompt dei comandi di Hive:

SET dynamodb.throughput.read.percent=1.0;

Questa variabile persiste nella sessione di Hive corrente. Se esci da Hive e torni in un secondo momento, dynamodb.throughput.read.percenttornerà al suo valore predefinito.

Il valore di dynamodb.throughput.read.percent può essere compreso tra 0.1 e 1.5, estremi inclusi. 0.5 rappresenta la velocità di lettura predefinita, il che significa che Hive cercherà di consumare metà della capacità di lettura della tabella. Se si aumenta il valore sopra 0.5, Hive aumenterà il tasso di richiesta; diminuendo il valore al di sotto di 0.5 riduce la frequenza di richiesta di lettura. La velocità di lettura effettiva varia in base a fattori come la presenza di una distribuzione uniforme delle chiavi nella tabella DynamoDB.

Se si nota che Hive spesso esaurisce la capacità di lettura sottoposta a provisioning della tabella o se le richieste di lettura sono troppo limitate, provare a ridurre dynamodb.throughput.read.percent al di sotto di 0.5. Se si dispone di capacità di lettura sufficiente nella tabella e si desidera che le operazioni HiveQL siano più reattive, è possibile impostare il valore sopra 0.5.

Capacità di scrittura

Per impostazione predefinita, Amazon EMR gestisce il carico di richieste sulla tabella DynamoDB, in base alle impostazioni di velocità effettiva assegnata della tabella. Tuttavia, se si nota un grande numero di messaggi ProvisionedThroughputExceedednell'output del processo, è possibile regolare la velocità di scrittura predefinita. A tale scopo, puoi modificare la variabile di configurazione dynamodb.throughput.write.percent. Puoi utilizzare il comando SET per impostare questa variabile al prompt dei comandi di Hive:

SET dynamodb.throughput.write.percent=1.0;

Questa variabile persiste nella sessione di Hive corrente. Se esci da Hive e torni in un secondo momento, dynamodb.throughput.write.percenttornerà al suo valore predefinito.

Il valore di dynamodb.throughput.write.percent può essere compreso tra 0.1 e 1.5, estremi inclusi. 0.5 rappresenta la velocità di scrittura predefinita, il che significa che Hive cercherà di consumare metà della capacità di scrittura della tabella. Se si aumenta il valore sopra 0.5, Hive aumenterà il tasso di richiesta; diminuendo il valore al di sotto di 0.5 riduce la frequenza di richiesta di scrittura. La velocità di scrittura effettiva varia in base a fattori come la presenza di una distribuzione uniforme delle chiavi nella tabella DynamoDB.

Se si nota che Hive spesso esaurisce la capacità di lettura sottoposta a provisioning della tabella o se le richieste di scrittura sono troppo limitate, provare a ridurre dynamodb.throughput.write.percent al di sotto di 0.5. Se si dispone di capacità di scrittura sufficiente nella tabella e si desidera che le operazioni HiveQL siano più reattive, è possibile impostare il valore sopra 0.5.

Quando scrivi dati in DynamoDB utilizzando Hive, assicurati che il numero delle unità di capacità di scrittura sia maggiore del numero di mappatori del cluster. Ad esempio, si consideri un cluster Amazon EMR composto da 10 nodi m1.xlarge. Il tipo di nodo m1.xlarge fornisce 8 attività di mappatura, quindi il cluster avrebbe un totale di 80 mappatori (10 × 8). Se la tabella DynamoDB ha meno di 80 unità di capacità di scrittura, un'operazione di scrittura Hive potrebbe consumare tutta la velocità effettiva di scrittura per tale tabella.

Per determinare il numero di mappatori per i tipi di nodi di Amazon EMR, consulta Configurazione attività nella Guida per gli sviluppatori di Amazon EMR.

Per ulteriori informazioni sui mappatori, consulta Regolazione dei mappatori.