我正在研究 BI 流程,该流程将从 cassandra 读取数据,使用 Map Reduce 创建摘要并写回不同的键空间。
从单个节点开始,一切都按我的预期工作,但是当移动到多节点时,我不确定我是否完全理解拓扑和配置。
我有一个带有 3 个节点的设置。每个都有一个 Cassandra 节点(版本 1.1.9)、数据节点和任务跟踪器(版本 0.20.2+923.421-CDH3U5)。NameNode 和作业跟踪器位于不同的服务器上。此时我正在尝试从 DataNode 服务器运行 Pig 脚本。
我不确定的是猪参数 PIG_INITIAL_ADDRESS。我假设查询将在所有 Cassandra 节点上运行,每个任务跟踪器只会查询本地 Cassandra 节点,而减速器将处理任何重复项。基于这个假设,我认为 PIG_INITIAL_ADDRESS 应该是 localhost。但是在运行 pig 脚本时它失败了:
java.io.IOException: 无法连接到服务器 localhost:9160
我的问题是 - 初始地址是否应该是 Cassandra 节点中的任何一个,并且在集群上拆分地图是从 Cassandra 密钥分区完成的(我会得到我需要的分布)吗?如果我在哪里使用 java map reduce,我还需要提供初始地址吗?当前的实现是否假设 pig 是从 Cassandra 节点运行的?