有人可以解释MapReduce如何与Cassandra .6合作吗?我已经阅读了“计数”示例,但是我不太遵循卡桑德拉(Cassandra)端与“客户”结尾的情况。

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

例如,假设我正在使用Python和Pycassa,我将如何加载新的地图降低功能,然后调用它?我的地图减少功能是否必须是安装在Cassandra服务器上的Java?如果是这样,我该如何从Pycassa称呼它?

还提到了猪使这一切变得更容易,但是我是一个完整的Hadoop Noob,所以这并没有真正的帮助。

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

有帮助吗?

解决方案

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

如果您正在使用pycassa,我会说您不运气,直到(1)该项目的维护者增加了对MapReduce的支持,或者(2)您将一些python函数放在一起,以编写Java MapReduce程序并运行它。后者绝对有点黑客,但会让您起床。

其他提示

它知道当地; Cassandra InputFormat替代getLocations()以保留数据局部性

使用来自Cassandra的直接输入Format的胜利是,它有效地流式传输了数据,这是一个很大的胜利。每个输入拆分都覆盖了一系列令牌,并在其完整的带宽下从磁盘上滚下来:没有寻求,没有复杂的查询。我认为它不了解局部性 - 让每个任务跟踪器都喜欢从同一节点上的Cassandra过程中的输入分配。

您可以尝试将PIG与流方法用作黑客攻击,直到建立更直接的Hadoop流支持为止。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top