我正在建立一个广告跟踪系统,我需要在其中存储和分析访问日志。为此,我正在使用图像像素。要跟踪的参数将通过 HTTP Get 参数发送。对像素的任何调用都将包含我需要存储和分析的参数,例如 IP、用户 ID 和时间戳。
哪一种工作流程会更好?1. 使用 apache 日志记录。设置一个流程以在一个公共位置(HDFS?)收集日志并进行分析。2. 将每个日志条目存储到数据存储中(Cassandra?)。分析。
从以前做过这件事的人那里知道这两种方法的优缺点会很好。
问候,
我正在建立一个广告跟踪系统,我需要在其中存储和分析访问日志。为此,我正在使用图像像素。要跟踪的参数将通过 HTTP Get 参数发送。对像素的任何调用都将包含我需要存储和分析的参数,例如 IP、用户 ID 和时间戳。
哪一种工作流程会更好?1. 使用 apache 日志记录。设置一个流程以在一个公共位置(HDFS?)收集日志并进行分析。2. 将每个日志条目存储到数据存储中(Cassandra?)。分析。
从以前做过这件事的人那里知道这两种方法的优缺点会很好。
问候,
这取决于你的主要动机是什么。
如果动机是尽快从该请求返回,那么您最好的选择就是记录该请求并继续在后台进行分析。如果您在负载均衡器后面有许多机器,那么您可能希望像我们所做的那样设置集中式日志记录,并在我如何设置 PHP 日志记录以转到远程服务器?. 将日志放在一个位置后,您可以选择将其重新填充到您选择的存储中。此实现还可以扩展为将日志写入多个位置,以防万一您希望避免单点故障。
如果动机是将其移动到您的永久数据存储并实时处理它,那么日志记录是多余的,您可以专注于任一数据存储。@poohdedoo 应该可以正常工作。
我认为 cassandra 和 HDFS 的结合可以解决问题。我做了一个类似的实现,我将每日日志发送到 Cassandra,然后我编写了一个 map reduce 作业来分析这些日志并将其发送到每天结束的 HDFS 文件系统。因此,在给定时间内,您可以通过访问 cassandra 集群获取最新日志,并使用 HDFS 获取旧存档数据。
我在下面的文章[1]中进一步解释了架构
[1] - http://sparkletechthoughts.blogspot.com/2012/09/how-distributed-logging-works-in-wso2.html
根据这个实现,实时日志取自 cassandra,长期归档日志取自 HDFS 文件系统