Hızlı Başlangıç: RStudio Server kullanarak ML Services kümesinde R Azure HDInsight betiği yürütme

Önemli

Bu içerik kullanımdan kalkmışsa ve gelecekte güncelleştirilmeyecek. Azure HDInsight 3,6 ML Hizmetleri (Machine Learning Server) küme türü 31 Aralık 2020 itibariyle kullanımdan kaldırıldı.

ML Hizmetleri, R Azure HDInsight dağıtılmış hesaplamaları çalıştırmak için Apache Spark ve Apache Hadoop MapReduce kullanmalarını sağlar. ML Hizmetleri, işlem bağlamını ayarerek çağrıların nasıl yürütülülür olduğunu kontrol eder. Kümenin kenar düğümü, kümeye bağlanmak ve R betiklerinizi çalıştırmak için kullanışlı bir yer sağlar. Kenar düğümünde, Kenar düğümü sunucusunun çekirdekleri arasında RevoScaleR'nin paralel dağıtılmış işlevlerini çalıştırma seçeneğiniz vardır. Ayrıca RevoScaleR'nin Hadoop Eşleme Azaltmasını kullanarak veya işlem bağlamlarını kullanarak bunları kümenin Apache Spark çalıştırabilirsiniz.

Bu hızlı başlangıçta, dağıtılmış R hesaplamaları için Spark kullanmayı gösteren RStudio Server ile R betiği çalıştırmayı öğrenirsiniz. Bir kenar düğümünde yerel olarak hesaplamalar gerçekleştirmek ve HDInsight kümesinde düğümlere yeniden dağıtılmış bir işlem bağlamı tanımlayabilirsiniz.

Önkoşul

HDInsight ML da bir ML Services kümesi. Bkz. Küme türünü kullanarak Apache Hadoop kümeleri Azure portal ve ML Hizmetleri'ni seçin.

RStudio Server’a bağlanma

RStudio Server kümenin kenar düğümünde çalışır. Aşağıdaki URL'ye CLUSTERNAME gidin; burada, oluşturduğunuz ML Services kümesi adıdır:

https://CLUSTERNAME.azurehdinsight.net/rstudio/

İlk kez oturum a açmanız için iki kez kimlik doğrulaması gerekir. İlk kimlik doğrulama istemi için kümenin Yönetici oturum açma bilgilerini ve parolasını girin; varsayılan değer: admin . İkinci kimlik doğrulama istemi için SSH oturum açma bilgilerini ve parolasını girin; varsayılan değer: sshuser . Sonraki oturum açmalar yalnızca SSH kimlik bilgilerini gerektirir.

Bağlandıktan sonra ekranınız aşağıdaki ekran görüntüsüne benzemelidir:

R Studio web konsoluna genel bakış

İşlem bağlamı kullanma

  1. RStudio Server'da örnek verileri HDInsight için varsayılan depolama alanına yüklemek üzere aşağıdaki kodu kullanın:

    # Set the HDFS (WASB) location of example data
     bigDataDirRoot <- "/example/data"
    
     # create a local folder for storing data temporarily
     source <- "/tmp/AirOnTimeCSV2012"
     dir.create(source)
    
     # Download data to the tmp folder
     remoteDir <- "https://packages.revolutionanalytics.com/datasets/AirOnTimeCSV2012"
     download.file(file.path(remoteDir, "airOT201201.csv"), file.path(source, "airOT201201.csv"))
     download.file(file.path(remoteDir, "airOT201202.csv"), file.path(source, "airOT201202.csv"))
     download.file(file.path(remoteDir, "airOT201203.csv"), file.path(source, "airOT201203.csv"))
     download.file(file.path(remoteDir, "airOT201204.csv"), file.path(source, "airOT201204.csv"))
     download.file(file.path(remoteDir, "airOT201205.csv"), file.path(source, "airOT201205.csv"))
     download.file(file.path(remoteDir, "airOT201206.csv"), file.path(source, "airOT201206.csv"))
     download.file(file.path(remoteDir, "airOT201207.csv"), file.path(source, "airOT201207.csv"))
     download.file(file.path(remoteDir, "airOT201208.csv"), file.path(source, "airOT201208.csv"))
     download.file(file.path(remoteDir, "airOT201209.csv"), file.path(source, "airOT201209.csv"))
     download.file(file.path(remoteDir, "airOT201210.csv"), file.path(source, "airOT201210.csv"))
     download.file(file.path(remoteDir, "airOT201211.csv"), file.path(source, "airOT201211.csv"))
     download.file(file.path(remoteDir, "airOT201212.csv"), file.path(source, "airOT201212.csv"))
    
     # Set directory in bigDataDirRoot to load the data into
     inputDir <- file.path(bigDataDirRoot,"AirOnTimeCSV2012")
    
     # Make the directory
     rxHadoopMakeDir(inputDir)
    
     # Copy the data from source to input
     rxHadoopCopyFromLocal(source, bigDataDirRoot)
    

    Bu adımın tamamlanması yaklaşık 8 dakika sürebilir.

  2. Bazı veri bilgileri oluşturun ve iki veri kaynağı tanımlayın. RStudio'da aşağıdaki kodu girin:

    # Define the HDFS (WASB) file system
     hdfsFS <- RxHdfsFileSystem()
    
     # Create info list for the airline data
     airlineColInfo <- list(
          DAY_OF_WEEK = list(type = "factor"),
          ORIGIN = list(type = "factor"),
          DEST = list(type = "factor"),
          DEP_TIME = list(type = "integer"),
          ARR_DEL15 = list(type = "logical"))
    
     # get all the column names
     varNames <- names(airlineColInfo)
    
     # Define the text data source in hdfs
     airOnTimeData <- RxTextData(inputDir, colInfo = airlineColInfo, varsToKeep = varNames, fileSystem = hdfsFS)
    
     # Define the text data source in local system
     airOnTimeDataLocal <- RxTextData(source, colInfo = airlineColInfo, varsToKeep = varNames)
    
     # formula to use
     formula = "ARR_DEL15 ~ ORIGIN + DAY_OF_WEEK + DEP_TIME + DEST"
    
  3. Yerel işlem bağlamını kullanarak veriler üzerinde lojistik regresyon çalıştırın. RStudio'da aşağıdaki kodu girin:

    # Set a local compute context
     rxSetComputeContext("local")
    
     # Run a logistic regression
     system.time(
        modelLocal <- rxLogit(formula, data = airOnTimeDataLocal)
     )
    
     # Display a summary
     summary(modelLocal)
    

    Hesaplamaların yaklaşık 7 dakika içinde tamamlanması gerekir. Aşağıdaki kod parçacığına benzer satırlarla sona eren bir çıkış görüyor gerekir:

    Data: airOnTimeDataLocal (RxTextData Data Source)
     File name: /tmp/AirOnTimeCSV2012
     Dependent variable(s): ARR_DEL15
     Total independent variables: 634 (Including number dropped: 3)
     Number of valid observations: 6005381
     Number of missing observations: 91381
     -2*LogLikelihood: 5143814.1504 (Residual deviance on 6004750 degrees of freedom)
    
     Coefficients:
                      Estimate Std. Error z value Pr(>|z|)
      (Intercept)   -3.370e+00  1.051e+00  -3.208  0.00134 **
      ORIGIN=JFK     4.549e-01  7.915e-01   0.575  0.56548
      ORIGIN=LAX     5.265e-01  7.915e-01   0.665  0.50590
      ......
      DEST=SHD       5.975e-01  9.371e-01   0.638  0.52377
      DEST=TTN       4.563e-01  9.520e-01   0.479  0.63172
      DEST=LAR      -1.270e+00  7.575e-01  -1.676  0.09364 .
      DEST=BPT         Dropped    Dropped Dropped  Dropped
    
      ---
    
      Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
    
      Condition number of final variance-covariance matrix: 11904202
      Number of iterations: 7
    
  4. Spark bağlamını kullanarak aynı lojistik regresyonu çalıştırın. Spark bağlamı, işlemi HDInsight kümesindeki tüm çalışan düğümlerine dağıtır. RStudio'da aşağıdaki kodu girin:

    # Define the Spark compute context
     mySparkCluster <- RxSpark()
    
     # Set the compute context
     rxSetComputeContext(mySparkCluster)
    
     # Run a logistic regression
     system.time(  
        modelSpark <- rxLogit(formula, data = airOnTimeData)
     )
    
     # Display a summary
     summary(modelSpark)
    

    Hesaplamaların yaklaşık 5 dakika içinde tamamlanması gerekir.

Kaynakları temizleme

Hızlı başlangıç tamamlandıktan sonra kümeyi silmek istiyor olabilir. HDInsight ile, verileriniz Azure Storage’da depolanır, böylece kullanılmadığında bir kümeyi güvenle silebilirsiniz. Ayrıca, kullanılmıyorken dahi HDInsight kümesi için sizden ücret kesilir. Küme ücretleri depolama ücretlerinin birkaç katı olduğundan, kullanılmadığında kümelerin silinmesi mantıklı olandır.

Kümeyi silmek için bkz. Tarayıcınızı, PowerShell'i veya Azure CLI'yi kullanarak HDInsight kümesi silme.

Sonraki adımlar

Bu hızlı başlangıçta, dağıtılmış R hesaplamaları için Spark kullanmayı gösteren RStudio Server ile R betiği çalıştırmayı öğrendiniz. Yürütmenin kenar düğümünün veya HDInsight kümesi çekirdeklerinin arasında nasıl paralel hale getirildiklerini ve nasıl paralel hale getirildiklerini belirtmek için kullanılabilen seçenekleri öğrenmek için sonraki makaleye ilerleyin.

Not

Bu sayfada RStudio yazılımının özellikleri açıklanmaz. Microsoft Azure HDInsight RStudio, Inc. ile bağlantılı değildir