千家信息网

Flume结合Spark测试

发表于:2026-11-02 作者:千家信息网编辑
千家信息网最后更新 2026年11月02日,近日,在测试Flume结合Kafka结合Spark Streaming的实验。今天把Flume与Spark的简单结合做出来了,这里记录一下,避免网友走弯路。有不周到的地方还希望路过的大神多多指教。实验
千家信息网最后更新 2026年11月02日Flume结合Spark测试

近日,在测试Flume结合Kafka结合Spark Streaming的实验。今天把Flume与Spark的简单结合做出来了,这里记录一下,避免网友走弯路。有不周到的地方还希望路过的大神多多指教。


实验比较简单,分为两部分:一、使用avro-client发送数据 二、使用netcat发送数据

首先Spark程序需要Flume的两个jar包:

flume-ng-sdk-1.4.0、spark-streaming-flume_2.11-1.2.0


一、使用avro-client发送数据

1、 编写Spark程序,该程序的功能是接收Flume事件


import org.apache.log4j.{Level, Logger}

import org.apache.spark.SparkConf

importorg.apache.spark.storage.StorageLevel

import org.apache.spark.streaming._

import org.apache.spark.streaming.flume._

object FlumeEventTest{

defmain(args:Array[String]) {

Logger.getLogger("org.apache.spark").setLevel(Level.WARN)

Logger.getLogger("org.apache.eclipse.jetty.server").setLevel(Level.OFF)

val hostname = args(0)

val port = args(1).toInt

val batchInterval = args(2)

val sparkConf = newSparkConf().setAppName("FlumeEventCount").setMaster("local[2]")

val ssc = new StreamingContext(sparkConf,batchInterval)

valstream = FlumeUtils.createStream(ssc,hostname,port,StorageLevel.MEMORY_ONLY)

stream.count().map(cnt => "Received " + cnt + " flumeevents." ).print()

ssc.start()

ssc.awaitTermination()

}

}


2、 Flume配置文件参数


a1.channels = c1

a1.sinks = k1

a1.sources = r1

a1.sinks.k1.type = avro

a1.sinks.k1.channel = c1

a1.sinks.k1.hostname = localhost

a1.sinks.k1.port = 9999

a1.sources.r1.type = avro

a1.sources.r1.bind = localhost

a1.sources.r1.port = 44444

a1.sources.r1.channels = c1

a1.channels.c1.type = memory

a1.channels.c1.capacity = 1000

a1.channels.c1.transactionCapacity = 100


这里,使用avro向flume的44444端口发送数据;然后flume通过9999向Spark发送数据。


3、 运行Spark程序:


4、 通过Flume配置文件启动Flumeagent

../bin/flume-ng agent --conf conf--conf-file ./flume-conf.conf --name a1

-Dflume.root.logger=INFO,console

Spark运行效果:


5、 使用avro来发送文件:

./flume-ng avro-client --conf conf -Hlocalhost -p 44444 -F/opt/servicesClient/Spark/spark/conf/spark-env.sh.template-Dflume.root.logger=DEBUG,console


Flume agent效果:

Spark效果:


二、使用netcat发送数据


1、 Spark程序同上

2、 配置Flume参数

a1.channels = c1

a1.sinks = k1

a1.sources = r1

a1.sinks.k1.type = avro

a1.sinks.k1.channel = c1

a1.sinks.k1.hostname = localhost

a1.sinks.k1.port = 9999

a1.sources.r1.type = netcat

a1.sources.r1.bind = localhost

a1.sources.r1.port = 44444

a1.sources.r1.channels = c1

a1.channels.c1.type = memory

a1.channels.c1.capacity = 1000

a1.channels.c1.transactionCapacity = 100


这里,使用telnet作为Flume的数据源


3、 运行Spark程序同上


4、 通过Flume配置文件启动Flumeagent

../bin/flume-ng agent --conf conf--conf-file ./flume-conf.conf --name a1

-Dflume.root.logger=INFO,console

注意:这里使用netcat作为Flume的数据源,注意与avro作为源的效果区别


5、 使用telnet发送数据


Spark效果:



这是两个比较简单的demo,如果真正在项目中使用Flume来收集数据,使用Kafka作为分布式消息队列,使用Spark Streaming实时计算,还需要详细研究Flume和Spark流计算。


前段时间给部门做培训,演示了Spark Streaming的几个例子:文本处理、网络数据处理、stateful操作和window操作,这几天有时间整理整理,分享给大家。包括Spark MLlib的两个简单demo:基于K-Means的用户分类和基于协同过滤的电影推荐系统。



今天看了斯坦福Andrew Ng教授的ML课程,讲的很棒,这里把链接分享给大家:

http://open.163.com/special/opencourse/machinelearning.html

数据 程序 效果 文件 配置 两个 运行 参数 数据源 时间 处理 实验 测试 周到 事件 例子 分布式 功能 地方 大神 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 互联网黑科技 互联网科技产业 中关村互联网 科技集团 苏州找大状互联网科技有限公司 猪兼强互联网科技 互联网 卓越科技 上海亿帐通互联网科技 顺网科技2021年互联网排名 深圳市运趣互联网科技有限公司 温州喔噻互联网科技有限公司 全球顶尖互联网科技公司 湖北码尼互联网科技有限公司电话 智腾互联网科技有限公司 注册互联网科技公司经营范围大全 互联网时代的科技公司 北京市互联网新科技 广州千川互联网科技有限公司 四川互联网展示科技馆设计 江苏互联网智能科技产品出厂价 互联网科技大佬云集 没上市的科技互联网公司 互联网 科技创新 智网互联网科技 极限挑战互联网科技 济南和联互联网科技有限公司 米聚互联网科技南京有限公司排面 互联网科技人工智能实验室 科技互联网海报 神州科技互联网有限公司 互联网科技手抄报图片
0