10

我正在使用 Cassandra 来存储我的数据并使用 hive 来处理我的数据。我有 5 台机器,我在其上设置了 cassandra,2 台机器用作分析节点(运行 hive 的地方)所以我想问一下 hive 是否只在两台机器(分析节点)上进行 map reduce 并将数据带到那里或它移动处理/计算到 5 个 cassandra 节点以及处理/计算这些机器上的数据。(我知道在 hadoop 中,进程移动到数据而不是要处理的数据)。

4

1 回答 1

18

如果你有兴趣将 Hadoop 和 Cassandra 结合起来——第一个链接应该是围绕这个概念构建的 DataStax 公司。http://www.datastax.com/ 他们用 cassandra 代替 HDFS 构建并支持 hadoop。据我所知 - 他们确实有数据局部性:http ://blog.octo.com/en/introduction-to-datastax-brisk-an-hadoop-and-cassandra-distribution/

如果您针对 cassandra Cassandra 和 MapReduce 运行 MapReduce,那么关于 Hadoop 和 Cassandra 数据局部性有一个很好的答案 - 最低设置要求

关于您的问题 - 有一个权衡:a)如果您在单独的节点上运行 Hadoop / Hive,您会失去数据局部性,并且您的数据吞吐量受到网络带宽的限制。
b)如果您在与 cassandra 运行相同的节点上运行 hadoop / Hive - 您可以获得数据局部性,但 Hive 查询背后的 MapReduce 处理可能会阻塞您的网络(和其他资源),从而影响您从 cassandra 获得的服务质量。

如果您的 cassandra 集群的性能至关重要,我的建议是使用单独的配置单元节点。
如果您的 cassandra 主要用作数据存储并且不处理实时请求 - 那么在每个节点上运行 hive 将提高性能和硬件利用率。

于 2013-02-12T08:52:10.580 回答