3

我想定期(每小时)将我的应用程序日志加载到 Cassandra 中,以便使用 pig 进行分析。

这通常是如何完成的?有没有专注于此的项目?

我看到mumakil通常用于批量加载数据。我可以编写一个围绕它构建的 cron 作业,但希望能写出比我准备的作业更强大的东西。

如果可以的话,我也愿意修改应用程序以另一种格式存储数据(如系统日志或直接存储到 Cassandra)。虽然在那种情况下,如果 Cassandra 不可用,我会担心数据丢失。

4

2 回答 2

1

如果您打算使用 Flume,则需要编写一个自定义的 Flume 接收器(不难)。您可以在https://github.com/geminitech/logprocessing上对其进行建模。

如果您想使用 Pig,我同意您应该使用 HDFS(或 S3)的另一张海报。Hadoop 旨在与块巨大的块存储一起工作。这可以防止您因执行大量磁盘查找和网络 IO 而获得糟糕的 IO 性能。虽然您可以将 Pig 与 Cassandra 一起使用,但您会遇到 Cassandra 数据模型的问题,并且性能会差很多。

但是,如果您真的想使用 Cassandra 并且您对 Flume 没有死心,我建议您使用 Kafka 和 Storm。

我使用 Storm 将日志文件加载到 Cassandra 的工作流程是:

  1. Kafka 收集日志(例如使用 log4j appender)
  2. 日志使用storm-kafka进入storm集群
  3. 使用自定义 Storm bolts 解析日志行并将其插入 Cassandra(编写 Storm bolts 非常容易)。还有一个 Storm-cassandra 螺栓已经可用。
于 2012-06-22T20:38:51.713 回答
0

您应该考虑使用Flume将它们加载到 HDFS 中,因为这些项目就是为此目的而设计的。然后,您可以直接对您的非结构化/半结构化日志数据使用 Pig。

于 2012-05-27T13:40:28.750 回答