0502-CDSW中访问Kerberos环境下的Kafka

1 文档编写目的

Fayson在前面的文章《0500-使用Python2访问Kerberos环境下的Kafka》和《0501-使用Python访问Kerberos环境下的Kafka(二)》中介绍了两种方式访问Kerberos环境下的Kafka。在前面文章的基础上Fayson介绍在CDSW访问Kerberos环境下的Kafka。

在学习本篇文章内容前你还需要知道《如何通过Cloudera Manager为Kafka启用Kerberos及使用》。

  • 测试环境:

1.操作系统:Redhat7.4

2.CM和CDH版本为5.15.0

3.CDK2.2.0(0.10.2)

4.Python 2.7.15

2 CDSW运行环境准备

在使用Python访问Kafka前,还需要为Python环境安装相关的Kafka包,这里Fayson使用官网推荐使用的kafka-python依赖包。该依赖包的GitHub地址为:

https://github.com/dpkp/kafka-python,关于kafka-python的详细说明可以参考GitHub。

接下来在CDSW中准备Python访问Kafka的运行环境。

1.打开一个Python工程启动Session

会话启动成功

2.会话启动成功后在当前命令窗口执行如下命令安装gssapi依赖包

3.会话启动成功后在执行如下命令安装kafka-python依赖包

3 Python2示例代码

1.在CDSW中创建一个kafka_test.py文件,内容如下:

from kafka import KafkaProducer

import logging
logging.basicConfig(filename='example.log',level=logging.DEBUG)


conf = {'bootstrap_servers': ['cdh2.fayson.com:9092','cdh3.fayson.com:9092','cdh4.fayson.com:9092'],
        'security_protocol': 'SASL_PLAINTEXT',
        'sasl_mechanism': 'GSSAPI',
        'client_id': 'testgroup'}

producer = KafkaProducer(**conf)
for _ in range(100):
    producer.send('test', b'some_message_bytes')

2.关于Kafka支持的属性配置可以参考如下地址

https://github.com/dpkp/kafka-python/blob/master/kafka/producer/kafka.py

4 访问验证

本文提供的示例代码为向Kerberos环境Kafka的test Topic中发送消息,在命令行使用Kafka提供的kafka-console-consumer命令消费Python示例生产的消息。

1.准备客户端消费配置文件

jaas.conf内容如下:

[root@cdh05 consumer]# more jaas.conf 
KafkaClient {
   com.sun.security.auth.module.Krb5LoginModule required
   useKeyTab=true
   keyTab="/data/disk1/python_code/fayson.keytab"
   principal="fayson@FAYSON.COM";
};

client.properties内容如下:

[root@cdh05 consumer]# more client.properties 
security.protocol=SASL_PLAINTEXT
sasl.kerberos.service.name=kafka
group.id=testgroup

2.在命令行运行如下脚本启动客户端消费

export KAFKA_OPTS="-Djava.security.auth.login.config=/data/disk1/python_code/consumer/jaas.conf"
kafka-console-consumer --topic test --from-beginning --bootstrap-server cdh2.fayson.com:9092,cdh3.fayson.com:9092,cdh4.fayson.com:9092 --consumer.config /data/disk1/python_code/consumer/client.properties

3.在命令行运行python2的示例代码向test发送10条“some_message_bytes”消息

4.查看Kafka消费程序接收到两条消息

5 总结

1.kafka-python依赖包需要Python的环境有2.7、3.4、3.5、3.6

2.如果使用kafka-python访问Kerberos环境下的Kafka,需要安装gssapi依赖包,使用pip方式安装即可。

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值