Opties voor compute-context voor ML Services in HDInsight
Belangrijk
Deze inhoud wordt niet meer gebruikt en wordt in de toekomst niet meer bijgewerkt. Azure HDInsight clustertype 3.6 ML Services (Machine Learning Server) is vanaf 31 december 2020 niet meer gebruikt.
ML Services op Azure HDInsight bepaalt hoe aanroepen worden uitgevoerd door de compute-context in te stellen. In dit artikel worden de beschikbare opties beschreven om op te geven of en hoe de uitvoering wordt ge parallelliseerde tussen kernen van het Edge-knooppunt of HDInsight-cluster.
Het edge-knooppunt van een cluster biedt een handige plaats om verbinding te maken met het cluster en om uw R-scripts uit te voeren. Met een edge-knooppunt hebt u de mogelijkheid om de geparallelliseerde gedistribueerde functies van RevoScaleR uit te voeren op de kernen van de server van het edge-knooppunt. U kunt ze ook uitvoeren op de knooppunten van het cluster met behulp van Hadoop Map Reduce van RevoScaleR of Apache Spark compute-contexten.
ML Services op Azure HDInsight
ML Services op Azure HDInsight biedt de nieuwste mogelijkheden voor R-analyses. Het kan gegevens gebruiken die zijn opgeslagen in een Apache Hadoop HDFS-container in uw Azure Blob Storage-account, een Data Lake Store of het lokale Linux-bestandssysteem. Omdat ML Services is gebouwd op opensource R, kunnen de R-toepassingen die u bouwt elk van de meer dan 8000 opensource R-pakketten toepassen. Ze kunnen ook de routines gebruiken in RevoScaleR,het big data analytics-pakket van Microsoft dat is opgenomen in ML Services.
Compute-contexten voor een Edge-knooppunt
In het algemeen wordt een R-script dat wordt uitgevoerd in ML Services-cluster op het edge-knooppunt uitgevoerd binnen de R-interpreter op dat knooppunt. De uitzonderingen zijn de stappen die een RevoScaleR-functie aanroepen. De RevoScaleR-aanroepen worden uitgevoerd in een rekenomgeving die wordt bepaald door hoe u de RevoScaleR-computecontext in stelt. Wanneer u uw R-script vanaf een edge-knooppunt uit te voeren, zijn de mogelijke waarden van de compute-context:
- lokaal sequentieel (lokaal)
- lokaal parallel (localpar)
- Map Reduce
- Spark
De lokale en localpar-opties verschillen alleen in de manier waarop rxExec-aanroepen worden uitgevoerd. Ze voeren beide andere rx-function-aanroepen parallel uit voor alle beschikbare kernen, tenzij anders aangegeven door gebruik te maken van de optie RevoScaleR numCoresToUse, bijvoorbeeld rxOptions(numCoresToUse=6) . Opties voor parallelle uitvoering bieden optimale prestaties.
De volgende tabel bevat een overzicht van de verschillende opties voor compute-context om in te stellen hoe aanroepen worden uitgevoerd:
| Compute-context | Instellen | Context voor uitvoering |
|---|---|---|
| Lokaal sequentieel | rxSetComputeContext('local') | Parallelle uitvoering in de kernen van de edge-knooppuntserver, met uitzondering van rxExec-aanroepen, die serieel worden uitgevoerd |
| Lokaal parallel | rxSetComputeContext('localpar') | Ge parallelliseerde uitvoering in de kernen van de edge-knooppuntserver |
| Spark | RxSpark() | Ge parallelliseerde gedistribueerde uitvoering via Spark op de knooppunten van het HDI-cluster |
| Map Reduce | RxHadoopMR() | Ge parallelliseerde gedistribueerde uitvoering via Map Reduce op de knooppunten van het HDI-cluster |
Richtlijnen voor het bepalen van een compute-context
Welke van de drie opties u kiest voor parallelle uitvoering is afhankelijk van de aard van uw analysewerk, de grootte en de locatie van uw gegevens. Er is geen eenvoudige formule die u vertelt welke compute-context u moet gebruiken. Er zijn echter enkele richtlijnen die u kunnen helpen bij het maken van de juiste keuze, of ten minste helpen bij het beperken van uw keuzes voordat u een benchmark kunt uitvoeren. Deze richtlijnen zijn onder andere:
- Het lokale Linux-bestandssysteem is sneller dan HDFS.
- Herhaalde analyses zijn sneller als de gegevens lokaal zijn en als ze zich in XDF.
- Het verdient de voorkeur om kleine hoeveelheden gegevens uit een tekstgegevensbron te streamen. Als de hoeveelheid gegevens groter is, converteert u deze vóór analyse naar XDF.
- De overhead van het kopiëren of streamen van de gegevens naar het edge-knooppunt voor analyse wordt onkosten voor zeer grote hoeveelheden gegevens.
- ApacheSpark is sneller dan Map Reduce voor analyse in Hadoop.
Gezien deze principes bieden de volgende secties enkele algemene vuistregels voor het selecteren van een compute-context.
Lokaal
- Als de hoeveelheid gegevens die moet worden geanalyseerd klein is en geen herhaalde analyse vereist, streamt u deze rechtstreeks naar de analyseroutine met behulp van local of localpar.
- Als de hoeveelheid gegevens die moet worden geanalyseerd klein of gemiddeld is en herhaalde analyse vereist, kopieert u deze naar het lokale bestandssysteem, importeert u deze in XDF en analyseert u deze via lokale of localpar.
Apache Spark
- Als de hoeveelheid gegevens die moet worden geanalyseerd groot is, importeert u deze naar een Spark DataFrame met behulp van RxHiveData of RxParquetData, of naar XDF in HDFS (tenzij opslag een probleem is) en analyseert u deze met behulp van de Spark-compute-context.
Apache Hadoop Map Reduce
- Gebruik de compute-context Map Reduce alleen als u te maken hebt met een onoverkomelijk probleem met de Spark-compute-context, omdat deze over het algemeen langzamer is.
Inline Help op rxSetComputeContext
Zie voor meer informatie en voorbeelden van RevoScaleR-compute-contexten de inline help in R op de methode rxSetComputeContext, bijvoorbeeld:
> ?rxSetComputeContext
U kunt ook het overzicht van Gedistribueerde computing in Machine Learning Server verwijzen.
Volgende stappen
In dit artikel hebt u geleerd over de opties die beschikbaar zijn om op te geven of en hoe de uitvoering wordt ge parallelliseerde tussen kernen van het edge-knooppunt of HDInsight-cluster. Zie de volgende onderwerpen voor meer informatie over ML Services met HDInsight-clusters: