Spark Streaming + Kafka整合指南
来源:互联网 发布:物理实验模拟软件 编辑:程序博客网 时间:2024/05/16 06:57
前言
翻译之官网http://spark.apache.org/docs/latest/streaming-kafka-integration.html,spark版本为1.6.1,由于某些部分比较绕口,所以这里并没有完全遵照官网进行翻译。
正文
Apache Kafka是一个实现发布-订阅方式的消息系统,它可以用来实现分布式、可分区、可复制的日志服务。这里我们解释怎么配置Spark Streaming,使它能够从Kafka接收数据。目前总共有两种方式,旧的方式是使用Receivers和Kafka提供的API,而新的方式并不使用Receivers(从Spark 1.3引入)。这两种方式有不同的编程模型、性能特征以及语义保障,下面会详细的来探讨。
方式一:基于Receiver的方法
这种方式使用Receiver来接收数据。Receiver是基于Kafka consumer API的实现。对于所有的receiver来说,通过Receiver从Kafka接收的数据存储在Spark的执行器中,然后由Spark Streaming启动的作业来处理这些数据。
然而,在默认配置下,这种方式可能会丢失数据(参看receiver reliability。为了保证0数据丢失,你必须额外启用Spark Streaming的Write Ahead Logs(从Spark 1.2引入)。这会把接收的Kafka数据异步写入位于分布式系统上的write ahead log(例如HDFS),所以,所有的失败数据都可以恢复。参看流式编程指南中的Deploying section获取更多关于Write Ahead Logs的信息)。
Write Ahead Log一般称为WAL机制,在HBase中也有类似机制防止数据读入失败导致数据不一致
接下来,我们来讨论如何在你的streaming应用中使用这种方式。
1. Linking: 对于使用SBT/Maven构建的Scala/Java应用,在应用中添加如下的artifact.
groupId = org.apache.sparkartifactId = spark-streaming-kafka_2.10version = 1.6.1
对于Python应用,你必须添加上述库以及它所依赖的库。参看下面的部署部分。
2. 编程: 在streaming应用代码中,使用如下方式引入KafkaUtils
并且创建DStream
。
Scala
import org.apache.spark.streaming.kafka._ val kafkaStream = KafkaUtils.createStream(streamingContext, [ZK quorum], [consumer group id], [per-topic number of Kafka partitions to consume])
你也可以使用提供了Key、Value以及Decoder参数的createStream
方法。参看API docs以及例子
需要注意的点
- Kafka的Topic分区与Spark Streaming中产生的RDD分区并没有什么关联。所以在kafkaUtils.createStream()中增加topic的分区数只会增加单个receiver消费topic的线程数。它并不会增加Spark处理数据时的并行数量。
- 对于不同的group和topic,可以使用多个receiver创建Kafka输入DStream来并行接收数据。
- 如果你已经在一个可复制的文件系统上(例如HDFS上)启用了WAL机制,
- Spark Streaming + Kafka整合指南
- Spark Streaming和Kafka整合开发指南
- Spark Streaming和Kafka整合开发指南
- Spark Streaming整合Kafka
- spark streaming 整合kafka
- Spark Streaming和Kafka整合开发指南(一)
- Spark Streaming和Kafka整合开发指南(二)
- Spark Streaming和Kafka整合开发指南(一)
- 整合Kafka到Spark Streaming
- 整合Kafka到Spark Streaming
- Spark Streaming + Kafka整合实例
- Spark-Streaming与Kafka整合
- Spark Streaming + Kafka集成指南
- Kafka + Spark Streaming+Hive(HBase) 项目整合
- SparkStream:5)Spark streaming+kafka整合实战
- Zookeeper+Kafka+Spark streaming单机整合开发
- Spark Streaming整合Kafka(一)
- Spark Streaming整合Kafka(二)
- 一些文章和书籍
- MySQL二进制文件开启及查看【windows】
- Struts2总是跳转到INPUT
- mysql常用命令汇总
- [leetcode] 167. Two Sum II - Input array is sorted
- Spark Streaming + Kafka整合指南
- 欢迎使用CSDN-markdown编辑器
- implements Serializable有什么作用
- ASP.NET内置对象
- 整洁代码
- The method of type must override a superclass method 解决方式
- JavaWeb
- 欧拉通路332. Reconstruct Itinerary
- replace()第二个参数为function时的小研究