Python通过kerberos安全认证操作kafka方式


Posted in Python onJune 06, 2020

如何通过Kerberos认证.

1.安装Kerberos客户端

CentOS:

yum install krb5-workstation

使用which kinit查看是否安装成功;

2.拷贝Kerberos配置文件

conf目录下krb5.conf和kafka.keytab和jaas.conf拷贝到客户端机器的etc目录, 同时,krb5.conf中的kdc集群主机名和IP配置到客户端机器hosts配置文件中

3.Kinit客户端通过kerberos认证

获取Principal

klist -kt kafka.keytab

4.安装python-gssapi

pip install gssapi

遇到的问题,如下:

a.在linux中执行wget命令提示 -bash: wget: command not found 解决方法

yum -y install wget

b.报错:bash: pip: command not found

wget https://bootstrap.pypa.io/get-pip.py python get-pip.py pip -V

#查看pip版本

python -m pip install --upgrade --force pip easy_install -U setuptools pip install --upgrade setuptools

3.pip安装出现Command “python setup.py egg_info” failed with error code 1 的解决方法

Traceback (most recent call last): File “”, line 1, in File “/tmp/pip-install-6HfDE3/gssapi/setup.py”, line 109, in raise Exception("Could not find main GSSAPI shared library. Please " Exception: Could not find main GSSAPI shared library. Please try setting GSSAPI_MAIN_LIB yourself or setting ENABLE_SUPPORT_DETECTION to ‘false'

Command “python setup.py egg_info” failed with error code 1 in /tmp/pip-install-6HfDE3/gssapi/

yum install -y krb5-devel.x86_64

4.关于error: command ‘gcc' failed with exit status 1错误的解决方法

yum install gcc python-devel

安装kafka-python

pip install kafka-python

初始化环境变量

export KAFKA_OPTS="-Djava.security.auth.login.config=/etc/conf/jaas.conf -Djava.security.krb5.conf=/etc/krb5.conf"

Python操作kafka样例

from kafka import KafkaProducer
from kafka.errors import KafkaError
import os

class Kafka_Producer():
 def __init__(self, kafkahost, kafkaport, kafkatopic):
  self.kafkaHost = kafkahost
  self.kafkaPort = kafkaport
  self.kafkatopic = kafkatopic
  self.producer = KafkaProducer(
    bootstrap_servers = '{kafka_host}:{kafka_port}'.format(kafka_host=self.kafkaHost,kafka_port=self.kafkaPort),
    security_protocol="SASL_PLAINTEXT",
    sasl_mechanism="GSSAPI",
    sasl_kerberos_service_name="kafka",
    compression_type='gzip' #压缩方式
    )
 def sendFileData(self, params):
  try:
    f = open(params,'rb')
    parmasMessage = f.read(-1).strip()
    producer = self.producer
    producer.send(self.kafkatopic, parmasMessage)
    producer.flush()
  except KafkaError as e:
    print (e)
  
def main():
 filePath = "/home/public/data/"
 topic = "demo"
 producer = Kafka_Producer("xxx.xx.xx.xx","9092",topic)
 dirList = os.listdir(filePath)
 for fileName in dirList:
  producer.sendFileData(filePath+fileName)
 print('send success!!!')

if __name__=='__main__':
 main()

以上这篇Python通过kerberos安全认证操作kafka方式就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持三水点靠木。

Python 相关文章推荐
Python中的yield浅析
Jun 16 Python
Python深入学习之对象的属性
Aug 31 Python
对dataframe进行列相加,行相加的实例
Jun 08 Python
使用GitHub和Python实现持续部署的方法
May 09 Python
Numpy数组array和矩阵matrix转换方法
Aug 05 Python
Python3 Tkinkter + SQLite实现登录和注册界面
Nov 19 Python
python代码打印100-999之间的回文数示例
Nov 24 Python
pytorch实现mnist数据集的图像可视化及保存
Jan 14 Python
python能做哪方面的工作
Jun 15 Python
Python grequests模块使用场景及代码实例
Aug 10 Python
如何在向量化NumPy数组上进行移动窗口
May 18 Python
python游戏开发之pygame实现接球小游戏
Apr 22 Python
pandas分批读取大数据集教程
Jun 06 #Python
python使用hdfs3模块对hdfs进行操作详解
Jun 06 #Python
python3.6.5基于kerberos认证的hive和hdfs连接调用方式
Jun 06 #Python
python访问hdfs的操作
Jun 06 #Python
Python API 操作Hadoop hdfs详解
Jun 06 #Python
python读取hdfs上的parquet文件方式
Jun 06 #Python
Python连接HDFS实现文件上传下载及Pandas转换文本文件到CSV操作
Jun 06 #Python
You might like
15个小时----从修改程序到自己些程序
2006/10/09 PHP
PHP调用三种数据库的方法(3)
2006/10/09 PHP
《PHP编程最快明白》第六讲:Mysql数据库操作
2010/11/01 PHP
FirePHP 推荐一款PHP调试工具
2011/04/23 PHP
如何在PHP中使用正则表达式进行查找替换
2013/06/13 PHP
PHP+AJAX实现投票功能的方法
2015/09/28 PHP
PHP单例模式是什么 php实现单例模式的方法
2016/05/14 PHP
Laravel框架处理用户的请求操作详解
2019/12/20 PHP
拖动Html元素集合 Drag and Drop any item
2006/12/22 Javascript
js动态拼接正则表达式的两种方法
2014/03/04 Javascript
js实现接收表单的值并将值拼在表单action后面的方法
2015/11/23 Javascript
jQuery+PHP+MySQL实现无限级联下拉框效果
2016/02/19 Javascript
动态JavaScript所造成一些你不知道的危害
2016/09/25 Javascript
对javascript继承的理解
2016/10/11 Javascript
使用JavaScript开发跨平台的桌面应用详解
2017/07/27 Javascript
vue写一个组件
2018/04/09 Javascript
Vue2.0实现简单分页及跳转效果
2019/07/29 Javascript
python实现迭代法求方程组的根过程解析
2019/11/25 Javascript
Selenium执行Javascript脚本参数及返回值过程详解
2020/04/01 Javascript
python对指定目录下文件进行批量重命名的方法
2015/04/18 Python
python比较两个列表是否相等的方法
2015/07/28 Python
PyQt5每天必学之QSplitter实现窗口分隔
2018/04/19 Python
使用python将时间转换为指定的格式方法
2018/11/12 Python
python爬虫模拟浏览器访问-User-Agent过程解析
2019/12/28 Python
python模拟预测一下新型冠状病毒肺炎的数据
2020/02/01 Python
Python jieba结巴分词原理及用法解析
2020/11/05 Python
python中HTMLParser模块知识点总结
2021/01/25 Python
css3图片边框border-image的用法
2017/06/30 HTML / CSS
PHP高级工程师面试问题推荐
2013/01/18 面试题
运动会四百米广播稿
2014/01/19 职场文书
教师批评与自我批评
2014/10/15 职场文书
2016年庆祝六一儿童节活动总结
2016/04/06 职场文书
python中if和elif的区别介绍
2021/11/07 Python
opencv深入浅出了解机器学习和深度学习
2022/03/17 Python
游戏《东方异文石:爱亚利亚黎明》正式版发布
2022/04/03 其他游戏
Python中的 No Module named ***问题及解决
2022/07/23 Python