您现在访问的是微软AZURE全球版技术文档网站,若需要访问由世纪互联运营的MICROSOFT AZURE中国区技术文档网站,请访问 https://docs.azure.cn.

快速入门:使用 RStudio Server 在 Azure HDInsight 中的 ML Services 群集上执行 R 脚本

Azure HDInsight 上的 ML Services 允许 R 脚本使用 Apache Spark 和 Apache Hadoop MapReduce 运行分布式计算。 ML Services 可设置计算上下文,从而控制执行调用的方式。 群集的边缘节点为连接到群集和运行 R 脚本提供了便捷的位置。 使用边缘节点,可以选择跨边缘节点服务器的各个核心上运行 RevoScaleR 的并行化分布式函数。 还可以通过使用 RevoScaleR 的 Hadoop Map Reduce 或 Apache Spark 计算上下文在群集的各个节点上运行这些函数。

本快速入门介绍如何使用 RStudio Server 运行 R 脚本,以演示如何使用 Spark 进行分布式 R 计算。 你将定义计算上下文以在边缘节点上本地执行计算,然后重新分布在 HDInsight 群集中的节点上。

先决条件

HDInsight 上的机器学习服务群集。 参阅使用 Azure 门户创建 Apache Hadoop 群集,并选择“机器学习服务”作为“群集类型”。

连接到 RStudio Server

RStudio Server 在群集的边缘节点上运行。 转到以下 URL,其中 CLUSTERNAME 是创建的机器学习服务群集的名称:

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

首次登录时需要进行两次身份验证。 对于第一个身份验证提示,请提供群集管理员登录名和密码,默认为 admin。 对于第二个身份验证提示,请提供 SSH 登录名和密码,默认为 sshuser。 后续登录只需提供 SSH 凭据。

连接后,屏幕应如以下屏幕截图所示:

R Studio Web 控制台概述

使用计算上下文

  1. 在 RStudio Server 中,使用以下代码将示例数据加载到 HDInsight 的默认存储中:

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

    此步骤可能需要大约 8 分钟才能完成。

  2. 创建一些数据信息并定义两个数据源。 在 RStudio 中输入以下代码:

    # 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. 使用 本地 计算上下文对数据运行逻辑回归。 在 RStudio 中输入以下代码:

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

    计算应该在大约 7 分钟内完成。 应会看到以类似于以下代码段的行结尾的输出:

    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 上下文运行相同的逻辑回归。 Spark 上下文将处理进程分布到 HDInsight 群集的所有辅助角色节点上。 在 RStudio 中输入以下代码:

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

    计算应该在大约 5 分钟内完成。

清理资源

完成本快速入门后,可以删除群集。 有了 HDInsight,便可以将数据存储在 Azure 存储中,因此可以在群集不用时安全地删除群集。 此外,还需要支付 HDInsight 群集费用,即使未使用。 由于群集费用高于存储空间费用数倍,因此在不使用群集时将其删除可以节省费用。

若要删除群集,请参阅使用浏览器、PowerShell 或 Azure CLI 删除 HDInsight 群集

后续步骤

本快速入门介绍了如何使用 RStudio Server 运行 R 脚本,以演示如何使用 Spark 进行分布式 R 计算。 继续阅读下一篇文章,了解可用于指定是否以及如何跨边缘节点或 HDInsight 群集的核心并行执行的选项。

备注

此页介绍 RStudio 软件的功能。 Microsoft Azure HDInsight 与 RStudio, Inc. 没有关联