Spark Streaming 接入 kafka 之 sasl配置

被kafka的新版配置折磨的死去活来的,终于搞定了。。。放松一下写此篇博客以记录一下。

开发环境

  • spark 2.2.0
  • scala 2.11.8 (目前为止,高版本的scala貌似对kafka的支持还有坑。。。)
  • sbt(目前为止,顺便说一下,如果是mac 10.13 之后的系统,并且使用 IntelliJ IDEA的话,sbt的版本要选择 1.0.3左右的,选择1.1.0之后那又是会爽的死去活来的)
  • IntelliJ IDEA 社区版 2017.2.16
  • kafka的版本,由于设置了sasl认证,Kafka 的版本要1.0之后的,具体的对应关系可以查看 此官网链接

为了方便大家配置贴出我的sbt配置:

name := "kstreaming"

version := "0.1"

scalaVersion := "2.11.8"

val sparkVersion = "2.2.0"

libraryDependencies ++= Seq(
  "org.apache.spark" %% "spark-core" % sparkVersion,
  "org.apache.spark" %% "spark-sql" % sparkVersion,
  "org.apache.spark" %% "spark-mllib" % sparkVersion,
  "org.apache.spark" %% "spark-streaming" % sparkVersion,
  "org.apache.spark" %% "spark-hive" % sparkVersion,
  "org.apache.spark" %% "spark-streaming-kafka-0-10" % sparkVersion
)

当然了链接的普通例子还是以官网的为准,戳这里
回归正题,接着说咱们的sasl配置,相对于官网的配置,只需要修改以下部位…

import org.apache.kafka.clients.consumer.ConsumerRecord
import org.apache.kafka.common.serialization.StringDeserializer
import org.apache.spark.streaming.kafka010._
import org.apache.spark.streaming.kafka010.LocationStrategies.PreferConsistent
import org.apache.spark.streaming.kafka010.ConsumerStrategies.Subscribe

val kafkaParams = Map[String, Object](
  "bootstrap.servers" -> "localhost:9092,anotherhost:9092",
  "key.deserializer" -> classOf[StringDeserializer],
  "value.deserializer" -> classOf[StringDeserializer],
  "group.id" -> "use_a_separate_group_id_for_each_stream",
  "auto.offset.reset" -> "latest",
  "enable.auto.commit" -> (false: java.lang.Boolean),
  "security.protocol" -> "SASL_PLAINTEXT", // 这两项是我们自己的sasl设置,相对于官网的代码也只改了这两行
  "sasl.mechanism" -> "PLAIN"              // 这两项是我们自己的sasl设置,相对于官网的代码也只改了这两行
)

val topics = Array("topicA", "topicB")
val stream = KafkaUtils.createDirectStream[String, String](
  streamingContext,
  PreferConsistent,
  Subscribe[String, String](topics, kafkaParams)
)

stream.map(record => (record.key, record.value))

接下来就是在 IntelliJ IDEA里边跑以下结果了,当然要顺手设置以下IntelliJ IDEA了~

  • 界面右上角运行的按钮旁有个下拉框,下拉选择 Edit Configurations
  • Confirguration界面的 VM options选项的最右边有个按钮
  • 在里边添加如下代码即可
-Dspark.master=local
-Djava.security.auth.login.config=kafka_client_jaas.conf

第一行是单机运行的意思
第二行是告诉spark运行的时候把认证信息加到运行环境中
当然这里边设置了个文件,这个文件要放到工作目录中~
文件的内容呢,如下

KafkaClient {
  org.apache.kafka.common.security.plain.PlainLoginModule required
  username="xxx"
  password="xxx";
};

完成了这三步简单的配置之后,跑起来就清爽了!!!
废话不多说,敲代码去了 T_T

  • 0
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

xyccstudio

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值