Spark Streaming和Flume的结合使用
来源:互联网 发布:大尺度网络腐剧百度云 编辑:程序博客网 时间:2024/05/21 22:26
首先在IDEA里面导入依赖包
<dependency>
<groupId>org.apache.spark</groupId>
<artifactId>spark-streaming-flume_2.10</artifactId>
<version>${spark.version}</version>
</dependency>
在linux下安装flume,减压flume包,然后到conf里面复制flume-env.sh,修改里面的JavaHOME安装目录就好了
1、 Flume主动向Streaming推送数据
object FlumePushDemo { def main(args: Array[String]): Unit = { Logger.getLogger("org").setLevel(Level.WARN) //local[2]这里必须是2个或2个以上的线程,一个负责接收数据,一个负责将接收的数据下发到worker上执行 val config = new SparkConf().setAppName("FlumePushDemo").setMaster("local[2]") val sc = new SparkContext(config) val ssc = new StreamingContext(sc, Seconds(2)) //这个地址是spark程序启动时所在节点的地址 val flumeStream = FlumeUtils.createStream(ssc, "192.168.10.11", 8008) flumeStream.flatMap(x => new String(x.event.getBody.array()).split(" ")).map((_, 1)).reduceByKey(_ + _) .print() ssc.start() ssc.awaitTermination() }}
配置flume文件
# 这个是启动命令,到flume的安装路径# bin/flume-ng agent -n a1 -c conf/ -f config/flume-push.conf -Dflume.root.logger=INFO,console# flume 主动推送数据到spark上# Name the components on this agenta1.sources = r1a1.sinks = k1 k2a1.channels = c1# sourcea1.sources.r1.type = exec# 监控linux目录下的文件a1.sources.r1.command = tail -F /home/hadoop/access.loga1.sources.r1.channels = c1# Describe the sink# avro绑定一个端口a1.sinks.k1.type = avroa1.sinks.k1.hostname = 192.168.10.11a1.sinks.k1.port = 8008#在控制台打印信息a1.sinks.k2.type = logger# Use a channel which buffers events in memorya1.channels.c1.type = memorya1.channels.c1.capacity = 1000a1.channels.c1.transactionCapacity = 100# Bind the source and sink to the channela1.sources.r1.channels = c1a1.sinks.k1.channel = c1a1.sinks.k2.channel = c1
我去,弄了好几次了Flume配置文件开头总是显示<span style="font-size:14px;">,结尾显示</span>,大家在使用的时候注意,把这些去掉。
2、Streaming主动向Flume拉取数据(这个要优于上面的,可以根据处理数据的能力去拉取数据)
第一,拷贝三个jar包放到flume的lib目录下
spark-streaming-flume-sink_2.10-1.6.1.jar
scala-library-2.10.5.jar
commons-lang3-3.3.2.jar
第二,使用创建FlumeUtils.createPollingStream 的dstream
第一,拷贝三个jar包放到flume的lib目录下
spark-streaming-flume-sink_2.10-1.6.1.jar
scala-library-2.10.5.jar
commons-lang3-3.3.2.jar
第二,使用创建FlumeUtils.createPollingStream 的dstream
object FlumePullDemo { def main(args: Array[String]): Unit = { Logger.getLogger("org").setLevel(Level.WARN) //local[2]这里必须是2个或2个以上的线程,一个负责接收数据,一个负责将接收的数据下发到worker上执行 val config = new SparkConf().setAppName("FlumePullDemo").setMaster("local[2]") val sc = new SparkContext(config) val ssc = new StreamingContext(sc, Seconds(2)) //这个地址是spark程序启动时所在节点的地址,后面可以添加多个地址 val addresses: Seq[InetSocketAddress] = Seq(new InetSocketAddress("192.168.10.11", 8008)) val flumeStream = FlumeUtils.createPollingStream(ssc, addresses, StorageLevel.MEMORY_ONLY) flumeStream.flatMap(x => new String(x.event.getBody.array()).split(" ")).map((_, 1)).reduceByKey(_ + _) .print() ssc.start() ssc.awaitTermination() }}
配置flume文件
# 执行代码# bin/flume-ng agent -n a1 -c conf/ -f config/flume-pull.conf -Dflume.root.logger=INFO,console# spark 主动到flume上拉取数据# Name the components on this agenta1.sources = r1a1.sinks = k1 k2a1.channels = c1# sourcea1.sources.r1.type = execa1.sources.r1.command = tail -F /home/hadoop/access.loga1.sources.r1.channels = c1# Describe the sink# 告诉flume下沉到spark编写好的组件中a1.sinks.k1.type = org.apache.spark.streaming.flume.sink.SparkSinka1.sinks.k1.hostname = 192.168.10.11a1.sinks.k1.port = 8008# 控制台打印数据信息a1.sinks.k2.type = logger# Use a channel which buffers events in memorya1.channels.c1.type = memorya1.channels.c1.capacity = 1000a1.channels.c1.transactionCapacity = 1000# Bind the source and sink to the channela1.sources.r1.channels = c1a1.sinks.k1.channel = c1a1.sinks.k2.channel = c1
阅读全文
0 0
- Spark Streaming和Flume的结合使用
- Spark Streaming 和 Flume-NG的整合
- Flume和Kafka结合使用的分析
- Spark streaming and flume
- Spark-streaming 连接flume
- flume kafka spark streaming
- Spark学习八:spark streaming与flume和kafka集成
- Spark-Streaming 使用flume的push方式进行流式处理
- Spark组件之Spark Streaming学习3--结合SparkSQL的使用(wordCount)
- Flume结合Spark测试
- Spark Streaming和Flume集成指南V1.4.1
- Spark Streaming和Flume集成指南V1.4.1
- Spark Streaming和Flume集成指南V1.4.1
- Spark学习笔记-Streaming-Flume
- Spark Streaming+Flume对接实验
- flume spark streaming配置详解
- Spark Streaming + Flume Integration Guide
- flume-kafka- spark streaming(pyspark)
- 拼装div
- 使用 Arrays 类操作 Java 中的数组
- 【模板】最小费用最大流
- Python 直接赋值、浅拷贝和深度拷贝解析
- #1055
- Spark Streaming和Flume的结合使用
- Cisco Packet Tracer配置静态VLAN的步骤
- JVET-E0008
- Git详解之三 Git分支
- Runtime的使用6 【归档、解档】
- Hadoop 2.8.0 全分布模式下遇见的坑
- 金融风控-->申请评分卡模型-->申请评分卡介绍
- spring data jpa 查询自定义字段,转换为自定义实体
- MarkdownPad2 不能渲染的问题解决方法