在启动执行程序时,Spark上的纱线处理数据位置
问题描述:
我正在考虑Spark执行程序的静态分配。 纱线上的Spark是否考虑启动执行程序时在Spark应用程序中使用的原始输入数据集的数据局部性。在启动执行程序时,Spark上的纱线处理数据位置
如果确实如此,它会如何做,因为火花执行器在火花上下文被初始化时被请求和分配。在Spark应用程序中可能有多个原始输入数据集可能在物理上驻留在许多不同的数据节点上。我们无法在所有这些节点上运行执行程序。
我知道spark执行器上的任务调度时(如提到的https://spark.apache.org/docs/latest/tuning.html#data-locality),需要处理数据局部性。
答
你在说
火花负责数据局部性的,而在执行
调度任务时,纱启动一个执行者,它不知道数据所在的位置是正确的。因此,在理想情况下,您可以在群集的所有节点上启动执行程序。但是,更现实的情况是,您只能在一部分节点上启动。
现在,这并不一定是坏事,因为HDFS本质上支持冗余,这意味着在火花请求数据的节点上存在数据的副本。