【发布时间】:2018-04-07 14:23:29
【问题描述】:
背景:
我正在尝试将数据从 kafka 导入到 elasticsearch,并且有 2 种客户端。一种是网络客户端,另一种是代理客户端。
Web 客户端会在用户上传时处理 csv 文件,Web 客户端每 10,000 行从 csv 文件中读取一次,并将带有 csv 总行数的数据消息发送给 Producer。 Producer将消息发送给kafka,然后consumer拉取消息,并将数据导入elasticsearch。同时消费者使用数据消息长度和 csv 总计数来更新任务进度,如果有,也会更新错误日志。最后我们的网络客户端会知道错误和导入进度。
Agent 客户端监视日志文件的变化,一旦有新的日志到来,它会向生产者发送消息,与 Web 客户端相同,但它不关心进度。因为日志总是像 nginx 日志一样增长。
框架:
生产者和消费者是我们使用kafka-python的python程序。
问题:
- 有时消费者会崩溃,它会自动重启和 再次重新导入相同的数据。
- 有时客户端发送太多 消息,生产者可能会错过一些,因为 http 请求有 我猜是限制。
问题:
有没有更好的框架来做这些事情?喜欢使用 kafka-connect-elasticsearch ,火花流?
【问题讨论】:
-
你看过 Logstash 吗?生产者和消费者需要执行什么样的工作——仅仅是数据推送,还是一些自定义逻辑?数据使用什么格式?请在问题中添加更多详细信息
-
嗨,Alex,感谢观看,我已经更新了我的问题。而且我之前没有使用过logstash,它适合我描述的那些场景吗?
标签: elasticsearch apache-kafka spark-streaming apache-kafka-connect