Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/elixir/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 使用Direct Kafka API运行spark流媒体应用程序所需的最佳资源是什么?_Python_Pyspark_Apache Kafka_Spark Streaming - Fatal编程技术网

Python 使用Direct Kafka API运行spark流媒体应用程序所需的最佳资源是什么?

Python 使用Direct Kafka API运行spark流媒体应用程序所需的最佳资源是什么?,python,pyspark,apache-kafka,spark-streaming,Python,Pyspark,Apache Kafka,Spark Streaming,我正在使用direct Kafka API以1分钟的批处理间隔运行spark流媒体应用程序,并在我的Pyspark应用程序代码中使用Pandas 以下是我的群集配置: 3个数据节点,每个数据节点的容量为8核12GB RAM 我为spark提交作业提供了以下参数 --master yarn --deploy-mode cluster --executor-memory 2G --total-executor-cores 4 --num-executors 11 但是我的SPARK UI显示我的

我正在使用direct Kafka API以1分钟的批处理间隔运行spark流媒体应用程序,并在我的Pyspark应用程序代码中使用Pandas

以下是我的群集配置: 3个数据节点,每个数据节点的容量为8核12GB RAM

我为spark提交作业提供了以下参数

--master yarn
--deploy-mode cluster
--executor-memory 2G
--total-executor-cores 4
--num-executors 11 
但是我的SPARK UI显示我的活动批次处于队列状态

config("spark.streaming.backpressure.enabled", "true") \
.config("spark.streaming.kafka.maxRatePerPartition","200") \  
根据回答的一些帖子/问题,我在spark配置中设置了以下选项,如下所述,以避免作业进入队列状态


如果我在申请处理的任何阶段出错,请纠正我?

首先,正如@Marie在评论中提到的,熊猫部分将在驱动程序上本地执行
。如果要这样做,必须增加驱动程序内存,这有点违背了分布式处理的目的。也就是说,这是一个好主意,从5-10秒开始,慢慢地进行间歇。除了您可以调整的参数之外,还有
spark.streaming.concurrentJobs
,由于某些原因,文档中没有直接提到它。将该值从10递增,以查看最适合的值。有很多关于流媒体应用程序优化的博客文章,这些都是经过设置的,其中一些您已经执行过了。您可能需要添加
“spark.serializer”:“org.apache.spark.serializer.KryoSerializer”
,并解释了它的好处。

如果您在
Pandas
中运行大型计算,您还需要增加驱动程序的内存(
--驱动程序内存
),因为一切都将“本地”完成但在集群模式下,它不会使用pandas分发吗?我的输入流最多只能有1000条记录,当我为两个不同的客户并行运行上面解释的同一个应用程序时,我的进程会排队!您使用的是2G/executor*11执行器,总共22G如果您只有36G,那么第二个应用程序排队是正常的。我对驱动程序内存的评论只是想说,如果你想让你的应用程序运行得更快,你也必须考虑到这一点,因为pandas不会分发。明白了,谢谢你的信息!在生产中,我们应该指定这些参数,还是纱线应该根据体积动态分配?您的平台上应该有一个spark配置文件,其中包含所有这些的默认值
spark default.conf