簡體   English   中英

使用Kafka的應用程序打開文件過多錯誤

[英]Too many files open error on app using Kafka

我正在使用Kafka和Spark Streaming構建一個應用程序。 輸入數據來自第三方流,並在kafka主題上發布。 這段代碼顯示了Stream Proxy模塊:這是我從流中獲取結果的方式以及將它們發送到KafkaPublisher的方式(僅顯示了草圖):

def on_result_response(self,*args):
    self.kafkaPublisher.pushMessage(str(args[0]))

KafkaPublisher通過以下兩種方法實現:

class KafkaPublisher:

def __init__(self,address,port,topic):
    self.kafka = KafkaClient(str(address)+":"+str(port))
    self.producer = SimpleProducer(self.kafka)
    self.topic=topic



def pushMessage(self,message):
    self.producer.send_messages(self.topic, message)
    self.producer = SimpleProducer(self.kafka, async=True)

該應用程序是通過以下主程序啟動的:

from StreamProxy import StreamProxy


streamProxy=StreamProxy("localhost",9092,"task1")
streamProxy.getStreaming(20)  #seconds of streaming

經過一些批處理(大約10秒或更長時間)后,它啟動了以下異常

線程Thread-2354中的異常:追溯(最近一次調用):__bootstrap_inner中的文件“ /usr/lib/python2.7/threading.py”,第801行,文件“ /usr/lib/python2.7/threading.py” ,在運行文件“ /usr/local/lib/python2.7/dist-packages/kafka/producer/base.py”中的第754行,在_send_upstream文件“ /usr/local/lib/python2.7”中的第164行send_produce_request文件“ /usr/local/lib/python2.7/dist-packages/kafka/client.py”中的_send_broker_aware_request文件“ / usr”中的第253行,“ / dist-packages / kafka / client.py”,第649行/local/lib/python2.7/dist-packages/kafka/client.py“,第74行,在_get_conn文件“ /usr/local/lib/python2.7/dist-packages/kafka/conn.py”中, 236,連接錯誤:[Errno 24]打開的文件太多

線程Thread-2355中的異常:追溯(最近一次調用):__bootstrap_inner中的文件“ /usr/lib/python2.7/threading.py”,第801行,文件“ /usr/lib/python2.7/threading.py” ,在運行文件“ /usr/local/lib/python2.7/dist-packages/kafka/producer/base.py”中的第754行,在_send_upstream文件“ /usr/local/lib/python2.7”中的第164行send_produce_request文件“ /usr/local/lib/python2.7/dist-packages/kafka/client.py”中的_send_broker_aware_request文件“ / usr”中的第253行,“ / dist-packages / kafka / client.py”,第649行/local/lib/python2.7/dist-packages/kafka/client.py“,第74行,在_get_conn文件“ /usr/local/lib/python2.7/dist-packages/kafka/conn.py”中, 236,連接錯誤:[Errno 24]打開的文件太多

請注意,同一條消息有許多不同的例外情況,當然問題出在發行方。

嘗試刪除該行:

self.producer = SimpleProducer(self.kafka, async=True)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM