spark structed streaming + kerberos踩坑之旅

7 篇文章 0 订阅
6 篇文章 0 订阅

CDP升级,需要部署kerberos,代码脚本都要修改。

keytab生成

重中之重,感觉大部分问题都出在这里,后面测通kakfa时有大坑.

  1. klist (过期后需要重新kinit该用户)
    在这里插入图片描述
  2. kinit sma_admin
  3. (假设我们的用户名是sma_admin)输入密码
    shucsasdsdas
  4. ipa-getkeytab -p sma_admin@NEWCHINALIFE.COM -k ./sma_admin.keytab --password
    (最重要的一步来了,ipa-getkeytab -p sma_admin -k ./sma_admin.keytab --password我原来用的这个命令,导致我后来代码调试kakfa失败,用最上面的命令就没问题,这里具体不知道为什么,有大佬可以解释一下最好)
    这个命令要输入两次密码,自己记住就行

在这里插入图片描述

  1. kinit -kt ./sma_admin.keytab sma_admin@NEWCHINALIFE.COM
    (这一步也很重要,之前用的kinit -kt sma_admin.keytab sma_admin 并不好使,原因不知道)

kafka生产者消费者

用正常的kafka生产者消费者命令会报错,是因为没有配置kafka kerberos客户端验证配置,有kerberos情况下kafka客户端需要对kafka做以下配置

  1. 创建jaas.conf
KafkaClient {
com.sun.security.auth.module.Krb5LoginModule required
useKeyTab=true
keyTab="/home/sma_admin/allindex/structedstreaming/sma_admin.keytab"
principal="sma_admin@NEWCHINALIFE.COM";
};

如果是用keytab,内容如下

KafkaClient { 
com.sun.security.auth.module.Krb5LoginModule required useKeyTab=true 
keyTab="/etc/security/keytabs/kafka_server.keytab" 
principal="kafka/kafka1.hostname.com@EXAMPLE.COM"; 
}; 
  1. 创建client.properties文件,内容如下
security.protocol=SASL_PLAINTEXT
sasl.kerberos.service.name=kafka

  1. 将jaas.conf导入到Kakfa验证选项
    (目录不固定,放哪里改成哪里)
$ export KAFKA_OPTS="-Djava.security.auth.login.config=/home/user/jaas.conf" 
  1. 然后进行生产或消费
kafka-console-producer --bootstrap-server 10.1.92.21x:9092,10.1.92.22x:9092,10.1.92.22x:9092 --topic dev_pas_topic2 --producer.config client.properties

kafka-console-consumer --bootstrap-server 10.1.92.21x:9092,10.1.92.22x:9092,10.1.92.22x:9092  --topic dev_pas_topic2 --consumer.config client.properties

Spark-submit的认证

  1. 使用keytab可以避免认证过期问题
    在正常的submit提交命令中加入以下内容:
--keytab /home/sma_admin/allindex/structedstreaming/sma_admin.keytab 
--principal sma_admin@NEWCHINALIFE.COM

2.1 spark structed streaming + kafka 再添加以下内容

--driver-java-options "-Djava.security.auth.login.config=/home/sma_admin/allindex/structedstreaming/kafka_client_jaas.conf" 
--conf "spark.executor.extraJavaOptions=-Djava.security.auth.login.config=/home/sma_admin/allindex/structedstreaming/kafka_client_jaas.conf"

2.2 spark structed streaming + kafka创建kafka_client_jaas.conf ,kafka_client_jaas.conf 为以下内容

KafkaClient {
  com.sun.security.auth.module.Krb5LoginModule required
  useKeyTab=true
  storeKey=true
  keyTab="/home/sma_admin/allindex/structedstreaming/sma_admin.keytab"
  principal="sma_admin@NEWCHINALIFE.COM";
};

Client {
  com.sun.security.auth.module.Krb5LoginModule required
  useKeyTab=true
  storeKey=true
  keyTab="/home/sma_admin/allindex/structedstreaming/sma_admin.keytab"
  principal="sma_admin@NEWCHINALIFE.COM";
};

2.3 spark structed streaming + kafka 分发kafka_client_jaas.conf 和keytab文件到每一个Yarn节点,同一个目录下

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值