我将页面访问和搜索查询(某种点击流分析)记录到kafka。我打算定期批处理它们,比如每小时或每天,然后将聚合结果写入elasticsearch。
如果不是写入kafka,而是写入文件系统,则可以很容易地配置记录器写入文件名中有时间戳的文件,自动按照小时/天间隔划分日志。
但对于kafka,我搜索了足够多的时间,还没有找到任何每小时/每天创建一个新主题的例子。如果不是每小时/每天创建一个新主题,我只能想象通过logstash/flume将日志从kafka移动到文件系统或hdfs。
在kafka上直接进行批量处理(按小时/天)的情况很少吗?
发布于 2017-07-21 10:35:59
Kafka是由LinkedIn开发的,它在LinkedIn中的角色是日志聚合中心。因此,Kafka非常适合处理这类问题。
我认为每个事件(事件就像页面访问或查询)都应该在你的web服务器上标记一个时间戳,而不是在日志发送到Kafka的时候。更具体地说,当页面访问事件发生时,它实际上向您的web服务器发出请求,然后您的web服务器处理该请求并返回响应。同时,您的web服务器应使用时间戳记录此事件,并且此时间戳是该事件的唯一正确时间点。关于如何记录事件?您可以创建log_producer将特定主题的日志消息发送到您的Kafka,而不仅仅是将其记录在本地文件中。
关于每小时批处理日志,你可以创建24个分区,并将日志“小时”作为分区键,那么如果你进行批处理,如果你想处理的小时是H,你只需要拉取分区H的日志。因为您只需要处理最新的H小时日志,所以旧的H'log已经被旧的进程工作处理并保存。
https://stackoverflow.com/questions/45205021
复制相似问题