【发布时间】:2020-09-21 23:46:04
【问题描述】:
我正在尝试运行用 Java 编写的 Spark Kafka 作业,以便为 Kafka 主题每批生成大约 10K 条记录。这是一个 spark 批处理作业,它在循环中顺序读取 100 个(总共 100 万条记录)hdfs 零件文件,并批量生成 10K 记录的每个零件文件。 我正在使用 org.apache.kafka.clients.producer.KafkaProducer API
遇到以下异常:
org.apache.kafka.common.KafkaException: Failed to construct kafka producer
....
Caused by: org.apache.kafka.common.KafkaException: java.io.IOException: Too many open files
....
Caused by: java.io.IOException: Too many open files
以下是配置:
Cluster Resource availability:
---------------------------------
The cluster has more than 500 nodes, 150 Terabyte total memory, more than 30K cores
Spark Application configuration:
------------------------------------
Driver_memory: 24GB
--executor-cores: 5
--num-executors: 24
--executor-memory: 24GB
Topic Configuration:
--------------------
Partitions: 16
Replication: 3
Data size
----------
Each part file has 10K records
Total records 1million
Each batch produce 10K records
请为此提出一些解决方案,因为这是一个非常关键的问题。
提前致谢
【问题讨论】:
-
能发一下spark job的代码吗?
标签: apache-spark apache-kafka spark-streaming kafka-producer-api