卡桑德拉数据库上的Hadoop

10

我正在使用Cassandra存储我的数据,使用Hive处理我的数据。 我有5台机器设置了Cassandra,另外2台机器用作分析节点(其中运行Hive) 因此,我想问的是,Hive是否只在两台机器上(分析节点)进行map reduce,并将数据带到那里,还是它也将过程/计算移动到另外5个Cassandra节点上,并在这些机器上处理/计算数据? (据我所知,在Hadoop中,处理会移到数据而不是数据移到处理上).

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上运行MapReduce,关于Hadoop和Cassandra数据本地性的答案很好:Cassandra and MapReduce - minimal setup requirements
关于你的问题,有一个权衡: a) 如果在不同节点上运行Hadoop/Hive,则会失去数据局部性,因此你的数据吞吐量受网络带宽限制。 b) 如果在与Cassandra相同的节点上运行Hadoop/Hive,则可以获得数据局部性,但是在Hive查询后台的MapReduce处理可能会拥塞你的网络(和其他资源),从而影响来自Cassandra的服务质量。
我的建议是:如果你的Cassandra集群的性能很重要,则应该使用单独的Hive节点。 如果你的Cassandra主要用作数据存储,并且不处理实时请求,则在每个节点上运行Hive将提高性能和硬件利用率。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接