如何启动spark应用程序而无需30秒启动惩罚?

fd3cxomn  于 2021-05-29  发布在  Hadoop
关注(0)|答案(2)|浏览(934)

在执行spark submit时,任何操作都需要30秒,我相信它绑定到sparkmaster上的端口、创建sparkcontext、分配执行器、jvm启动等等
无论如何要加快速度?我将每3分钟用不同的参数调用一次jar,希望减少延迟
我试着用local:/读取jar,这似乎节省了几秒钟

lf3rwulv

lf3rwulv1#

我知道,当您始终请求比集群可用资源更多的资源时,spark有一个默认延迟。这由设置控制: spark.scheduler.maxRegisteredResourcesWaitingTime ,在此处找到,默认值为30秒。
计划开始前等待资源注册的最长时间。
基本上,spark调度器会等待这么长时间,或者直到请求的执行者的数量注册到您的驱动程序。如果您总是请求比集群中可用的执行器更多的执行器,那么您总是会得到这个延迟。

y1aodyip

y1aodyip2#

我不认为你可以加快这一点很多。首先,在应用程序启动之前,yarn和application master必须完成很多任务。
Yarn必须检查资源,并决定在哪里旋转新的应用程序。分配应用程序主机,然后应用程序主机与资源管理器通信,找出可用的资源,并为给定的输入数据获取最佳的资源。
然后在executor节点上启动工作线程,启动jvm线程等。此外,由于资源不可用,可能会出现一些延迟。所以,我怀疑你能确定它每次都会在30秒后启动。
另外,我不知道为什么这个延迟会在启动过程中造成问题。
批处理通常因为是批处理而延迟。spark流也会被延迟,因为在他们从流源中积累了足够的数据之前,spark流不会启动spark进程,如果有足够的资源,spark流就会赶上。如果您需要实时流媒体,那么在spark提出实时处理解决方案之前,flink可能是更好的选择。

相关问题