5

我即将开始一个将在 AWS 上运行的 mapreduce 项目,我可以选择使用 Java 或 C++。

我知道用 Java 编写项目会为我提供更多功能,但是 C++ 也可以通过 Hadoop Streaming 实现它。

请注意,我对这两种语言都没有多少背景。一个类似的项目已经用 C++ 完成,代码可供我使用。

所以我的问题是:这个额外的功能是通过 AWS 提供的,还是只有在你对云有更多控制权的情况下才相关?为了做出决定,我还有什么需要记住的,比如 hadoop 插件的可用性,可以更好地使用一种语言或另一种语言?

提前致谢

4

3 回答 3

6

您有几个选项可以在 AWS 上运行 Hadoop。最简单的方法是通过他们的 Elastic MapReduce 服务运行您的 MapReduce 作业:http: //aws.amazon.com/elasticmapreduce。您还可以在 EC2 上运行 Hadoop 集群,如http://archive.cloudera.com/docs/ec2.html中所述。

如果您怀疑需要编写自己的输入/输出格式、分区器和组合器,我建议您使用 Java 和后一种系统。如果您的工作相对简单,并且您不打算将 Hadoop 集群用于任何其他目的,我建议您选择最适合您的语言并使用 EMR。

不管怎样,祝你好运!

披露:我是 Cloudera 的创始人。

问候,杰夫

于 2010-01-06T02:08:29.700 回答
1

我认为 Java 的灵活性比处理将当前代码从 C++ 调整为 Java 可能存在的缺点更重要。

感谢您的所有回答。

于 2010-01-06T18:28:50.787 回答
0

这取决于您的需求。你的输入/输出是什么?它是一个简单的文本文件吗?带有新行分隔符的记录?你需要一个特殊的组合器吗?分区器?

我的意思是,如果您只需要 hadoop 基础知识,那么流式传输就可以了。但是如果你需要更复杂一点(来自hadoop框架,而不是来自你自己的业务逻辑),hadoop jar 会更灵活。

萨吉

于 2009-12-31T14:19:37.583 回答