在Amazon Web Services中使用R语言运行模拟

简介: 在Amazon Web Services中使用R语言运行模拟

我最近一直做R中的一些模拟研究,涉及计算机密集型MCMC采样。通常我会使用我所在机构的计算集群来做这些,利用大量的计算机核心,但暂时缺乏这种可用性导致我调查使用亚马逊的Web服务(AWS)系统。在这篇文章中,我将描述我在R中进行模拟的步骤。


使用Amazon Web Services进行初始设置

首先注册上的免费帐户。

接下来,您需要完成此处描述的所有步骤。EC2是我们将使用的亚马逊服务。请

第1步 - 注册AWS

步骤2 - 创建IAM用户

 步骤3 - 创建密钥对

 步骤4 - 创建虚拟私有云(VPC)

 步骤5 - 创建安全组

我们将在一分钟内启动我们可以连接的云计算机。


开始第一个实例

我们现在将设置我们的第一台云计算机。亚马逊将其中一个称为实例。首先,使用您之前设置的IAM凭据登录,访问:https://your_aws_account_id.signin.aws.amazon.com/console/,替换前一地址中的AWS账户ID。然后单击主页左上角的EC2。这会将您带到EC2仪表板。

要启动实例,请按照此处说明的步骤1进行操作。

完成实例操作后,请确保通过右键单击实例并选择终止,从EC2仪表板终止。


在实例上安装R

上面提到的入门说明描述了如何设置运行Amazon Linux AMI的实例,据我所知,这是他们创建的亚马逊自己的Linux风格。为了运行R,我改为使用普通的Ubuntu安装。Ubuntu是Linux操作系统最受欢迎的版本之一。

启动一个新实例,运行主列表中显示的Ubuntu AMI。然后使用Putty通过SSH连接到它。请注意,对于Amazon AMI,用户名是ec2-user,对于Ubuntu,您需要连接的用户名是ubuntu。

接下来我们可以安装R。首先,在Putty类型:



sudo nano /etc/apt/sources.list


将sources.list文件加载到nano文本编辑器中。我们需要添加一行来指向可以下载R的位置。在文件底部添加如下行:



deb http://cran.rstudio.com/bin/linux/ubuntu trusty/


然后按Ctrl + X,键入Y,然后输入,以保存文件。接下来,依次键入以下三个命令,在需要时选择Y为yes:



sudo apt-key adv --keyserver keyserver.ubuntu.com --recv-keys E084DAB9 sudo apt-get install r-base


如果成功,您现在应该安装R。应该看到:


R version 3.2.2 (2015-08-14) -- "Fire Safety"
Copyright (C) 2015 The R Foundation for Statistical Computing
Platform: x86_64-pc-linux-gnu (64-bit)

R is free software and comes with ABSOLUTELY NO WARRANTY.
You are welcome to redistribute it under certain conditions.
Type 'license()' or 'licence()' for distribution details.

Natural language support but running in an English locale

R is a collaborative project with many contributors.
Type 'contributors()' for more information and
'citation()' on how to cite R or R packages in publications.

Type 'demo()' for some demos, 'help()' for on-line help, or
'help.start()' for an HTML browser interface to help.
Type 'q()' to quit R.


您现在可以从命令行在R中工作。

如果运行模拟,我会在桌面上准备一个R脚本文件,然后将其复制到AWS以运行它。如果您确实想在AWS上运行RStudio,请参阅Louis Aslett关于在AWS上运行R和RStudio 。


运行并行仿真

我尝试让AWS 运行的最初原因是在R中运行计算机仿真。我这样做的方法是首先启动一个具有多个核心的实例类型(36),特别是c4.8xlarge类型。为了并行运行模拟,我使用脚本文件调用R,该脚本文件启动R的多个实例。要编写此脚本文件,请myscript.sh在命令行键入:nano 。这将打开纳米文本编辑器程序。输入以下行:




#!/bin/bash
for set in {1..36}
do
nohup Rscript myrprog.R $set > ~/outputs/myprogoutputs_$set 2>&1 &
done

接下来,我们必须更改我们刚刚创建的脚本文件的权限,以使其能够被执行。为此,请在Putty命令提示符下键入以下内容:


chmod +x myscript.sh

在运行我们的脚本文件之前,我们需要编辑我们的R程序以利用我们传递给它的参数。在我的R程序的顶部,我添加了以下行:



args=(commandArgs(TRUE))
set <- as.numeric(args[[1]])


我们假设我们想要执行3600次模拟。如果我们使用36核心实例,我们可以在每次调用R时运行100次模拟。然后,每次调用都会保存一个包含100次模拟结果的数据集。然后,我们可以将36个数据集组合在一起,形成所需3600个模拟结果的数据集。

为了保存结果,在我的R程序结束时如下:



results <- list(estimates=estimates, ciLower=ciLower, ciUpper=ciUpper) setwd("outputs") save(results, file=paste("results_",set,".RData",sep=""))

这将一个名为results_set的R数据文件保存到outputs文件夹,其中set是我们的set变量。

相关文章
|
5月前
|
存储 NoSQL Redis
在Python Web开发过程中,为什么Redis运行速度快
【5月更文挑战第15天】Redis在Python Web开发中运行速度快,原因包括:1) 丰富数据类型满足多样化需求;2) 简单数据模型提升查询效率;3) 单线程模型结合非阻塞I/O实现高效处理;4) 持久化机制保证数据安全;5) 二进制协议与管道技术优化网络通信。这些因素共同确保Redis能处理大量请求并保持高性能。
68 1
|
5月前
|
前端开发 JavaScript API
阿里云智能媒体服务IMS(Intelligent Media Services)的视频剪辑Web SDK
【1月更文挑战第15天】【1月更文挑战第72篇】阿里云智能媒体服务IMS(Intelligent Media Services)的视频剪辑Web SDK
133 6
|
5月前
|
IDE Linux 开发工具
如何在Linux运行RStudio Server并实现Web浏览器远程访问
如何在Linux运行RStudio Server并实现Web浏览器远程访问
179 0
|
2月前
|
Android开发 iOS开发
[ionic]解决运行Android、IOS出现Could not find the web assets directory
[ionic]解决运行Android、IOS出现Could not find the web assets directory
28 1
|
2月前
|
Web App开发 移动开发 前端开发
如何优化运行在webkit上的web app
如何优化运行在webkit上的web app
|
3月前
|
移动开发 小程序 JavaScript
跨端技术问题之转Web运行时的“框架”模块主要负责什么功能
跨端技术问题之转Web运行时的“框架”模块主要负责什么功能
|
4月前
|
XML 前端开发 JavaScript
RESTful Web Services
RESTful Web Services
37 2
|
4月前
|
机器学习/深度学习 人工智能 Apache
人工智能平台PAI操作报错合集之alink任务可以在本地运行,上传到flink web运行就报错,如何解决
阿里云人工智能平台PAI (Platform for Artificial Intelligence) 是阿里云推出的一套全面、易用的机器学习和深度学习平台,旨在帮助企业、开发者和数据科学家快速构建、训练、部署和管理人工智能模型。在使用阿里云人工智能平台PAI进行操作时,可能会遇到各种类型的错误。以下列举了一些常见的报错情况及其可能的原因和解决方法。
|
4月前
|
关系型数据库 MySQL API
实时计算 Flink版操作报错合集之同步MySQL数据到另一个MySQL数据库,第一次同步后源表数据发生变化时目标表没有相应更新,且Web UI中看不到运行的任务,该怎么解决
在使用实时计算Flink版过程中,可能会遇到各种错误,了解这些错误的原因及解决方法对于高效排错至关重要。针对具体问题,查看Flink的日志是关键,它们通常会提供更详细的错误信息和堆栈跟踪,有助于定位问题。此外,Flink社区文档和官方论坛也是寻求帮助的好去处。以下是一些常见的操作报错及其可能的原因与解决策略。
181 0
|
5月前
|
缓存 NoSQL Redis
在Python Web开发过程中:数据库与缓存,除了Redis是内存数据库以外,还有哪些原因使其运行速度快?
Redis在Python Web开发中快速的原因:内存存储、多样化数据结构(如字符串、哈希、列表等)简化数据模型,单线程处理提高效率,结合非阻塞I/O;RDB和AOF提供持久化保障;TCP+二进制协议减少网络开销;管道技术提升通信效率。这些设计使Redis能高效处理高并发请求。
54 3
下一篇
无影云桌面