0
点赞
收藏
分享

微信扫一扫

0501-使用Python访问Kerberos环境下的Kafka(二)

温馨提示:如果使用电脑查看图片不清晰,可以使用手机打开文章单击文中的图片放大查看高清原图。


Fayson的github:

​​https://github.com/fayson/cdhproject​​


提示:代码块部分可以左右滑动查看噢


1

文档编写目的


在前面的文章Fayson介绍了一种Python访问Kerberos环境下Kafka的文章,参考《​​0500-使用Python2访问Kerberos环境下的Kafka​​》,本篇文章主要介绍另一种方式访问Kerberos环境下的Kafka。

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


  • 内容概述:

1.环境准备

2.Python2示例代码

3.访问验证

4.总结


  • 测试环境:

1.操作系统:Redhat7.4

2.CM和CDH版本为5.15.0

3.CDK2.2.0(0.10.2)

4.Python 2.7.15


2

环境准备


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

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

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


1.安装操作系统依赖包


[root@cdh2 ~]# yum -y install gcc-c++ python-devel.x86_64 cyrus-sasl-devel.x86_64


0501-使用Python访问Kerberos环境下的Kafka(二)_python


2.安装gssapi依赖包,该依赖包为Python访问Kerberos环境的模块


[root@cdh2 ~]# /opt/cloudera/anaconda2/bin/pip install gssapi


0501-使用Python访问Kerberos环境下的Kafka(二)_kafka_02


3.安装kafka-python依赖包


[root@cdh2 ~]# /opt/cloudera/anaconda2/bin/pip install kafka-python


0501-使用Python访问Kerberos环境下的Kafka(二)_kafka_03


3

Python2示例代码


1.如下为Python2访问Kerberos环境下Kafka示例代码


[root@cdh2 python_code]# more 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')


0501-使用Python访问Kerberos环境下的Kafka(二)_kafka_04


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

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


0501-使用Python访问Kerberos环境下的Kafka(二)_kafka_05


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";
};


0501-使用Python访问Kerberos环境下的Kafka(二)_python_06


client.properties内容如下:


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


0501-使用Python访问Kerberos环境下的Kafka(二)_依赖包_07


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


0501-使用Python访问Kerberos环境下的Kafka(二)_依赖包_08


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


[root@cdh2 python_code]# kinit fayson
[root@cdh2 python_code]# /opt/cloudera/anaconda2/bin/python kafka_test.py


0501-使用Python访问Kerberos环境下的Kafka(二)_python_09


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


0501-使用Python访问Kerberos环境下的Kafka(二)_依赖包_10


5

总结


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

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

3.相较于之前的访问方式,该方式会更简单一些,Python的依赖包不会显得太复杂。



提示:代码块部分可以左右滑动查看噢


为天地立心,为生民立命,为往圣继绝学,为万世开太平。

温馨提示:如果使用电脑查看图片不清晰,可以使用手机打开文章单击文中的图片放大查看高清原图。


推荐关注Hadoop实操,第一时间,分享更多Hadoop干货,欢迎转发和分享。

0501-使用Python访问Kerberos环境下的Kafka(二)_python_11


举报

相关推荐

0 条评论