使用AWS与R并行处理

我想通过为每个客户建立一个模型来解决Kaggle Dunnhumby挑战。 我想将数据拆分为10个组,并使用Amazon Web服务(AWS)并行地在十个组上使用R构建模型。 我遇到的一些相关链接是:

  • segue包;
  • 关于使用Amazon的并行Web服务的介绍。
  • 我不明白的是:

  • 我如何获得数据到十个节点?
  • 如何发送和执行节点上的R功能?
  • 如果您能分享一些建议和提示,让我指出正确的方向,我将非常感激。

    PS我在AWS上使用免费的使用账户,但在Amazon Linux AMI上从源代码安装R非常困难(由于缺少头文件,库和其他依赖项导致大量错误)。


    您可以在AWS上手动构建所有内容。 你必须用几个实例构建你自己的亚马逊计算机集群。 在亚马逊网站上有一个很好的教程视频:http://www.youtube.com/watch?v = YfCgK1bmCjw

    但是你需要花几个小时才能完成所有的事情:

  • 启动11个EC2实例(对于每个组一个实例+一个头实例)
  • R和MPI(查看预装的图像)
  • 正确配置MPI(可能会添加安全层)
  • 在最好的情况下,将安装到所有节点的文件服务器(共享数据)
  • 有了这个基础架构,最好的解决方案就是使用snow或foreach包(使用Rmpi)
  • segue包很不错,但你一定会遇到数据通信问题!

    简单的解决方案是cloudnumbers.com(http://www.cloudnumbers.com)。 该平台可让您轻松访问云中的计算机群集。 您可以在云中使用小型计算机集群免费测试5个小时! 查看useR会议的幻灯片:http://cloudnumbers.com/hpc-news-from-the-user2011-conference


    我不确定我可以回答关于使用哪种方法的问题,但我可以解释我将如何思考这个问题。 我是塞格的作者,所以请记住这种偏见:)

    开始试图弄清楚如何让AWS(或任何其他系统)运行之前,我会回答几个问题:

  • 培训数据中有多少客户?
  • 培训数据有多大(您将发送给AWS的内容)?
  • 将一个模型适合一个客户的预期平均运行时间是多少?全部运行?
  • 当您将您的模型适用于一位客户时,会生成多少数据(您将从AWS返回什么内容)?
  • 只是看了一下训练数据,看起来并不大(〜280 MB)。 所以这不是一个真正的“大数据”问题。 如果您的模型需要很长时间才能创建,那么这可能是一个“大CPU”问题,Segue可能会或可能不会成为帮助您解决问题的好工具。

    在回答关于如何将数据导入AWS的具体问题时,Segue通过序列化您提供给emrlapply()命令的列表对象,将序列化对象上传到S3,然后使用Elastic Map Reduce服务对对象进行流式处理通过Hadoop。 但作为Segue的用户,你不需要知道这一点。 你只需要调用emrlapply()并将它传递给你的列表数据(可能是一个列表,其中每个元素是单个购物者数据的矩阵或数据框的列表)和一个函数(你写的一个函数适合你选择的模型)其余的照顾。 但请记住,当你调用emrlapply()时,Segue做的第一件事就是序列化(有时是缓慢的)并将你的数据上传到S3。 因此,根据数据大小和上网速度,这可能会很慢。 我对马库斯的断言提出了一些问题,你肯定会“发现数据通信问题”。 这显然是FUD。 我使用Segue在随机模拟上发送/接收300MB / 1GB的一些规则。 但我倾向于从AWS实例运行这些模拟,所以我正在从一个AWS机架发送和接收到另一个,这使得一切都快得多。

    如果您想对AWS进行一些分析,并在云中使用R,我建议Drew Conway的AMI用于科学计算。 使用他的AMI可以让你不必安装/构建很多东西。 要将数据上传到正在运行的计算机,一旦设置了ssh证书,就可以使用scp将文件上传到您的实例。

    我喜欢在我的Amazon实例上运行RStudio。 这将需要设置密码访问您的实例。 有很多资源可以帮助解决这个问题。

    链接地址: http://www.djcxy.com/p/53419.html

    上一篇: Using AWS for parallel processing with R

    下一篇: How do you copy and paste into Git Bash