2016-09-06 18 views
7

私はKafka-PythonでKafkaに接続しようとしていますが、KafkaクラスタにはKerberosがあり、いくつかの手順を実行するコマンドが必要です。Kafka-PythonとKerberosクラスタを接続する

私はクラスタで1つのトピックを作成しました。私は./kafka-console-producer.sh./kafka-console-consumer.shでテストを行い、本当にうまく動作します。

しかし、私がKafka-Pythonと接続しようとすると、問題が発生しました。 30 secconds後、私はこのERROメッセージが表示されましたこのようなものを実行している、

def produce(): 
    print ('Producer') 
    k_producer = KafkaProducer(bootstrap_servers='hostname:6667', 
           security_protocol='SASL_PLAINTEXT', 
           sasl_plain_username='machine_usr', 
           sasl_plain_password='machine_pwd', 
           sasl_mechanism='PLAIN') 
    for i in range(10): 
     print ('Before send') 
     k_producer.send('myTopic', 'Testing My Topic ' + str(i)) 
     print ('After send') 

まあ:以下の私のコードを参照してください

File "C:\Users\m\kafka-python-1.3.1\kafka.zip\kafka\producer\kafka.py", line 328, in __init__ 
File "C:\Users\m\kafka-python-1.3.1\kafka.zip\kafka\client_async.py", line 202, in __init__ 
File "C:\Users\m\kafka-python-1.3.1\kafka.zip\kafka\client_async.py", line 791, in check_version 
kafka.errors.NoBrokersAvailable: NoBrokersAvailable 

を、私は、リモートマシンでそれを実行しています。 bootstrap_server私はZookeeperホスト名とポートを使用しましたが、うまくいきませんでした。

私はそれについて何かを見つけました。カフカ - パイソンのgitでは、私にはimplementedがあることが分かりました。

他にも接続できますか?

+0

作業スクリプトの内容を確認すると便利です。また、より簡単な接続を使ってこのOPを見ましたか? http://stackoverflow.com/questions/35689238/kafka-python-producer-is-notable-to-connect Kerberosを使わずに別のインスタンスを設定する必要がある場合でも、起動する場所である可能性があります。 –

+0

ありがとう@DanielWisehart!私は簡単な方法で接続できることを知っています。しかし、Kerberosは物事を少し難しくします...私はKeyTabで認証する必要があります...そして、それはPythonのlibでそれを行うことはできません。 –

+0

はあなたのkafkaブローカー 'hostname:6667'のアドレスですか?一見すると右には見えない... – jimijazz

答えて

2

よく知られている人、

この問題が見つかりました。

問題は、キータブを使用するPythonのKafka製作者にとってKerberosがサポートされていないことです。

キータブを使用するには、Java環境変数を設定する必要があります。

Hortonworksによれば、接続するにはclient_jaas_clientを設定する必要があります。

解決策はPy4jを使用してJVMのKafka Producerを呼び出していました。

hereの例を参照してください。

関連する問題