我的客户机要求为部署在集群上的基于rest的后端应用程序服务器处理应用程序(tomcat)服务器日志文件。clint希望从这些具有不同参数的数据中生成“访问”和“频率”报告。
我最初的计划是从app server log获取这些数据-->使用kafka推送到spark streaming并处理这些数据-->将这些数据存储到hive-->使用zeppelin返回那些经过处理和集中的日志数据,并根据客户需求生成报告。
但据我所知,kafka没有任何可以从日志文件中读取数据并将其发布到kafka broker中的功能,在这种情况下,我们编写了一个调度程序作业进程,该进程将不时读取日志并将其发送到kafka broker中,我不喜欢这样做,在这种情况下,它将不是一个实时的,可能会有同步问题,我们不得不担心,因为我们有4个应用服务器示例。
另一个选择,我认为我们在这个例子中是apacheflume。
有谁能告诉我,在这种情况下,哪种方法更好?如果在Kafka,我们有自己的进程从日志文件中读取数据,那么在这两种情况下,我们的特性有哪些优点或缺点?
我猜另一个选择是flume+kakfa一起,但我不能推测会发生什么,因为我几乎没有关于flume的知识。
任何帮助都将不胜感激……—)
谢谢。。。。
1条答案
按热度按时间os8fio9y1#
您可以使用kafka connect(文件源连接器)读取/使用tomcat日志文件并将它们推送到kafka。spark流媒体可以使用Kafka的主题并搅动数据
tomcat->日志--->Kafka连接->Kafka->Spark->Hive