我们使用Cassandra作为我们应用程序的主要数据存储,它收集大量数据并需要大量存储和非常快的写入吞吐量。
我们计划定期提取这些数据并加载到关系数据库(如mySQL)中。有哪些提取机制可以扩展到每天数以亿计的记录?像Informatica这样的昂贵的第三方ETL工具对我们来说不是一个选择。 到目前为止,我的网络搜索只显示了带有Pig或Hive的Hadoop作为选项。然而,对于这个领域来说,这是一个非常新的东西,我不确定它们的扩展程度以及它们在运行时会对Cassandra集群本身施加多少负载?还有其他选择吗?
答案 0 :(得分:1)
您应该查看sqoop
,它与Cassandra集成,如here所示。
这也可以轻松扩展,您需要一个Hadoop集群才能使sqoop
正常工作,它的工作方式基本上是:
因此,您希望导出的数据集越大,映射器的数量就越多,这意味着如果不断增加群集,吞吐量将不断增加。这都是你拥有什么资源的问题。
就Cassandra集群的负载而言,我不确定,因为我没有亲自使用带有sqoop
的Cassandra连接器,但是如果你想提取数据,则需要在集群上加载一些负载无论如何。例如,您可以在流量最低的特定时间每天进行一次,以便在您的Cassandra可用性下降时,影响很小。
我也在想如果这与your other question有关,你可能会考虑导出到Hive而不是MySQL,在这种情况下sqoop
也可以,因为它可以直接导出到Hive。一旦它在Hive中,您就可以使用sqoop
使用的相同群集来运行分析工作。
答案 1 :(得分:0)
除了支付etl工具之外,没有办法从cassandra中提取数据。我尝试了不同的方式,如复制命令或cql查询 - 无论在Cassandra.Yaml中更改超时参数,所有方法都会超时。 Cassandra专家表示,如果没有'其中'条款。这对我来说是一个很大的限制。这可能是至少对我不使用cassandra的主要原因之一。