代码之家  ›  专栏  ›  技术社区  ›  Chris

是否可以使用.NET为Amazon Elastic MapReduce编写map/reduce作业?

  •  13
  • Chris  · 技术社区  · 15 年前

    是否可以为Amazon弹性MapReduce编写map/reduce作业( http://aws.amazon.com/elasticmapreduce/ )使用.NET语言?特别是我想使用C#。

    初步研究表明并非如此。上面URL的营销文本表明,您可以“选择Java、Ruby、Perl、Python、PHP、R或C++”,而不必提及.NET语言。这条亚马逊线( http://developer.amazonwebservices.com/connect/thread.jspa?messageID=136051 --“对C#/F#map/reducer的支持”)明确表示“目前Amazon Elastic MapReduce不支持单平台或C#或F#等语言。”

    上述情况表明,这是不可能做到的。不过,我想知道是否有解决办法。例如,我可以为我的帐户修改Elastic MapReduce机器映像,并在上面安装Mono吗?

    http://docs.amazonwebservices.com/ElasticMapReduce/latest/DeveloperGuide/index.html?CHAP_AdvancedTopics.html http://docs.amazonwebservices.com/ElasticMapReduce/latest/DeveloperGuide/index.html?addl_files.html ),是使Map/Reduce作业的第一步是在本地实例上安装Mono。这听起来有点低效,但也许能奏效?

    也许更明智的选择是放弃弹性MapReduce的便利性,在EC2上手动设置我自己的Hadoop集群。那么我想我可以毫不费力地安装Mono。

    4 回复  |  直到 15 年前
        1
  •  5
  •   Teun D    15 年前

    使用Hadoop流式处理并使用提前编译器将C#代码编译为本机代码可能是一个可行的解决方案(检查: http://www.mono-project.com/AOT 我猜,二进制可以像C++程序那样从S3中运行。

        2
  •  3
  •   Amund Tveit    14 年前

    是的,可以像前面的回答者所建议的那样使用引导操作。

    博客帖子- http://atbrox.com/2011/02/07/an-example-of-using-f-and-c-netmono-with-amazons-elastic-mapreduce-hadoop/ -描述了使用mono的C#映射器和F#还原器

        3
  •  2
  •   Chris    15 年前

    Elastic MapReduce现在有一个“引导动作”功能,Amazon目前对该功能的解释如下:

    引导操作是一种允许您在弹性MapReduce实例上运行脚本的机制 在Hadoop启动之前。引导操作脚本存储在AmazonS3中并传递给Amazon 创建新作业流时使用弹性MapReduce。引导操作脚本可从下载 在执行作业流之前,在每个实例上执行amazons3。

    引导操作脚本可以用作业流中已安装的任何语言编写 实例,包括Ruby、Python、Perl和bash。

    (见 http://docs.amazonwebservices.com/ElasticMapReduce/latest/DeveloperGuide/index.html?introduction.html )

    一个建议的用法是在集群计算机上安装软件。您可以使用它在集群计算机上安装.NET运行时环境(可能是Mono而不是Microsoft的,因为我认为所有的Elastic MapReduce计算机都运行Linux)。(不确定无人参与安装有多困难。有什么想法吗?)完成后,您可以使用Hadoop流调用.NET映射程序/还原程序,而Elastic MapReduce似乎支持Hadoop流。

        4
  •  0
  •   Reed Copsey    15 年前

    您应该能够使用 VB.NET library 来自任何.NET语言,包括C#。