在执行spark submit时,任何操作都需要30秒,我相信它绑定到sparkmaster上的端口、创建sparkcontext、分配执行器、jvm启动等等无论如何要加快速度?我将每3分钟用不同的参数调用一次jar,希望减少延迟我试着用local:/读取jar,这似乎节省了几秒钟
lf3rwulv1#
我知道,当您始终请求比集群可用资源更多的资源时,spark有一个默认延迟。这由设置控制: spark.scheduler.maxRegisteredResourcesWaitingTime ,在此处找到,默认值为30秒。计划开始前等待资源注册的最长时间。基本上,spark调度器会等待这么长时间,或者直到请求的执行者的数量注册到您的驱动程序。如果您总是请求比集群中可用的执行器更多的执行器,那么您总是会得到这个延迟。
spark.scheduler.maxRegisteredResourcesWaitingTime
y1aodyip2#
我不认为你可以加快这一点很多。首先,在应用程序启动之前,yarn和application master必须完成很多任务。Yarn必须检查资源,并决定在哪里旋转新的应用程序。分配应用程序主机,然后应用程序主机与资源管理器通信,找出可用的资源,并为给定的输入数据获取最佳的资源。然后在executor节点上启动工作线程,启动jvm线程等。此外,由于资源不可用,可能会出现一些延迟。所以,我怀疑你能确定它每次都会在30秒后启动。另外,我不知道为什么这个延迟会在启动过程中造成问题。批处理通常因为是批处理而延迟。spark流也会被延迟,因为在他们从流源中积累了足够的数据之前,spark流不会启动spark进程,如果有足够的资源,spark流就会赶上。如果您需要实时流媒体,那么在spark提出实时处理解决方案之前,flink可能是更好的选择。
2条答案
按热度按时间lf3rwulv1#
我知道,当您始终请求比集群可用资源更多的资源时,spark有一个默认延迟。这由设置控制:
spark.scheduler.maxRegisteredResourcesWaitingTime
,在此处找到,默认值为30秒。计划开始前等待资源注册的最长时间。
基本上,spark调度器会等待这么长时间,或者直到请求的执行者的数量注册到您的驱动程序。如果您总是请求比集群中可用的执行器更多的执行器,那么您总是会得到这个延迟。
y1aodyip2#
我不认为你可以加快这一点很多。首先,在应用程序启动之前,yarn和application master必须完成很多任务。
Yarn必须检查资源,并决定在哪里旋转新的应用程序。分配应用程序主机,然后应用程序主机与资源管理器通信,找出可用的资源,并为给定的输入数据获取最佳的资源。
然后在executor节点上启动工作线程,启动jvm线程等。此外,由于资源不可用,可能会出现一些延迟。所以,我怀疑你能确定它每次都会在30秒后启动。
另外,我不知道为什么这个延迟会在启动过程中造成问题。
批处理通常因为是批处理而延迟。spark流也会被延迟,因为在他们从流源中积累了足够的数据之前,spark流不会启动spark进程,如果有足够的资源,spark流就会赶上。如果您需要实时流媒体,那么在spark提出实时处理解决方案之前,flink可能是更好的选择。