2

我们使用 Cassandra 作为我们应用程序的主要数据存储,该应用程序收集大量数据并需要大量存储空间和非常快的写入吞吐量。

我们计划定期提取这些数据并加载到关系数据库(如 mySQL)中。存在哪些提取机制可以扩展到每天数亿条记录?昂贵的第三方 ETL 工具(如 Informatica)不适合我们。到目前为止,我的网络搜索只显示了带有 Pig 或 Hive 作为选项的 Hadoop。然而,作为这个领域的新手,我不确定它们的扩展能力如何,以及它们在运行时会给 Cassandra 集群本身带来多少负载?还有其他选择吗?

4

2 回答 2

1

您应该看一下sqoop,它与 Cassandra 集成,如此处所示

这也很容易扩展,你需要一个 Hadoop 集群才能sqoop工作,它的工作方式基本上是:

  • 将您的数据集分割成不同的分区。
  • 运行一个 Map/Reduce 作业,其中每个映射器将负责传输 1 个切片。

因此,您希望导出的数据集越大,映射器的数量就越多,这意味着如果您不断增加集群,吞吐量将不断增加。这完全取决于你有什么资源。

至于 Cassandra 集群上的负载,我不确定,因为我没有sqoop亲自使用过 Cassandra 连接器,但是如果您想提取数据,无论如何您都需要在集群上增加一些负载。例如,您可以每天在流量最低的某个时间执行一次,这样万一您的 Cassandra 可用性下降,影响就会最小。

我也在想,如果这与您的其他问题有关,您可能需要考虑导出到 Hive 而不是 MySQL,在这种情况下sqoop也可以,因为它可以直接导出到 Hive。一旦它在 Hive 中,您就可以使用与sqoop运行分析作业相同的集群。

于 2013-01-26T01:40:29.803 回答
0

除了支付 etl 工具外,没有办法从 cassandra 中提取数据。我尝试了不同的方法,例如复制命令或 cql 查询——所有方法都会超时,而不管 Cassandra.Yaml 中的超时参数是否更改。Cassandra 专家表示,如果没有“where”子句,您将无法查询数据。这对我来说是很大的限制。这可能是至少对我来说不使用 cassandra 的主要原因之一。

于 2014-04-03T03:38:13.910 回答