用于将日志文件加载到 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 的堆栈的主要内容,如果未能解决你的问题,请参考以下文章

将节点添加到 Cassandra 集群会导致现有节点上的 CPU 过载

Cassandra CommitLog目录忘记删除文件

如何将 cassandra 提交日志中的数据转换为可读格式

用于日志文件聚合的 Logstash 与 Rsyslog

基于弹性堆栈(ELK堆栈)的日志分析存储及展示

将堆栈和堆内存转储到文件,然后将其加载回 RAM?