【问题标题】:Too many open files Kafka Exception on running for long长时间运行时打开的文件过多Kafka异常
【发布时间】:2018-09-16 18:42:41
【问题描述】:

我有一个 Java 中的 Kafka 生产者代码,它使用 java nio WatchService api 监视目录中的新文件,并获取任何新文件并推送到 kafka 主题。 Spark 流式消费者从 kafka 主题中读取数据。在 Kafka 生产者作业持续运行一天后,我收到以下错误。生产者每 2 分钟推送大约 500 个文件。我的 Kafka 主题有 1 个分区和 2 个复制因子。有人可以帮忙吗?

org.apache.kafka.common.KafkaException: Failed to construct kafka producer         
    at org.apache.kafka.clients.producer.KafkaProducer.<init>(KafkaProducer.java:342) 
    at org.apache.kafka.clients.producer.KafkaProducer.<init>(KafkaProducer.java:166) 
    at com.hp.hawkeye.HawkeyeKafkaProducer.Sender.createProducer(Sender.java:60) 
    at com.hp.hawkeye.HawkeyeKafkaProducer.Sender.<init>(Sender.java:38)   
    at com.hp.hawkeye.HawkeyeKafkaProducer.HawkeyeKafkaProducer.<init>(HawkeyeKafkaProducer.java:54) 
    at com.hp.hawkeye.HawkeyeKafkaProducer.myKafkaTestJob.main(myKafkaTestJob.java:81)

Caused by: org.apache.kafka.common.KafkaException: java.io.IOException: Too many open files
    at org.apache.kafka.common.network.Selector.<init>(Selector.java:125)
    at org.apache.kafka.common.network.Selector.<init>(Selector.java:147)  
    at org.apache.kafka.clients.producer.KafkaProducer.<init>(KafkaProducer.java:306)

... 7 more 
Caused by: java.io.IOException: Too many open files         
     at sun.nio.ch.EPollArrayWrapper.epollCreate(Native Method)         
     at sun.nio.ch.EPollArrayWrapper.<init>(EPollArrayWrapper.java:130)        
     at sun.nio.ch.EPollSelectorImpl.<init>(EPollSelectorImpl.java:69)      
     at sun.nio.ch.EPollSelectorProvider.openSelector(EPollSelectorProvider.java:36) 
     at java.nio.channels.Selector.open(Selector.java:227)         
     at org.apache.kafka.common.network.Selector.<init>(Selector.java:123)     
 ... 9 more

【问题讨论】:

  • 我也在使用 Spark Streaming 并生产到 Kafka,你能把你的代码贴在这里吗?
  • @Steven 我可以看到这个没有人回答的老问题。你能解决这个问题吗?我也面临同样的问题。请您指导或给我们指点。
  • @AmitK 是的,我们通过多线程和并发模型解决了这个问题。之后它工作得很好。每个线程独立工作,将消息推送到 kafka。另外,我们还做了 voldy 下面的回答 - 增加了打开文件的大小

标签: apache-spark apache-kafka kafka-producer-api


【解决方案1】:

查看ulimit -aH

与您的管理员核实并增加打开文件的大小,例如:

open files                      (-n) 655536

否则我怀疑您的代码可能存在泄漏,请参考:

http://mail-archives.apache.org/mod_mbox/spark-user/201504.mbox/%3CCAKWX9VVJZObU9omOVCfPaJ_bPAJWiHcxeE7RyeqxUHPWvfj7WA@mail.gmail.com%3E

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2013-04-17
    • 2020-09-21
    • 1970-01-01
    • 2021-04-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-12-28
    相关资源
    最近更新 更多