15

有人可以解释 MapReduce 如何与 Cassandra .6 一起工作吗?我已经阅读了字数统计示例,但我不太了解 Cassandra 端与“客户端”端发生的情况。

https://svn.apache.org/repos/asf/cassandra/trunk/contrib/word_count/

例如,假设我正在使用 Python 和 Pycassa,我将如何加载一个新的 map reduce 函数,然后调用它?我的 map reduce 功能必须是安装在 cassandra 服务器上的 java 吗?如果是这样,我如何从 Pycassa 调用它?

还有人提到 Pig 让这一切变得更容易,但我是一个完整的 Hadoop 菜鸟,所以这并没有真正帮助。

您的答案可以使用 Thrift 或其他任何东西,我刚刚提到 Pycassa 来表示客户端。我只是想了解 Cassandra 集群中运行的内容与发出请求的实际服务器之间的区别。

4

3 回答 3

10

根据我所听到的(以及从这里),开发人员编写使用 Cassandra 作为数据源的 MapReduce 程序的方式如下。您编写了一个常规的 MapReduce 程序(您链接到的示例是纯 Java 版本)并且现在可用的 jar 提供了一个 CustomInputFormat,它允许输入源是 Cassandra(而不是默认的 Hadoop)。

如果您使用的是 Pycassa,我会说您很不走运,直到 (1) 该项目的维护者添加对 MapReduce 的支持或 (2) 您将一些 Python 函数放在一起编写 Java MapReduce 程序并运行它. 后者绝对是一个小技巧,但会让你振作起来。

于 2010-04-29T00:52:38.803 回答
2

It Knows about the locality ; The Cassandra InputFormat overrides getLocations() to preserve data locality

于 2010-08-21T01:40:23.247 回答
1

使用 cassandra 的直接 InputFormat 的胜利在于它可以有效地流式传输数据,这是一个非常大的胜利。每个输入拆分都覆盖了一系列令牌,并以其全部带宽从磁盘上滚下来:没有搜索,没有复杂的查询。我认为它不知道局部性——让每个 tasktracker 更喜欢来自同一节点上的 cassandra 进程的输入拆分。

您可以尝试将 Pig 与 STREAM 方法一起用作 hack,直到更直接的 hadoop 流支持到位。

于 2010-06-13T19:53:20.777 回答