13

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

初步研究表明不是。上述 URL 的营销文本建议您“选择 Java、Ruby、Perl、Python、PHP、R 或 C++”,但未提及 .NET 语言。这个亚马逊线程(http://developer.amazonwebservices.com/connect/thread.jspa?messageID=136051 --“支持 C#/F# map/reducers”)明确表示“目前亚马逊弹性 MapReduce 不支持 Mono 平台或C# 或 F# 等语言。”

以上说明是做不到的。不过,我想知道是否有任何解决方法。例如,我可以为我的帐户修改 Elastic MapReduce 机器映像,并在其中安装 Mono 吗?

亚马逊常见问题解答“使用您的 Jar 所需的其他软件”(http://docs.amazonwebservices.com/ElasticMapReduce/latest/DeveloperGuide/index.html?CHAP_AdvancedTopics.html)和“如何使用其他文件和库”建议的替代方案使用 Mapper 或 Reducer”(http://docs.amazonwebservices.com/ElasticMapReduce/latest/DeveloperGuide/index.html?addl_files.html),是使 Map/Reduce 工作的第一步是在本地实例。这听起来有点低效,但也许它可以工作?

也许更明智的选择是尝试放弃 Elastic MapReduce 的便利性,并在 EC2 上手动设置我自己的 Hadoop 集群。然后我假设我可以毫无困难地安装 Mono。

4

4 回答 4

5

使用 Hadoop 流式传输并使用 Ahead Of Time 编译器将 C# 代码编译为本机代码可能会有一种可能的解决方法(检查:http ://www.mono-project.com/AOT )。我猜这个二进制文件可以像 C++ 程序一样从 S3 运行。

Reed Copsey 的回答是不正确的。VB.NET 库用于创建作业、启动和停止它们,但与实际在 Hadoop 作业中运行的代码无关。

于 2010-03-26T18:48:01.723 回答
3

是的,可以像以前的回答者建议的那样使用 Bootstrap 操作。

博客帖子 - http://atbrox.com/2011/02/07/an-example-of-using-f-and-c-netmono-with-amazons-elastic-mapreduce-hadoop/ - 描述了拥有一个 C# 映射器和一个带有单声道的 F# 减速器

于 2011-02-06T23:23:21.210 回答
2

Elastic MapReduce 现在有一个“引导操作”功能,亚马逊目前解释如下:

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

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

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

建议的一种用途是在集群机器上安装软件。您可能会使用它在集群机器上安装 .NET 运行时环境(可能是 Mono 而不是 Microsoft,因为我想所有 Elastic MapReduce 机器都在运行 Linux)。(不确定无人值守安装有多难。有什么想法吗?)这样做后,您可以使用 Elastic MapReduce 似乎支持的 Hadoop 流调用您的 .NET 映射器/缩减器。

于 2010-04-14T15:49:57.643 回答
0

您应该能够从任何 .NET 语言(包括 C#)使用VB.NET 库。

于 2009-07-27T20:54:16.820 回答