Alternativ för beräkningskontext för ML Services i HDInsight

Viktigt

Det här innehållet dras tillbaka och kommer inte att uppdateras i framtiden. Azure HDInsight klustertypen 3.6 ML Services (Machine Learning Server) togs ur bruk den 31 dec 2020.

ML Services på Azure HDInsight hur anrop körs genom att ange beräkningskontexten. Den här artikeln beskriver de alternativ som är tillgängliga för att ange om och hur körningen ska parallelliseras mellan kärnor i kantnoden eller HDInsight-klustret.

Gränsnoden i ett kluster är en praktisk plats för att ansluta till klustret och köra R-skript. Med en kantnod kan du välja att köra de parallelliserade distribuerade funktionerna i RevoScaleR över kärnorna på gränsnodservern. Du kan också köra dem mellan noderna i klustret med hjälp av RevoScaleR:s Hadoop Map Reduce eller Apache Spark-beräkningskontexterna.

ML Services på Azure HDInsight

ML Services on Azure HDInsight de senaste funktionerna för R-baserad analys. Den kan använda data som lagras i en Apache Hadoop HDFS-container i ditt Azure Blob Storage-konto, en Data Lake Store eller det lokala Linux-filsystemet. Eftersom ML Services bygger på R med öppen källkod kan de R-baserade program som du skapar använda något av R-paketen med 8000+ öppen källkod. De kan också använda rutinerna i RevoScaleR, Microsofts analyspaket för stordata som ingår i ML Services.

Beräkningskontext för en kantnod

I allmänhet körs ett R-skript som körs i ML Services-klustret på kantnoden i R-tolken på noden. Undantagen är de steg som anropar en RevoScaleR-funktion. RevoScaleR-anrop körs i en beräkningsmiljö som bestäms av hur du anger RevoScaleR-beräkningskontexten. När du kör R-skriptet från en kantnod är de möjliga värdena för beräkningskontexten:

  • lokal sekventiell (lokal)
  • lokal parallell (localpar)
  • Map Reduce
  • Spark

Alternativen för lokal och lokalparen skiljer sig bara åt i hur rxExec-anrop körs. Båda kör andra rx-function-anrop parallellt över alla tillgängliga kärnor om inget annat anges med hjälp av alternativet RevoScaleR numCoresToUse, till exempel rxOptions(numCoresToUse=6) . Alternativ för parallell körning ger optimala prestanda.

I följande tabell sammanfattas de olika alternativen för beräkningskontext för att ange hur anrop körs:

Beräkningskontext Så här ställer du in Körningskontext
Lokal sekventiell rxSetComputeContext('local') Parallelliserad körning över gränsnodserverns kärnor, förutom rxExec-anrop som körs seriellt
Lokal parallell rxSetComputeContext('localpar') Parallelliserad körning över gränsnodserverns kärnor
Spark RxSpark() Parallelliserad distribuerad körning via Spark mellan noderna i HDI-klustret
Map Reduce RxHadoopMR() Parallelliserad distribuerad körning via Map Reduce mellan noderna i HDI-klustret

Riktlinjer för att välja en beräkningskontext

Vilket av de tre alternativen du väljer som ger parallelliserad körning beror på typen av analysarbete, storlek och plats för dina data. Det finns ingen enkel formel som talar om för dig vilken beräkningskontext som ska användas. Det finns dock några riktlinjer som kan hjälpa dig att göra rätt val, eller åtminstone hjälpa dig att begränsa dina val innan du kör ett benchmark-prestandatest. Dessa riktlinjer omfattar:

  • Det lokala Linux-filsystemet är snabbare än HDFS.
  • Upprepade analyser går snabbare om data är lokala och om de finns i XDF.
  • Det är bättre att strömma små mängder data från en textdatakälla. Om mängden data är större konverterar du den till XDF före analysen.
  • Omkostnaderna för att kopiera eller strömma data till kantnoden för analys blir ohantera för mycket stora mängder data.
  • ApacheSpark är snabbare än Map Reduce för analys i Hadoop.

Med tanke på dessa principer erbjuder följande avsnitt vissa allmänna tumregler för att välja en beräkningskontext.

Lokal

  • Om mängden data som ska analyseras är liten och inte kräver upprepad analys kan du strömma den direkt till analysrutinen med hjälp av lokal eller lokalpar.
  • Om mängden data som ska analyseras är liten eller medelstor och kräver upprepad analys kopierar du den till det lokala filsystemet, importerar den till XDF och analyserar den via lokal eller lokalpar.

Apache Spark

  • Om mängden data som ska analyseras är stor importerar du den till en Spark DataFrame med RxHiveData eller RxParquetData, eller till XDF i HDFS (såvida inte lagring är ett problem) och analyserar den med hjälp av Spark-beräkningskontexten.

Apache Hadoop Map Reduce

  • Använd endast beräkningskontexten Map Reduce om du får ett oöverstigligt problem med Spark-beräkningskontexten eftersom den vanligtvis är långsammare.

Infogad hjälp på rxSetComputeContext

Mer information och exempel på RevoScaleR-beräkningskontexter finns i infogad hjälp i R på rxSetComputeContext-metoden, till exempel:

> ?rxSetComputeContext

Du kan också läsa översikten över distribuerad databehandling i Machine Learning Server dokumentationen.

Nästa steg

I den här artikeln har du lärt dig om de tillgängliga alternativen för att ange om och hur körningen ska parallelliseras mellan kärnor i kantnoden eller HDInsight-klustret. Mer information om hur du använder ML Services med HDInsight-kluster finns i följande avsnitt: