The doAzureParallel package is a parallel backend for the widely popular foreach package. With doAzureParallel, each iteration of the foreach loop runs in parallel on an Azure Virtual Machine (VM), allowing users to scale up their R jobs to tens or hundreds of machines.
doAzureParallel is built to support the foreach parallel computing package. The foreach package supports parallel execution - it can execute multiple processes across some parallel backend. With just a few lines of code, the doAzureParallel package helps create a cluster in Azure, register it as a parallel backend, and seamlessly connects to the foreach package.
NOTE: The terms pool and cluster are used interchangably throughout this document.
1) Install doAzureParallel directly from Github.
# install the package devtools
install.packages("devtools")
# install the doAzureParallel and rAzureBatch package
devtools::install_github("Azure/rAzureBatch")
devtools::install_github("Azure/doAzureParallel")
2) Create an doAzureParallel's credentials file
library(doAzureParallel)
generateCredentialsConfig("credentials.json")
3) Login or register for an Azure Account, navigate to Azure Cloud Shell
wget -q https://raw.githubusercontent.com/Azure/doAzureParallel/master/account_setup.sh &&
chmod 755 account_setup.sh &&
/bin/bash account_setup.sh
4) Follow the on screen prompts to create the necessary Azure resources and copy the output into your credentials file. For more information, see Getting Started Scripts.
To Learn More:
Import the package
library(doAzureParallel)
Set up your parallel backend with Azure. This is your set of Azure VMs.
# 1. Generate your credential and cluster configuration files.
generateClusterConfig("cluster.json")
generateCredentialsConfig("credentials.json")
# 2. Fill out your credential config and cluster config files.
# Enter your Azure Batch Account & Azure Storage keys/account-info into your credential config ("credentials.json") and configure your cluster in your cluster config ("cluster.json")
# 3. Set your credentials - you need to give the R session your credentials to interact with Azure
setCredentials("credentials.json")
# 4. Register the pool. This will create a new pool if your pool hasn't already been provisioned.
cluster <- makeCluster("cluster.json")
# 5. Register the pool as your parallel backend
registerDoAzureParallel(cluster)
# 6. Check that your parallel backend has been registered
getDoParWorkers()
Run your parallel foreach loop with the %dopar% keyword. The foreach function will return the results of your parallel code.
number_of_iterations <- 10
results <- foreach(i = 1:number_of_iterations) %dopar% {
# This code is executed, in parallel, across your cluster.
myAlgorithm()
}
After you finish running your R code in Azure, you may want to shut down your cluster of VMs to make sure that you are not being charged anymore.
# shut down your pool
stopCluster(cluster)
This section will provide information about how Azure works, how best to take advantage of Azure, and best practices when using the doAzureParallel package.
Azure Introduction (link)
Using Azure Batch
Getting Started (link)
Using the Getting Started to create credentials
i. Generate Credentials Script (link)
ii. National Cloud Support (link)
Customize Cluster (link)
Setting up your cluster to user's specific needs
i. Virtual Machine Sizes (link)
ii. Autoscale (link)
iii. Building Containers (link)
Managing Cluster (link)
Managing your cluster's lifespan
Customize Job
Setting up your job to user's specific needs
i. Asynchronous Jobs (link)
ii. Foreach Azure Options (link)
iii. Error Handling (link)
Package Management (link)
Best practices for managing your R packages in code. This includes installation at the cluster or job level as well as how to use different package providers.
Storage Management
i. Distributing your Data (link)
ii. Persistent Storage (link)
iii. Accessing Azure Storage through R (link)
Performance Tuning (link)
Best practices on optimizing your Foreach loop
Debugging and Troubleshooting (link)
Best practices on diagnosing common issues
Azure Limitations (link)
Learn about the limitations around the size of your cluster and the number of foreach jobs you can run in Azure.
Read our FAQ for known issues and common questions.
For more information, please visit our documentation.