在多节点Cassandra集群上运行猪

时间:2013-02-17 21:25:48

标签: hadoop cassandra apache-pig

我正在开发BI流程,它将从cassandra读取数据,使用Map Reduce创建摘要并写回不同的密钥空间。

从单个节点开始,一切都按预期工作,但是当移动到多节点时,我不确定我是否完全理解拓扑和配置。

我有3个节点的设置。每个都有一个Cassandra节点(版本1.1.9),数据节点和任务跟踪器(版本0.20.2 + 923.421-CDH3U5)。 NameNode和作业跟踪器位于不同的服务器上。此时我正在尝试从DataNode服务器运行Pig脚本。

我不确定的是猪参数PIG_INITIAL_ADDRESS。我假设查询将在所有Cassandra节点上运行,每个任务跟踪器只会查询本地Cassandra节点,而reducer将处理任何重复项。根据这个假设,我认为PIG_INITIAL_ADDRESS应该是localhost。但是当运行猪脚本时它失败了:

  

java.io.IOException:无法连接到服务器localhost:9160

我的问题是 - 初始地址应该是Cassandra节点中的任何一个,并且在群集上拆分地图是从Cassandra密钥分区完成的(我会得到我需要的分发)吗? 如果我在哪里使用java map reduce,我还需要提供初始地址吗? 当前的实现假设pig是从Cassandra节点运行的吗?

1 个答案:

答案 0 :(得分:1)

PIG_INITIAL_ADDRESS是您环中某个Cassandra节点的地址。为了让Hadoop作业从Cassandra读取数据或向Cassandra写入数据,只需要设置一些属性即可。这些属性也可以在作业属性中设置,也可以在运行作业的服务器上的默认Hadoop配置中设置。除此之外,它就像向求职者提交工作一样。

有关更多信息,我会查看在examples / pig下的cassandra源代码下载的自述文件。那里也有很多解释。