Spark 之SparkStreaming 2 flume streaming

本文假设用户已经安装好spark

FLUME_HOME=/usr/local/flume

# %FLUME_HOME%/conf/flume-env.sh
export JAVA_HOME=/usr/lib/java/jdk1.8.0_60
export JAVA_OPTS="-Xms100m -Xmx2000m -Dcom.sun.management.jmxremote"

# %FLUME_HOME%/conf/flume-conf.properties
# agent1表示代理名称
agent1.sources=source1
agent1.sinks=sink1
agent1.channels=channel1

#配置source1
agent1.sources.source1.type=spooldir
agent1.sources.source1.spoolDir=/usr/local/flume/tmp/TestDir
agent1.sources.source1.channels=channel1
agent1.sources.source1.fileHeader = false
agent1.sources.source1.interceptors = i1
agent1.sources.source1.interceptors.i1.type = timestamp

#配置sink1
#agent1.sinks.sink1.type=hdfs
#agent1.sinks.sink1.hdfs.path=hdfs://master:9000/library/flume
#agent1.sinks.sink1.hdfs.fileType=DataStream
#agent1.sinks.sink1.hdfs.writeFormat=TEXT
#agent1.sinks.sink1.hdfs.rollInterval=1
#agent1.sinks.sink1.channel=channel1
#agent1.sinks.sink1.hdfs.filePrefix=%Y-%m-%d

agent1.sinks.sink1.type=avro
agent1.sinks.sink1.channel=channel1
agent1.sinks.sink1.hostname=master
agent1.sinks.sink1.port=9999

#配置channel1
agent1.channels.channel1.type=file
agent1.channels.channel1.checkpointDir=/usr/local/flume/tmp/checkpointDir
agent1.channels.channel1.dataDirs=/usr/local/flume/tmp/dataDirs

将本次需要用到的jar放到spark-shell所在服务器上。jar见下方启动命令。

启动spark-shell

root@master:/usr/local/spark/spark-1.6.0-bin-hadoop2.6/bin# ./spark-shell --master local[2] \
--jars /usr/local/spark/spark-1.6.0-bin-hadoop2.6/lib/flume-ng-configuration-1.6.0.jar,/usr/local/spark/spark-1.6.0-bin-hadoop2.6/lib/flume-ng-core-1.6.0.jar,/usr/local/spark/spark-1.6.0-bin-hadoop2.6/lib/flume-ng-sdk-1.6.0.jar,/usr/local/spark/spark-1.6.0-bin-hadoop2.6/lib/spark-streaming-flume-sink_2.10-1.6.0.jar,/usr/local/spark/spark-1.6.0-bin-hadoop2.6/lib/spark-streaming-flume_2.10-1.6.0.jar

编写具体代码

// 编写具体代码
import org.apache.spark.streaming.flume.FlumeUtils
import org.apache.spark.streaming.{Durations, StreamingContext}
val ssc = new StreamingContext(sc, Durations.seconds(5))
FlumeUtils.createStream(ssc, "master", 9999).flatMap(sfe => new String(sfe.event.getBody.array).split(" ")).map((_, 1)).reduceByKey(_ + _).print
ssc.start

启动flume

root@master:/usr/local/flume/bin# ./flume-ng agent -n agent1 -c conf -f ../conf/flume-conf.properties -Dflume.root.logger=DEBUG,console

在agent1.sources.source1.spoolDir 配置的 /usr/local/flume/tmp/TestDir文件夹下 放入一个文件《1 2 3.COMPLETED》,内容是1 2 3

Spark 之SparkStreaming 2 flume streaming_第1张图片

flume有反应,spark-streaming有处理。


感谢王家林老师的知识分享

王家林老师名片:

中国Spark第一人


新浪微博:http://weibo.com/ilovepains

微信公众号:DT_Spark

博客:http://blog.sina.com.cn/ilovepains

手机:18610086859

QQ:1740415547

邮箱:[email protected]

YY课堂:每天20:00现场授课频道68917580

王家林:DT大数据梦工厂创始人、Spark亚太研究院院长和首席专家、大数据培训专家、大数据架构师。

Spark、Flink、Docker、Android技术中国区布道师。
国内最早一批从事Android、Hadoop、Spark、Docker的研究者,在Spark、Hadoop、Android、Docker等方面有丰富的源码、实务和性能优化经验。是该领域的知名咨询顾问、培训专家;
Spark最佳畅销书《大数据spark企业级实战》和《Spark大数据实例开发教程》作者;
Android移动互联网兴起以来,近10本的IT畅销书作者;
为大量企业进行技术培训和服务,包括:

三星、惠普、爱立信、摩托罗拉、索尼、华为、夏普、南方航空公司、中国国际航空公司、金立、海信、长虹、英特尔、阿尔法特、中国联通、华三、AIA、亿迅、中国电信、网龙、福赛、中国人寿、阳光保险、兴业银行等。 

找我报名有会员价哦。


你可能感兴趣的:(Spark 之SparkStreaming 2 flume streaming)