2017-08-14 65 views
0

我試圖通過Cloudera Data Science Workbench在我們的內部Hadoop集羣上實施GitHub項目(https://github.com/tomatoTomahto/CDH-Sensor-Analytics)。嘗試通過Cloudera Data Science Workbench連接到Kafka時沒有可用的代理

在Cloudera Data Science Workbench上運行項目時,嘗試通過Python api連接到Kafka時,出現錯誤「No Brokers available」KafkaProducer(bootstrap_servers ='broker1:9092')[代碼可在https://github.com/tomatoTomahto/CDH-Sensor-Analytics/blob/master/datagenerator/KafkaConnection.py]找到。

我使用Kerberos進行了身份驗證。我已經嘗試給沒有端口號的代理節點,並且也作爲列表。但是,到目前爲止沒有任何工作。

以下是堆棧跟蹤。

NoBrokersAvailable: NoBrokersAvailable 
NoBrokersAvailable      Traceback (most recent call 
last) 
in engine 
----> 1 dgen = DataGenerator(config) 

/home/cdsw/datagenerator/DataGenerator.py in __init__(self, config) 
39   
40   self._kudu = KuduConnection(self._config['kudu_master'], 
self._config['kudu_port'], spark) 
---> 41   self._kafka = 
KafkaConnection(self._config['kafka_brokers'], 
self._config['kafka_topic']) 
42 
43   #self._kafka 

/home/cdsw/datagenerator/KafkaConnection.py in __init__(self, brokers, 
topic) 
    4 class KafkaConnection(): 
    5 def __init__(self, brokers, topic): 
----> 6  self._kafka_producer = 
KafkaProducer(bootstrap_servers=brokers) 
    7  self._topic = topic 
    8  

/home/cdsw/.local/lib/python3.6/site-packages/kafka/producer/kafka.py 
in __init__(self, **configs) 
333 
334   client = KafkaClient(metrics=self._metrics, 
metric_group_prefix='producer', 
--> 335        **self.config) 
336 
337   # Get auto-discovered version from client if necessary 

/home/cdsw/.local/lib/python3.6/site-packages/kafka/client_async.py in 
__init__(self, **configs) 
208   if self.config['api_version'] is None: 
209    check_timeout = 
self.config['api_version_auto_timeout_ms']/1000 
--> 210    self.config['api_version'] = 
self.check_version(timeout=check_timeout) 
211 
212  def _bootstrap(self, hosts): 

/home/cdsw/.local/lib/python3.6/site-packages/kafka/client_async.py in 
check_version(self, node_id, timeout, strict) 
806    try_node = node_id or self.least_loaded_node() 
807    if try_node is None: 
--> 808     raise Errors.NoBrokersAvailable() 
809    self._maybe_connect(try_node) 
810    conn = self._conns[try_node] 

NoBrokersAvailable: NoBrokersAvailable 

我也試着通過CLI連接通過CLI連接工作臺以外。我得到了同樣的錯誤。

我錯過了什麼指針?提前致謝!

回答

0

第一步是確定網絡路由是否打開,並且代理已啓動並在該端口上偵聽。之後,您可以檢查身份驗證等。

您試過telnet <broker host> 9092

除了listeners之外,您可能還需要明確地設置advertised.listeners,偶爾會看到一個與Java沒有綁定的預期網絡接口(或者至少是我期望的接口)的奇怪怪癖,而且我有強制使用advertised.listeners

相關問題