官网地址: Flume Integration Guide
1、Spark Streaming 2.3.1适配 Flume 1.6.0,在Spark Streaming 2.3.0之后对flume的支持已被标记为过时。主要由于flume直接对接Spark Streaming 会造成Spark Streaming压力过大,特别是高峰期的时候(在之间加一层消息队列会好得多)。但由于很多公司可能仍然在用,故简单做一下介绍。
2、有两种方式可以让Spark Streaming集成Flume并从Flume接受数据。以下分别介绍这两种方式。
一、基于Flume的Push模式(Flume-style Push-based Approach)
这种方式Spark Streaming会建立一个Receiver,这个Receiver起到一个相当于Flume的Avro Agent的作用,Flume可以将数据推送到这个Receiver。以下是详细的配置步骤。
1、一般要求
在你的集群中选择一台机器,这台机器需要满足一下条件:
A.当Spark Streaming+Flume的应用程序运行时,有一个Spark的Worker节点运行在这台机器上。
B.Flume通过配置后可以将数据推送到这台机器的端口上。
2、配置Flume
通过以下的配置文件可以将数据发送到Avro Sink。
agent.sinks = avroSink
agent.sinks.avroSink.type = avro
agent.sinks.avroSink.channel = memoryChannel
agent.sinks.avroSink.hostname = <所选机器的IP>
agent.sinks.avroSink.port = <所选机器的端口>
3、配置Spark Streaming应用程序
A.添加依赖
<dependency>
<groupId>org.apache.spark </groupId>