这次我们介绍SparkStreaming和flume的整合,flume作为日志实时采集的框架,可以与SparkStreaming实时处理框架进行对接,flume实时产生数据,sparkStreaming做实时处理。
Spark Streaming对接FlumeNG有两种方式,一种是FlumeNG将消息Push推给Spark Streaming,还有一种是Spark Streaming从flume 中Poll拉取数据。
环境准备
-
1.1 安装flume1.6以上
-
1.2 下载依赖包
spark-streaming-flume-sink_2.11-2.0.2.jar放入到flume的lib目录下 -
1.3 修改flume/lib下的scala依赖包版本
从spark安装目录的jars文件夹下找到scala-library-2.11.8.jar 包,替换掉flume的lib目录下自带的scala-library-2.10.1.jar。
1. Poll方式
-
1.1 写flume的agent,注意既然是拉取的方式,那么flume向自己所在的机器上产数据就行
-
1.2编写flume-poll.conf配置文件,放在flume的conf目录下,提前在/root目录下创建data目录
a1.sources = r1
a1.sinks = k1
a1.channels = c1
#source
a1.sources.r1.channels = c1
a1.sources.r1.type = spooldir
a1.sources.r1.spoolDir = /root/data
a1.sources.r1.fileHeader = true
#channel
a1.channels.c1.type =memory
a1.channels.c1.capacity = 20000
a1.channels.c1.transactionCapacity=5000
#sinks
a1.sinks.k1.channel = c1
a1.sinks.k1.type = org.apache.spark.streaming.flume.sink.SparkSink
a1.sinks.k1.hostname=nidel01
a1.sinks.k1.port = 8888
a1.sinks.k1.batchSize