Hantera ML Services-kluster på Azure 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.

I den här artikeln får du lära dig hur du hanterar ett befintligt ML Services-kluster på Azure HDInsight för att utföra uppgifter som att lägga till flera samtidiga användare, fjärransluta till ett ML Services-kluster, ändra beräkningskontext osv.

Förutsättningar

Aktivera flera samtidiga användare

Du kan aktivera flera samtidiga användare för ML Services-kluster i HDInsight genom att lägga till fler användare för gränsnoden som RStudio Community-versionen körs på. När du skapar ett HDInsight-kluster måste du ange två användare, en HTTP-användare och en SSH-användare:

HDI Azure Portal inloggningsparametrar

  • Användarnamn för klusterinloggning: en HTTP-användare för autentisering via HDInsight-gatewayen som används till att skydda HDInsight-klustret du skapade. Den här HTTP-användaren används för att få åtkomst till Apache Ambari-användargränssnittet, Apache Hadoop YARN-användargränssnittet och andra gränssnittskomponenter.
  • Secure Shell (SSH)-användarnamn: en SSH-användare för åtkomst till klustret via SSH. Den här användaren är en användare i Linux-systemet för alla huvudnoder, arbetsnoder och kantnoder. Du kan därmed använda SSH för åtkomst till alla noder i ett fjärrkluster.

Den R Studio Server Community-version som används i ML Services-klustret i HDInsight accepterar endast Linux-användarnamn och -lösenord som en inloggningsmekanism. Du kan inte skicka token. Så när du försöker komma åt R Studio för första gången i ett ML Services-kluster måste du logga in två gånger.

  • Logga först in med HTTP-autentiseringsuppgifterna via HDInsight Gateway.

  • Använd sedan SSH-autentiseringsuppgifterna för att logga in på RStudio.

För närvarande kan du bara skapa ett SSH-användarkonto när du etablerar ett HDInsight-kluster. Om du vill ge flera användare åtkomst ML Services-kluster i HDInsight måste du skapa ytterligare användare i Linux-systemet.

Eftersom RStudio körs på klustrets kantnod finns det flera steg här:

  1. Använd den befintliga SSH-användaren för att logga in på kantnoden
  2. Lägg till fler Linux-användare på kantnoden
  3. Använd RStudio Community-versionen med användaren som skapades

Steg 1: Använd den SSH-användare som skapades för att logga in på kantnoden

Följ anvisningarna på sidan Anslut HDInsight (Apache Hadoop) med hjälp av SSH för att komma åt kantnoden. Kantnodadressen för ML Services-klustret i HDInsight är CLUSTERNAME-ed-ssh.azurehdinsight.net .

Steg 2: Lägg till fler Linux-användare på kantnoden

Kör följande kommandon när du ska lägga till en användare vid kantnoden:

# Add a user 
sudo useradd <yournewusername> -m

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

Följande skärmbild visar utdata.

skärmbild av utdata för samtidiga användare

När du tillfrågas om "Aktuellt Kerberos-lösenord:" trycker du bara på Retur för att ignorera det. Alternativet -m i kommandot useradd innebär att systemet skapar en arbetsmapp för användaren, vilket krävs för RStudio Comunity-versionen.

Steg 3: Använd RStudio Community-versionen med användaren som skapades

Få åtkomst till RStudio från https://CLUSTERNAME.azurehdinsight.net/rstudio/ . Om du loggar in för första gången efter att klustret har skapats anger du autentiseringsuppgifterna för klusteradministratören följt av de SSH-användarautentiseringsuppgifter som du skapade. Om det här inte är din första inloggning anger du bara autentiseringsuppgifterna för den SSH-användare som du skapade.

Du kan också logga in med de ursprungliga autentiseringsuppgifterna (som standard är det sshuser) samtidigt från ett annat webbläsarfönster.

Observera också att de nya användarna inte har rotbehörighet i Linux-systemet, men att de har samma åtkomst till alla filer i HDFS- och WASB-fjärrlagringen.

Anslut till Microsoft ML Services

Du kan konfigurera åtkomst till HDInsight Spark-beräkningskontexten från en fjärrinstans ML klient som körs på skrivbordet. För att göra det måste du ange alternativen (hdfsShareDir, shareDir, sshUsername, sshHostname, sshSwitches och sshProfileScript) när du definierar RxSpark-beräkningskontexten på skrivbordet: Exempel:

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
)

Mer information finns i avsnittet "Använda Microsoft Machine Learning Server som en Apache Hadoop-klient" i Använda RevoScaleR i en Apache Spark-beräkningskontext

Använda en beräkningskontext

Med en beräkningskontext kan du kontrollera om beräkningen utförs lokalt på kantnoden eller om den ska distribueras mellan noderna i HDInsight-klustret. Ett exempel på hur du anger en beräkningskontext med RStudio Server finns i Execute an R script on an ML Services cluster in Azure HDInsight using RStudio Server (Köra ett R-skript på ett ML Services-kluster i en Azure HDInsight med RStudio Server).

Distribuera R-kod till flera noder

Med ML Services på HDInsight kan du ta befintlig R-kod och köra den över flera noder i klustret med hjälp av rxExec . Det här är praktiskt när du gör en parameterrensning eller simuleringar. Här följer ett kodexempel på hur du kan använda rxExec:

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

Om du fortfarande använder Spark-kontexten returnerar det här kommandot nodename-värdet för de arbetsnoder (Sys.info()["nodename"]) som koden körs på. I ett kluster med fyra noder förväntar du dig till exempel utdata som liknar följande kodfragment:

$rxElem1
    nodename
"wn3-mymlser"

$rxElem2
    nodename
"wn0-mymlser"

$rxElem3
    nodename
"wn3-mymlser"

$rxElem4
    nodename
"wn3-mymlser"

Komma åt data i Apache Hive och Parquet

HDInsight ML Services tillåter direkt åtkomst till data i Hive och Parquet för användning av ScaleR-funktioner i Spark-beräkningskontexten. Dessa funktioner är tillgängliga via nya ScaleR-datakällafunktioner som heter RxHiveData och RxParquetData som fungerar med Spark SQL för att läsa in data direkt till en Spark DataFrame för analys av ScaleR.

Här är exempelkod där de nya funktionerna används:

#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)

Mer information om hur du använder dessa nya funktioner finns i onlinehjälpen i ML Services med hjälp av ?RxHivedata kommandona ?RxParquetData och .

Installera ytterligare R-paket i klustret

Installera R-paket på gränsnoden

Om du vill installera ytterligare R-paket på gränsnoden kan du använda direkt från R-konsolen när du är ansluten till install.packages() gränsnoden via SSH.

Installera R-paket på arbetsnoden

Om du vill installera R-paket på klustrets arbetsnoder måste du använda en skriptåtgärd. Skriptåtgärder är bash-skript som används till att göra konfigurationsändringar i HDInsight-klustret eller till att installera ytterligare programvara, som fler R-paket.

Viktigt

Det går bara att använda skriptåtgärder för att installera ytterligare R-paket när klustret har skapats. Använd inte den här proceduren när du skapar klustret, eftersom skriptet förlitar sig ML Services konfigureras fullständigt.

  1. Följ stegen i Anpassa kluster med skriptåtgärd.

  2. För åtgärden Skicka skript anger du följande information:

    • För Skripttyp väljer du Anpassad.

    • I Namn anger du ett namn för skriptåtgärden.

      • För URI för Bash-skript anger du https://mrsactionscripts.blob.core.windows.net/rpackages-v01/InstallRPackages.sh . Det här är skriptet som installerar ytterligare R-paket på arbetsnoden
    • Markera bara kryssrutan för Worker.

    • Parametrar: R-paketen som ska installeras. Till exempel bitops stringr arules

    • Markera kryssrutan för att spara den här skriptåtgärden.

    Anteckning

    1. Som standard installeras alla R-paket från en ögonblicksbild av Microsoft MRAN-lagringsplatsen i enlighet med den version ML Server som har installerats. Om du vill installera nyare version av paket finns en risk för kompatibilitetsproblem. Den här typen av installation är däremot möjlig om du anger useCRAN som det första elementet i paketlistan, till exempel useCRAN bitops, stringr, arules.
    2. För vissa R-paket krävs ytterligare Linux-bibliotek. För enkelhetens skull levereras HDInsight ML Services förinstallerade med de beroenden som krävs av de 100 populäraste R-paketen. Men om R-paket som du installerar kräver bibliotek utöver dessa måste du ladda ned basskriptet som används här och lägga till steg för att installera systembiblioteken. Sedan måste du överföra de ändrade skripten till en offentlig blobcontainer i Azure Storage och använda det ändrade skriptet för att installera paketen. Mer information om hur du utvecklar skriptåtgärder finns i Skriptåtgärdsutveckling.

    Azure Portal skicka skriptåtgärd

  3. Välj Skapa för att köra skriptet. När skriptet är färdigt är R-paketen tillgängliga på alla arbetsnoder.

Nästa steg