用于将日志文件加载到 cassandra 的堆栈
Posted
技术标签:
【中文标题】用于将日志文件加载到 cassandra 的堆栈【英文标题】:stack for loading log files into cassandra 【发布时间】:2012-05-25 16:25:40 【问题描述】:我想定期(每小时)将我的应用程序日志加载到 Cassandra 中,以便使用 pig 进行分析。
这通常是如何完成的?有没有专注于此的项目?
我看到mumakil 通常用于批量加载数据。我可以编写一个围绕它构建的 cron 作业,但我希望能得到比我准备的作业更强大的东西。
如果需要的话,我也愿意修改应用程序以另一种格式存储数据(如 syslog 或直接存储到 Cassandra)。虽然在这种情况下,如果 Cassandra 不可用,我会担心数据丢失。
【问题讨论】:
【参考方案1】:如果您打算使用 Flume,则需要编写一个自定义的 Flume 接收器(不难)。你可以在https://github.com/geminitech/logprocessing上建模。
如果您想使用 Pig,我同意另一张海报,您应该使用 HDFS(或 S3)。 Hadoop 旨在与块巨大的块存储一起工作。这可以防止您因执行大量磁盘查找和网络 IO 而获得糟糕的 IO 性能。虽然您可以将 Pig 与 Cassandra 一起使用,但您会遇到 Cassandra 数据模型的问题,并且性能会更差。
但是,如果您真的想使用 Cassandra 并且您对 Flume 没有死心,我建议您使用 Kafka 和 Storm。
我使用 Storm 将日志文件加载到 Cassandra 的工作流程是:
-
Kafka 收集日志(例如使用 log4j 附加程序)
日志使用storm-kafka进入storm集群
使用自定义 Storm bolts 解析日志行并将其插入 Cassandra(编写 Storm bolts 非常容易)。还有一个 Storm-cassandra 螺栓已经可用。
【讨论】:
【参考方案2】:您应该考虑使用 Flume 将它们加载到 HDFS 中,因为这些项目就是为此目的而设计的。然后,您可以直接对您的非结构化/半结构化日志数据使用 Pig。
【讨论】:
以上是关于用于将日志文件加载到 cassandra 的堆栈的主要内容,如果未能解决你的问题,请参考以下文章