Migliorare le prestazioni dei carichi di lavoro Apache Spark utilizzando Azure HDInsight IO Cache

Note

  • La cache di E/S è stata supportata fino a Spark 2.3 e non sarà supportata in Spark 2.4 (HDInsight 4.0) e Spark 3.1.2 (HDInsight 5.0)

IO Cache è un servizio di cache dati per Azure HDInsight che migliora le prestazioni dei job Apache Spark. IO Cache funziona anche con i carichi di lavoro Apache TEZ e Apache Hive , che possono essere eseguiti su cluster Apache Spark . IO Cache utilizza un componente di cache open-source chiamato RubiX. RubiX è una cache locale su disco da utilizzare con motori di analisi di big data che accedono ai dati da sistemi di archiviazione cloud. RubiX è unico tra i sistemi di cache, perché utilizza Solid-State Unità (SSD) invece di riservere la memoria operativa per scopi di cache. Il servizio IO Cache avvia e gestisce i server di metadati RubiX su ogni nodo worker del cluster. Configura inoltre tutti i servizi del cluster per l'uso trasparente della cache RubiX.

La maggior parte degli SSD fornisce più di 1 GByte al secondo di larghezza di banda. Questa larghezza di banda, integrata dalla cache dei file in memoria del sistema operativo, fornisce sufficiente larghezza di banda per caricare motori di elaborazione di calcolo big data, come Apache Spark. La memoria operativa è lasciata disponibile per Apache Spark per elaborare compiti fortemente dipendenti dalla memoria, come gli shuffle. Avere l'uso esclusivo della memoria operativa permette ad Apache Spark di raggiungere un uso ottimale delle risorse.

Note

Attualmente IO Cache utilizza RubiX come componente di cache, ma questo potrebbe cambiare nelle versioni future del servizio. Per favore, usa interfacce IO Cache e non assumi dipendenze direttamente dall'implementazione di RubiX. Al momento la cache IO è supportata solo con Azure BLOB Storage.

Vantaggi di Azure HDInsight IO Cache

L'utilizzo di IO Cache offre un aumento delle prestazioni per i job che leggono dati da Archiviazione BLOB di Azure.

Non è necessario apportare modifiche ai tuoi job Spark per vedere aumenti di prestazioni usando la cache IO. Quando la cache IO viene disabilitata, questo codice Spark legge i dati da remoto da Archiviazione BLOB di Azure: spark.read.load('wasbs:///myfolder/data.parquet').count(). Quando la IO Cache viene attivata, la stessa riga di codice determina una lettura dalla cache tramite IO Cache. Nelle letture successive, i dati vengono letti localmente dall'SSD. I nodi worker del cluster HDInsight sono dotati di SSD dedicati collegati localmente. La cache HDInsight IO utilizza questi SSD locali per la caching, che fornisce il livello più basso di latenza e massimizza la larghezza di banda.

Come iniziare

La cache Azure HDInsight IO viene disattivata di default nell'anteprima. IO Cache è disponibile su cluster Azure HDInsight 3.6+ Spark, che eseguono Apache Spark 2.3. Per attivare la cache IO su HDInsight 4.0, esegui i seguenti passaggi:

  1. Da un Web browser passare a https://CLUSTERNAME.azurehdinsight.net, dove CLUSTERNAME è il nome del cluster.

  2. Seleziona il servizio IO Cache a sinistra.

  3. Seleziona azioni (azioni di servizio in HDI 3.6) e attiva.

    Abilitazione del servizio IO Cache in Ambari.

  4. Conferma il riavvio di tutti i servizi interessati nel cluster.

Note

Anche se la barra di progresso appare attivata, la cache IO non è effettivamente abilitata finché non riavvii gli altri servizi interessati.

Troubleshooting

Potresti avere errori nello spazio disco eseguendo i lavori Spark dopo aver abilitato la cache IO. Questi errori si verificano perché Spark utilizza anche lo storage locale su disco per memorizzare i dati durante le operazioni di mescolare. Spark potrebbe esaurire lo spazio SSD una volta abilitata la cache IO e lo spazio per la memoria Spark ridotto. La quantità di spazio utilizzata dalla cache IO corrisponde di default alla metà dello spazio totale dell'SSD. L'uso dello spazio su disco per la cache IO è configurabile in Ambari. Se ricevi errori di spazio disco, riduci la quantità di spazio SSD usata per la cache IO e riavvia il servizio. Per cambiare lo spazio impostato per la cache IO, esegui i seguenti passaggi:

  1. In Apache Ambari, seleziona il servizio HDFS a sinistra.

  2. Seleziona le schede Configurazioni e Avanzato .

    Modifica: Configurazione avanzata HDFS.

  3. Scorrere verso il basso ed espandere l'area Custom core-site (Impostazioni core-site personalizzate).

  4. Trova la proprietà hadoop.cache.data.fullness.percentage.

  5. Cambia il valore nella casella.

    Modifica la percentuale di pienezza della cache IO.

  6. Seleziona Salva in alto a destra.

  7. Seleziona Riavvia>Riavvia Tutti gli interessati.

    Apache Ambari riavvia tutti i servizi interessati.

  8. Seleziona Conferma Riavvia Tutto.

Se non funziona, disabilita la cache IO.

Operazioni successive

Per saperne di più sulla cache IO, inclusi i benchmark delle prestazioni, consulta il seguente post sul blog: I lavori Apache Spark aumentano fino a 9 volte la velocità con la cache IO HDInsight