场景
希望对应用产生的某类型的日志数据,进行实时分析。日志数据以文件形式保存在服务器磁盘中,每一行为一个事件: , 形式。
方案
使用Filebeat转发数据到Kafka,将Kafka作为输入数据流,由Spark Streaming进行计算。Filebeat是轻量级的代理,非常简单易用,支持多种安装方式。Kafka是一个消息队列,也是一个流处理平台。这里作为一个消息队列(负责分发和储存)。Spark Streaming负责处理流数据
实践
资源准备
Filebeat 6.3.2
Kafka 0.10
Spark 2.4
Scala 2.11
CentOS 7.4 64位
安装&配置Kafka
启动Zookeeper Server:
启动Kafka Server:
创建Topic:
安装&配置Filebeat
版本6.3.2 下载地址直接多种安装方式,这里使用命令行启动。修改配置文件:( )
启动Filebeat,开始日志收集、转发。
日志内容
从Filebeat中转发到Kafka日志内容会增加一些信息:
每一行日志内容为 字段。
Spark 代码
调试运行,结果正确后,打包,在Spark集群中运行。
总结
入门学习 Spark Structured Streaming,里面要掌握的知识还是很多的,包括对 Scala、Kafka、Spark DataFrame/Dataset 操作等。继续加油!
参考资料
Real-time Streaming ETL with Structured Streaming in Apache Spark 2.1
Structured Streaming Programming Guide
领取专属 10元无门槛券
私享最新 技术干货