云计算技术下蒙特卡洛的模拟
配置实例:这一♂步只需要默认设置即可;
添加存储:用户可以选择存储的大小和类型;
标记实例:研究人员可以选择标记 实例, 当用户使用多个资源和实例时, 标签可以有助于管理;
配置安全组:选择适当的安全设置很重要, 安全组是一组控制与实例的流量 的防火墙规则, 研究人员需要允许通过SSH与实例进行通信, 并允许通过Web浏览器 连接到RStudio服务器, 因此需要打开以下端口:22 , 80 , 443 , 3389 和8787 ;
最后, 点击下一步审核, 完成实例的配置过程。
第三步是研究人员在自己的计算机和正在运行的EC2实例之间建立连接和通信桥梁。也就是通过SSH 软件实现连接。个人计算机一旦与实例建立连接, 研究人员就可以在他的虚拟机上安装和配置他可能需要的任何软件, 例如可以安装R和RStudio Server, Python, MATALB等。如果选择预先配置已安装软件的AMI, 则研究人员仍需要与实例 建立连接, 以便启动和使用他需要的软件。例如RStudio Server的使用, 其中一个功能是可☁以通过SSH设置和启动它, 然后可以通过用户名和密码从Web浏览器访问它 。值得注意的是, 一旦研究人员完成了虚拟机的工作, 他就需要返回AWS和EC2并终止正在运行的实例。如果不这样做, 将使实例处于工作状态, 并将收取不必要的费用。
实例运行后, 需要通过安全shell 直接与其建立连接, 不同的操作系数有所区别, 在Windows环境下可以利用PuTTY远程连接工具, 而MAC OSX下使用Mac OS终端来完成 , 设置是类似的。研究人员连接到AWS以便运行EC2上的实例。接下来, 就需将数据加载到S3, 以及在EC2和S3之间传输数据。
3、 数据的存储及传输
简单存储服务 是AWS的一部分, 其存储成本较低, 这一存储服务与EC2是分开的, S3使用Web界面来存储和检索研究人员计算机的任何数据, 提供安全且可扩展的对象存储。S3非常适用于大数据集的使用。当研究人员使用大型数据集并且不希望每次都将数据上传到他的虚拟机时, S3非常有用, 即使使用较小的数据集, 将数据上传到S3也许在逻辑上更为简单, 然后将其传输到EC2并直接在云中执行所有需要的分析。只要两个云服务 位于同一地理位置, S3和EC2之间的数据传输速度非常快 , 并且是免费的。AWS将服务器托管在世界各地的几个不同地理位置。研究人员应该选择最接近他/她的那个并且使其一致, 以便始终为其EC2和S3提供相同的位置。S3和EC2之间的数据传输 也在通过SSH连接到虚拟机时完成。
如果研究人员使用的数据文件不大, 他可以自己保存文件在本地计算机, 并在需要时将其上传到实例。以同样的方式, 他的输出文件可以很容易地下载回个人电脑。但ฃ是, 如果数据文件非常大, 则用户最佳选择是将其数据上传到AWS云存储 , 然后在需要时将其传输到EC2进行分析, 然后将结果保存回S3。我们建议使用此过程, 一方面因为大数据文件可能需要花费大量时间上传, 上传可能会中断, 以及其他可能的相关问题;另一方面, 一旦数据在S3中, 转移到EC2是快速简便的。在本节中, 我们将介绍用户如何将数据直接从个人计算机传输到EC2, 或者从计算机传输到S3然后再传输到EC2。
首先应在S3中创建存储桶 , 类似数据库的配置。在这种情况下, 一般默认选择了美国标准。创建后, 单击存储桶, 然后创建一个文件夹。我们就可以直接装载数据进入S3中。选择文件夹, 然后从操作菜单中选择上传, 以便将本地数据文件上传到S3。
3.1、 本地计算机与EC2的数据传输
3.1.1、 将数据从本地计算机传输到EC2创建的实例
实现这一功能有两种方式:其中一个是通过SSH和命令行。另一个是使用RStudio Server的上传和导出功能。这里介绍将数据直接上传到适用于Windows用户的EC2:
首先, 在连接到实例的PuTTY终端窗口中键入以下内容:
cd..
ls
cd home
cd Mydata
mkdir R
cd R
mkdir Data
cd Data
sudo chmod-R 0777/home/Mydata/R/Data
第一行退出最后一个文件夹并在其前移动一个文件夹。命令ls列出当前文件夹的内容。用户应该能够看到名为home根目录下的文件夹。如果没有, 他们需要重复进程cd..命令, 然后再执行ls命令, 直到找到home目录。cd home打开home文件夹, cd Mydata导航到Mydata文件夹。mkdir R命令创建一个名为R的文件夹;cd R打开这个新创建的目录。这同样适用于mkdir数据和cd数据。最后一个命令设置文件夹权限, 允许在文件夹中复制, 保存和删除文件。
接下来, 用户需要启动PSFTP , 这些文件转移应用程序, 包含在PuTTY这一工具中。从Windows命令提示符启动PSFTP。要建立PSFTP连接, 我们应在Windows命令提示符中键入以下代码:
psftp.exe ubuntu@XXX.XXX.XXX.XXX-/directory/keyfile.ppk
其中/directory/key le.ppk是.ppk文件的路径, 以及XXX.XXX.XXX.XXX是公共DNS, 每次都使用实例的特定公共DNS进行更改。这样配置完成以后, 为了传输数据, 就可以在Windows命令中输入以下代码:
put C:directorydatafile/directory/datafile
其中put是将文件发送到EC2实例的命令, C:directorydatafile是想要在他的本地计算机上发送的数据路径, /directory/dataf☏ile是EC2实例上的目标文件夹。在PuTTY终端窗口中, 连接到EC2实例, 使用ls命令查看文件夹的内容。
3.1.2、 直接从EC2为Windows用户下载数据
我们可以从Windows命令提示符下载文件 通过使用以下命令建立连接:
get/directory/datafile C:directorydatafile
其中get是获取文件的命令, /directory/datafile是文件夹的路径, 在将要下载文件的EC2实例上, 以及C:directorydatafile是要下载文件的文件夹的路径。
3.2、 S3和EC2之间的传输数据
要在EC2和S3之间传输文件, 需要在正在运行的EC2实例上安装和配置AWS命令行界面工具 。此工具允许从命令行 控制不同的服务, 也可以使用它来复制来自S3的文件。CLI的一部分配置是提供适当的凭证, 因此获取凭证是CLI的第一步。安全凭证用于验证授权任何第三方应用访问你的AWS帐号, 访问密钥由访问密钥ID和私密访问密钥组成。要创建访问密钥, 需要转到AWS页面并选择身份和访问管理 控制台。创建访问密钥后, 用户有一次机会下载它们。带有凭证 的文件需要保存在用户的个人计算机上。如果文件丢失或用户没有下载, 他将无法使用凭证, 应创建一组新密钥。包含访问密钥的文件称为credentials.csv, 可以使用MS Excel打开。要安装CLI, 需要在OSX终端或PuTTY终端中输入以下代码:
sudo apt-get install unzip
curlhttps://s3.amazonaws.com/aws-cli/awsclibundle.zip-oawscli-bundle.zip
unzip awscli-bundle.zip
sudo./awscli-bundle/install-i/usr/local/aws-b/usr/local/bin/aws
其中第一行安装unzip, 这是处理zip格式的压缩文件所需要的。第二行下载CLI, 第三行解压缩文件, 最后一行安装CLI.Next遵循CLI的配置。代码应在OSX终端或PuTTY终端输入:
aws configure
配置过程将要求提供凭证, 这些凭证位于credentials.csv中, 可以使用MS Excel打开文件。在这种情况下, 通过在OSX终端或PuTTY终端中输入以下选项:
AWS Access Key ID[None]:AKIAID5BRLKNXVX XN7GA
AWS Secret Access Key[None]:kxNDqMpkHWdh6mdgJrogRpeA0DXlK/jiULWzRkq7
Default region name[None]:us-east-1
Default output format[None]:json
前两行对应于凭证文件。区域名称可在AWS文档中找到。在这种情况下, 它一般是us-east-1, 但是也应该检查它的特定区域设定是否正确。
3.2.1、 在S3和EC2之间传输数据
在终端中导航到/home/Mydata/R/Data 或创建使用以下代码的文件夹:
cd..
ls
cd home
cd Mydata
mkdir R
cd R
mkdir Data
cd Data
sudo chmod-R 0777/home/Mydata/R/Data
以上代码可以依照上述类似的解释, 接下来, 在OSX终端或PuTTY终端上运行:
sudo aws s3 cp s3://bucketname/foldername/datafile.txt datafile.txt
其中//bucketname/foldername/datafile.txt是S3中数据文件的路径, datafile.txt是EC2实例中文件的名称ย。最后使用终端中的ls命令确认下载成功。
3.2.2、 将数据从EC2发送到S3
要将文件从EC2发送到S3, 我们可以在OSX终端或PuTTY终端中使用以下代码:
sudo aws s3 cp datafile.txt s3://bucketname/foldername/datafile.txt
最后, 用户可以返回S3控制台并检查文件是否已传输。可以在刷新后在S3控制台中查看结果。
4、 蒙特卡洛和统计软件选择
蒙特卡洛方法 , 也称统计模拟方法, 一种以概率统计理论为指导的一类非常重要的数值计算方法。随着电子计算机的发展和科学技术问题的日趋复杂, 它较好地解决了很多高难度和复杂的数学计算问题, 因此在统计物理、核物理、真空技术、系统科学、信息科学、公用事业、地质、医学, 可靠性及计算机科学等广泛的领域都得到成功应用。从理论上来说, 蒙特卡洛方法需要大量的实验。实验次数越多, 所得到的结果越接近于正确值, 利用此方法可以测试出很多的参数, 比如圆周率的值。对于这些简单的统计模拟问题, 目前单机的一般为4核, 可以并行计算提高计算效率并得到想要的精度。但是对于一些复杂的数学问题, 尤其一些优化问题的模拟, 计算过程需要反复迭代、计算, 即使涉及的维数不多, 其计算量也是以亿次为级别单位, 普通的实验室都难以满足其时间和精度要求。而云计算提供了灵活的计算能力和高效的大规模数据处理, 针对蒙特卡洛模拟这样需要大量计算的问题具有不可比拟的优越性和实用价值。
在统计软件选择中, 一般选择像Python, R免费的开源软件, 然而R在数据分析时得分更高的根本原因在于R包的分析库更加广泛。SAS仍然是台式机企业分析的主要语言, 但是, 对于小型企业而言, 它仍然代价高昂, 并且由于每年的许可证不是一次性费用, 因此在成本支出方面具有较大的劣势。由于单人计算机的R被迫处理仅限于RAM大小的数据, 因此云为我们提供了一个快速的解决方案, 利用R处理大数据, 并且云计算通过RStudio可以更加方便地安装、部署和计算。对于大数据而言, 可以在云上直接获得或者通过增加虚拟机上的RAM来获得不同类型的RAM备选方案。
5、 结论
国内在云计算方面起步较晚, 采用云计算进行统计模拟的研究较少, 大多数是计算机方面的学者对云计算的架构进行研究。本文在云计算环境搭建的基础上, 突破传统的单机进行蒙特卡洛模拟的限制, 从以桌面系统为中心向以网络为中心的模式发展, 服务和应用都将以在线的方式提供, 提出以云计算的方式来实现模拟统计。重视云计算在统计模拟中的应用, 结合专业统计工具, 充分发挥云计算技术的优势, 可以使云计算在大数据统计分析上得到广泛和深层次的应用。
参考文献:
[1]OHRI A.Introduction to R for Cloud Computing[M].New York, NY:Springer New York, 2014:1-20.
[2]Gallagher M, Rengifo E W, Trendafilov R.Cloud Computing for MATLAB and R Users[J].Social Science Electronic Publishing, 2017.
[3]Pabitha M, Selvakumar T, Punitha Devi S.An Effective C, C++, PHP, Perl, Ruby, Python Compiler using Cloud Computing[J].International Journal of Computer Applications, 2013, 69 :20-25.