Amazon web services 火花罐;spark.deploy.spreadOut=false";在S3上提供性能效益
我理解设置为true的“spark.deploy.spreadOut”对HDFS有好处,但对于S3,设置为false是否比true有好处?如果您运行的是Hadoop和HDFS,则使用该属性适用的spark单机调度器对您没有好处。相反,您应该运行纱线,由ResourceManager确定执行者的分布方式 如果您正在EC2中运行独立调度器,则设置该属性将有所帮助,默认值为true 换句话说,在这里,从哪里读取数据不是决定因素,主机的部署模式是Amazon web services 火花罐;spark.deploy.spreadOut=false";在S3上提供性能效益,amazon-web-services,apache-spark,hadoop,amazon-s3,hdfs,Amazon Web Services,Apache Spark,Hadoop,Amazon S3,Hdfs,我理解设置为true的“spark.deploy.spreadOut”对HDFS有好处,但对于S3,设置为false是否比true有好处?如果您运行的是Hadoop和HDFS,则使用该属性适用的spark单机调度器对您没有好处。相反,您应该运行纱线,由ResourceManager确定执行者的分布方式 如果您正在EC2中运行独立调度器,则设置该属性将有所帮助,默认值为true 换句话说,在这里,从哪里读取数据不是决定因素,主机的部署模式是 更好的性能优势来自于您尝试读取的文件数量,以及存储数据的
更好的性能优势来自于您尝试读取的文件数量,以及存储数据的格式。这实际上取决于您的工作负载 如果S3访问量很大,并且受到实例网络IO的限制, 设置spark.deploy.spreadOut=true会有所帮助,因为它会将其分布到更多实例上,从而增加应用程序可用的总网络带宽 但对于大多数工作负载来说,这没有什么区别 对于“spark.deploy.spreadOut”参数也有成本考虑。 如果您的spark处理是大规模的,您可能会使用多个AZ。 默认值“spark.deploy.spreadOut”=true将导致您的工作人员在数据洗牌时生成更多网络流量,从而导致AZ间流量 AWS上的AZ间流量可能代价高昂 如果网络流量足够大。
因此,我们通过spark.deploy.spreadOut对应用程序进行集群“=false,而不是因为成本问题而分散它们。在独立计划程序中分散=false或=true会更好吗?我想不出一个合理的场景,为什么您希望它是假的。换句话说,由于您无法控制执行者任务的开始位置,因此您不能说一些与“仅在这些CPU+内存非常高的机器上运行执行器,但不要运行其他机器”