Een ML Services-cluster op Azure 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.

In dit artikel leert u hoe u een bestaand ML Services-cluster op Azure HDInsight kunt beheren om taken uit te voeren zoals het toevoegen van meerdere gelijktijdige gebruikers, extern verbinding maken met een ML Services-cluster, het wijzigen van de compute-context, enzovoort.

Vereisten

Meerdere gelijktijdige gebruikers inschakelen

U kunt meerdere gelijktijdige gebruikers inschakelen voor ML Services-cluster in HDInsight door meer gebruikers toe te voegen voor het edge-knooppunt waarop de RStudio-communityversie wordt uitgevoerd. Wanneer u een HDInsight-cluster maakt, moet u twee gebruikers opgeven, te weten een HTTP-gebruiker en een SSH-gebruiker:

HDI-Azure Portal-aanmeldingsparameters

  • Gebruikersnaam voor aanmelding cluster: een HTTP-gebruiker voor verificatie via de HDInsight-gateway die wordt gebruikt voor het beveiligen van de HDInsight-clusters die u hebt gemaakt. Deze HTTP-gebruiker wordt gebruikt voor toegang tot de Apache Ambari-gebruikersinterface, Apache Hadoop YARN-gebruikersinterface en andere UI-onderdelen.
  • Secure Shell (SSH)-gebruikersnaam: een SSH-gebruiker voor toegang tot het cluster via Secure Shell. Deze gebruiker is een gebruiker in het Linux-systeem voor alle hoofdknooppunten, werkknooppunten en Edge-knooppunten. U kunt Secure Shell gebruiken voor toegang tot alle knooppunten in een extern cluster.

De R Studio Server Community-versie die wordt gebruikt in het ML Services-cluster in HDInsight accepteert alleen linux-gebruikersnaam en -wachtwoord als aanmeldingsmechanisme. Doorgegeven tokens worden niet ondersteund. Wanneer u R Studio voor het eerst probeert te openen op een ML Services-cluster, moet u zich dus twee keer aanmelden.

  • Meld u eerst aan met de HTTP-gebruikersreferenties via de HDInsight-gateway.

  • Gebruik vervolgens de SSH-gebruikersreferenties om u aan te melden bij RStudio.

Op dit moment kan slechts één SSH gebruikersaccount worden gemaakt tijdens het inrichten van een HDInsight-cluster. Als u meerdere gebruikers toegang wilt geven tot ML Services-cluster in HDInsight, moet u extra gebruikers maken in het Linux-systeem.

Omdat RStudio wordt uitgevoerd op het edge-knooppunt van het cluster, zijn er hier verschillende stappen:

  1. De bestaande SSH-gebruiker gebruiken om u aan te melden bij het Edge-knooppunt
  2. Meer Linux-gebruikers toevoegen in Edge-knooppunt
  3. RStudio Community-versie gebruiken met de gemaakte gebruiker

Stap 1: de gemaakte SSH-gebruiker gebruiken om u aan te melden bij het Edge-knooppunt

Volg de instructies in Verbinding maken hdinsight (Apache Hadoop) met behulp van SSH toegang te krijgen tot het edge-knooppunt. Het adres van het edge-knooppunt voor ML Services-cluster in HDInsight is CLUSTERNAME-ed-ssh.azurehdinsight.net .

Stap 2: meer Linux-gebruikers toevoegen in Edge-knooppunt

Om een gebruiker toe te voegen aan het Edge-knooppunt, voert u de volgende opdrachten uit:

# Add a user 
sudo useradd <yournewusername> -m

# Set password for the new user
sudo passwd <yournewusername>

In de volgende schermopname ziet u de uitvoer.

schermopname van uitvoer gelijktijdige gebruikers

Wanneer u wordt gevraagd om 'Huidig Kerberos-wachtwoord:', drukt u op Enter om het te negeren. De -m-optie in de opdracht useradd geeft aan dat het systeem een basismap voor de gebruiker maakt die vereist is voor RStudio Community-versie.

Stap 3: RStudio Community-versie gebruiken met de gemaakte gebruiker

Toegang tot RStudio vanaf https://CLUSTERNAME.azurehdinsight.net/rstudio/ . Als u zich voor het eerst aanmeldt nadat u het cluster hebt gemaakt, voert u de beheerdersreferenties voor het cluster in, gevolgd door de SSH-gebruikersreferenties die u hebt gemaakt. Als dit niet uw eerste aanmelding is, voert u alleen de referenties in voor de SSH-gebruiker die u hebt gemaakt.

U kunt zich ook gelijktijdig aanmelden met de oorspronkelijke referenties (standaard is dit sshuser) vanuit een ander browservenster.

U ziet ook dat de zojuist toegevoegde gebruikers geen hoofdmapbevoegdheden in het Linux-systeem hebben, maar wel dezelfde toegang tot alle bestanden in de externe HDFS- en WASB-opslag hebben.

Verbinding maken extern verbinding maken met Microsoft ML Services

U kunt toegang tot de HDInsight Spark-compute-context instellen vanuit een extern exemplaar van ML Client dat op uw bureaublad wordt uitgevoerd. Als u dit wilt doen, moet u de opties (hdfsShareDir, shareDir, sshUsername, sshHostname, sshSwitches en sshProfileScript) opgeven bij het definiëren van de RxSpark-compute-context op uw bureaublad: bijvoorbeeld:

myNameNode <- "default"
myPort <- 0

mySshHostname  <- '<clustername>-ed-ssh.azurehdinsight.net'  # HDI secure shell hostname
mySshUsername  <- '<sshuser>'# HDI SSH username
mySshSwitches  <- '-i /cygdrive/c/Data/R/davec'   # HDI SSH private key

myhdfsShareDir <- paste("/user/RevoShare", mySshUsername, sep="/")
myShareDir <- paste("/var/RevoShare" , mySshUsername, sep="/")

mySparkCluster <- RxSpark(
    hdfsShareDir = myhdfsShareDir,
    shareDir     = myShareDir,
    sshUsername  = mySshUsername,
    sshHostname  = mySshHostname,
    sshSwitches  = mySshSwitches,
    sshProfileScript = '/etc/profile',
    nameNode     = myNameNode,
    port         = myPort,
    consoleOutput= TRUE
)

Zie de sectie 'Using Microsoft Machine Learning Server as an Apache Hadoop Client' in How to use RevoScaleR in an Apache Spark compute context (RevoScaleR gebruiken in een Apache Spark compute-context) voor meer informatie.

Een compute-context gebruiken

Met een compute-context kunt u bepalen of een berekening lokaal op het Edge-knooppunt wordt uitgevoerd of wordt gedistribueerd naar de verschillende knooppunten in het HDInsight-cluster. Zie Execute an R script on an ML Services cluster in Azure HDInsight using RStudio Server (Een R-script uitvoeren op een ML Services-cluster inAzure HDInsight met behulp van RStudio Server) voor een voorbeeld van het instellen van een compute-context met RStudio Server.

R-code distribueren naar meerdere knooppunten

Met ML Services in HDInsight kunt u bestaande R-code uitvoeren op meerdere knooppunten in het cluster met behulp van rxExec . Deze functie is handig bij het uitvoeren van een parameteropschoning of van simulaties. Hier volgt een voorbeeldcode van het gebruik van rxExec:

rxExec( function() {Sys.info()["nodename"]}, timesToRun = 4 )

Als u nog steeds de Spark-context gebruikt, retourneert deze opdracht de waarde nodename voor de werkknooppunten waar de code (Sys.info()["nodename"]) op wordt uitgevoerd. Op een cluster met vier knooppunt verwacht u bijvoorbeeld uitvoer te ontvangen die vergelijkbaar is met het volgende codefragment:

$rxElem1
    nodename
"wn3-mymlser"

$rxElem2
    nodename
"wn0-mymlser"

$rxElem3
    nodename
"wn3-mymlser"

$rxElem4
    nodename
"wn3-mymlser"

Toegang tot gegevens in Apache Hive parquet

HDInsight ML Services biedt directe toegang tot gegevens in Hive en Parquet voor gebruik door ScaleR-functies in de Spark-compute-context. Deze mogelijkheden zijn beschikbaar via nieuwe functies voor ScaleR-gegevensbronnen (genaamd RxHiveData en RxParquetData) die gebruikmaken van Spark SQL om gegevens rechtstreeks in Spark DataFrame te laden voor analyse met ScaleR.

Hieronder ziet u code met voorbeeldcode bij het gebruik van de nieuwe functies:

#Create a Spark compute context:
myHadoopCluster <- rxSparkConnect(reset = TRUE)

#Retrieve some sample data from Hive and run a model:
hiveData <- RxHiveData("select * from hivesampletable",
                       colInfo = list(devicemake = list(type = "factor")))
rxGetInfo(hiveData, getVarInfo = TRUE)

rxLinMod(querydwelltime ~ devicemake, data=hiveData)

#Retrieve some sample data from Parquet and run a model:
rxHadoopMakeDir('/share')
rxHadoopCopyFromLocal(file.path(rxGetOption('sampleDataDir'), 'claimsParquet/'), '/share/')
pqData <- RxParquetData('/share/claimsParquet',
                        colInfo = list(
                            age    = list(type = "factor"),
                            car.age = list(type = "factor"),
                            type = list(type = "factor")
                        ) )
rxGetInfo(pqData, getVarInfo = TRUE)

rxNaiveBayes(type ~ age + cost, data = pqData)

#Check on Spark data objects, cleanup, and close the Spark session:
lsObj <- rxSparkListData() # two data objs are cached
lsObj
rxSparkRemoveData(lsObj)
rxSparkListData() # it should show empty list
rxSparkDisconnect(myHadoopCluster)

Zie de online Help in ML Services met behulp van de opdrachten en voor meer informatie over het gebruik van ?RxHivedata deze ?RxParquetData nieuwe functies.

Aanvullende R-pakketten installeren op het cluster

R-pakketten installeren op het Edge-knooppunt

Als u extra R-pakketten wilt installeren op het edge-knooppunt, kunt u rechtstreeks vanuit de R-console gebruiken nadat u via SSH verbinding hebt gemaakt met het install.packages() edge-knooppunt.

R-pakketten installeren op het werkpunt

Als u R-pakketten wilt installeren op de werkknooppunten van het cluster, moet u een scriptactie gebruiken. Scriptacties zijn Bash-scripts die worden gebruikt om configuratiewijzigingen aan te brengen in het HDInsight-cluster of om extra software te installeren, zoals extra R-pakketten.

Belangrijk

U kunt scriptacties alleen gebruiken om extra R-pakketten te installeren nadat het cluster is gemaakt. Gebruik deze procedure niet tijdens het maken van het cluster, omdat het script ervan afhankelijk is ML services volledig zijn geconfigureerd.

  1. Volg de stappen in Clusters aanpassen met scriptactie.

  2. Geef bij Scriptactie verzenden de volgende informatie op:

    • Bij Scripttype selecteert u Aangepast.

    • Geef bij Naam een naam op voor de scriptactie.

      • Voer in bij Bash-script-URI. https://mrsactionscripts.blob.core.windows.net/rpackages-v01/InstallRPackages.sh Dit is het script dat extra R-pakketten installeert op het worker-knooppunt
    • Schakel het selectievakje alleen in voor Worker.

    • Parameters: de R-pakketten die moeten worden geïnstalleerd. Bijvoorbeeld: bitops stringr arules

    • Schakel het selectievakje in om deze scriptactie persistent te maken.

    Notitie

    1. Standaard worden alle R-pakketten geïnstalleerd vanuit een momentopname van de Microsoft MRAN-opslagplaats, consistent met de versie van ML Server die is geïnstalleerd. Als u nieuwere versies van pakketten wilt installeren, is er kans op incompatibiliteit. Dit soort installatie is echter mogelijk door useCRAN op te geven als het eerste element van de pakketlijst, bijvoorbeeld useCRAN bitops, stringr, arules.
    2. Voor sommige R-pakketten zijn aanvullende Linux-systeembibliotheken vereist. Voor het gemak wordt HDInsight ML Services vooraf geïnstalleerd met de afhankelijkheden die nodig zijn voor de 100 populairste R-pakketten. Als voor de R-pakketten die u wilt installeren, meer bibliotheken zijn vereist, downloadt u het standaardscript dat hier wordt gebruikt, en voegt u stappen toe om de systeembibliotheken te installeren. Vervolgens moet u het gewijzigde script uploaden naar een openbare blobcontainer in Azure-opslag en het gewijzigde script gebruiken om de pakketten te installeren. Zie Ontwikkeling van scriptacties voor meer informatie over het ontwikkelen van scriptacties.

    Azure Portal scriptactie verzenden

  3. Selecteer Maken om het script uit te voeren. Nadat het script is voltooid, zijn de R-pakketten beschikbaar op alle werkknooppunten.

Volgende stappen