我正在使用Cassandra来存储我的数据,并且正在使用 hive 来处理我的数据。
我有5台机器设置了cassandra,还有2台机器用作分析节点(运行配置单元)
所以我想问的是,Hive是否仅在两台机器(分析节点)上进行 map 缩减并将数据带到那里,还是将流程/计算也移到5个cassandra节点上并在这些机器上处理/计算数据?(我知道的是在Hadoop中,流程移至数据而不是数据进行处理)。
最佳答案
如果您有兴趣将Hadoop和Cassandra结合使用,则第一个链接应该是基于这个概念建立的DataStax公司。 http://www.datastax.com/
他们用HDFS代替cassandra来构建并支持hadoop。
据我所知-它们确实具有数据局部性:http://blog.octo.com/en/introduction-to-datastax-brisk-an-hadoop-and-cassandra-distribution/
如果您对cassandra运行MapReduce,则有关Hadoop和Cassandra数据局部性的答案很好。
Cassandra and MapReduce - minimal setup requirements
关于您的问题-有一个折衷方案:
a)如果在单独的节点上运行Hadoop/Hive,则会失去数据局部性,因此数据吞吐量受网络带宽的限制。
b)如果您在与cassandra运行相同的节点上运行hadoop/Hive-您可以获得数据局部性,但是在hive查询后面进行MapReduce处理可能会阻塞您的网络(和其他资源),从而影响cassandra的服务质量。
我的建议是,如果您的cassandra群集的性能至关重要,则应具有单独的配置单元节点。
如果您的cassandra主要用作数据存储,并且不处理实时请求-那么在每个节点上运行配置单元将提高性能和硬件利用率。
关于cassandra数据库上的Hadoop,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/14827693/