Verbeter de prestaties van Apache Spark-workloads met Azure HDInsight IO Cache

Opmerking

  • IO Cache werd ondersteund tot Spark 2.3 en zal niet worden ondersteund in Spark 2.4 (HDInsight 4.0) en Spark 3.1.2 (HDInsight 5.0)

IO Cache is een datacaching-dienst voor Azure HDInsight die de prestaties van Apache Spark-taken verbetert. IO Cache werkt ook met Apache TEZ- en Apache Hive-workloads , die op Apache Spark-clusters kunnen worden uitgevoerd. IO Cache gebruikt een open-source cachingcomponent genaamd RubiX. RubiX is een lokale schijfcache voor gebruik met big data-analyse-engines die data van cloudopslagsystemen benaderen. RubiX is uniek onder cachingsystemen, omdat het Solid-State Drives (SSD's) gebruikt in plaats van het reserveerend bedrijfsgeheugen voor cachingdoeleinden. De IO Cache-service start en beheert RubiX Metadata Servers op elke worker-node van de cluster. Het configureert ook alle diensten van de cluster voor transparant gebruik van de RubiX-cache.

De meeste SSD's leveren meer dan 1 GByte per seconde bandbreedte. Deze bandbreedte, aangevuld met de bestandscache in het geheugen van het besturingssysteem, biedt voldoende bandbreedte om big data-verwerkingsengines te laden, zoals Apache Spark. Het bedrijfsgeheugen blijft beschikbaar voor Apache Spark om zwaar geheugenafhankelijke taken te verwerken, zoals shufles. Door exclusief gebruik van het bedrijfsgeheugen kan Apache Spark optimaal gebruik van middelen bereiken.

Opmerking

IO Cache gebruikt momenteel RubiX als cachingcomponent, maar dit kan in toekomstige versies van de dienst veranderen. Gebruik alsjeblieft IO Cache-interfaces en neem geen afhankelijkheden direct van de RubiX-implementatie. IO Cache wordt momenteel alleen ondersteund met Azure BLOB Storage.

Voordelen van Azure HDInsight IO Cache

Het gebruik van IO Cache zorgt voor een prestatieverbetering voor taken die data lezen uit Azure Blob Storage.

Je hoeft geen wijzigingen aan je Spark-jobs te maken om prestatieverbeteringen te zien bij IO Cache. Wanneer IO Cache is uitgeschakeld, zou deze Spark-code data op afstand lezen vanuit Azure Blob Storage: spark.read.load('wasbs:///myfolder/data.parquet').count(). Wanneer IO Cache is geactiveerd, zorgt dezelfde coderegel voor een leesbewerking via de IO Cache uit de cache. Bij volgende reads wordt de data lokaal gelezen vanaf de SSD. Worker nodes op de HDInsight-cluster zijn uitgerust met lokaal aangesloten, toegewijde SSD-schijven. HDInsight IO Cache gebruikt deze lokale SSD's voor caching, wat het laagste latentieniveau biedt en de bandbreedte maximaliseert.

Aan de slag

Azure HDInsight IO Cache is standaard gedeactiveerd in preview. IO Cache is beschikbaar op Azure HDInsight 3.6+ Spark-clusters, die Apache Spark 2.3 draaien. Om IO Cache op HDInsight 4.0 te activeren, volgt u de volgende stappen:

  1. Navigeer in een webbrowser naar https://CLUSTERNAME.azurehdinsight.net, waarbij CLUSTERNAME de naam van uw cluster is.

  2. Selecteer de IO Cache-service aan de linkerkant.

  3. Selecteer acties (serviceacties in HDI 3.6) en activeer.

    De IO Cache-service in Ambari inschakelen.

  4. Bevestig de herstart van alle getroffen diensten in het cluster.

Opmerking

Hoewel de voortgangsbalk geactiveerd wordt weergegeven, wordt IO Cache pas ingeschakeld als je de andere getroffen diensten opnieuw opstart.

Probleemoplossingsproces

Je kunt schijfruimtefouten krijgen bij het uitvoeren van Spark-taken nadat je IO Cache hebt ingeschakeld. Deze fouten ontstaan omdat Spark ook lokale schijfopslag gebruikt voor het opslaan van gegevens tijdens schudoperaties. Spark kan zonder SSD-ruimte komen te zitten zodra IO Cache is ingeschakeld en de ruimte voor Spark-opslag wordt verminderd. De hoeveelheid ruimte die IO Cache gebruikt, is standaard de helft van de totale SSD-ruimte. Het schijfruimtegebruik voor IO Cache is configureerbaar in Ambari. Als je schijfruimtefouten krijgt, verminder dan de hoeveelheid SSD-ruimte die wordt gebruikt voor IO Cache en start de service opnieuw. Om de ruimteset voor IO Cache te wijzigen, voert u de volgende stappen uit:

  1. Selecteer in Apache Ambari de HDFS-dienst aan de linkerkant.

  2. Selecteer de tabbladen Configuraties en Geavanceerd .

    Bewerk HDFS Geavanceerde Configuratie.

  3. Scroll naar beneden en vergroot het Custom core-site gebied.

  4. Zoek de eigenschap hadoop.cache.data.fullness.percentage.

  5. Verander de waarde in de doos.

    Wijzig het percentage cachevulling van IO.

  6. Selecteer Opslaan rechtsboven.

  7. Selecteer Opnieuw opstarten>Alle betrokken items opnieuw opstarten.

    Apache Ambari start opnieuw met alle getroffen functies.

  8. Selecteer Herstart alles bevestigen.

Als dat niet werkt, schakel dan IO Cache uit.