每小时或每天都有卡夫卡话题是否典型?

时间:2017-07-20 04:09:09

标签: apache-kafka batch-processing

我正在将页面访问和搜索查询(某种点击流分析)记录到kafka。我打算定期批量处理它们,比如每小时或每天,然后将汇总结果写入elasticsearch。

如果没有写入kafka,而是写入文件系统,则很容易将记录器配置为写入文件名中带有时间戳的文件,该文件根据小时/天间隔自动分隔日志。

但是对于卡夫卡,我搜索了足够的时间,还没有找到每小时/每天创建新主题的任何示例。如果不按小时/天创建新主题,我只能想象通过logstash / flume将日志从kafka移动到文件系统或hdfs。

是否很少直接在kafka上进行批处理(每小时/每天)?

1 个答案:

答案 0 :(得分:1)

Kafka是由LinkedIn开发的,它在LinkedIn中的角色是日志聚合中心。所以卡夫卡非常适合处理这类问题。

我认为每个事件(事件就像页面访问或查询)都应该在Web服务器中标记时间戳,而不是在日志发送到Kafka时。更具体地说,当页面访问事件发生时,它实际上向您的Web服务器发出请求,然后您的Web服务器处理此请求并返回响应。同时,您的Web服务器应该使用时间戳记录此事件,并且此时间戳是该事件的唯一正确时间点。关于如何记录事件?您可以创建一个log_producer来将日志消息发送到Kafka的特定主题,而不仅仅是将其记录在本地文件中。

关于批处理每小时的日志,您可以创建24个分区并将日志“HOUR”作为分区键,然后如果您执行批处理,则只需要拉出分区H的日志(如果您需要的小时)处理是H.因为您只需要处理最新的H小时日志,所以旧的H'log已经过旧处理工作的处理和保存。