我有一个远程进程,向我简单的 Spark Standalone Cluster 发送数千个请求:
托管在Scala中开发的简单数据处理服务。这些请求通过带有一些参数的 cUrl 命令发送到.jar,通过REST Apache Livy接口发送,如下所示:
curl -s -X POST -H "Content-Type: application/json" REMOTE_IP:8998/batches -d '{"file":"file://PATH_TO_JAR/target/MY_JAR-1.0.0-jar-with-dependencies.jar","className":"project.update.MY_JAR","args":["C1:1","C2:2","C3:3"]}'
在某个时间点,即使请求处于 WAITING 状态(因为Spark注册要提供的作业),请求也会终止主节点内存,挂起主节点并且工作人员松散与它的联系。
有没有办法可以排队这个请求,防止Spark为他们保留RAM?当一个worker空闲时,处理该队列中的另一个请求。
This问题类似,说 yarn.scheduler.capacity.max-applications 只允许N个RUNNING应用程序,但我不明白这是不是我需要的解决方案。 Apache Livy没有这个功能,不是我所知道的。