当前位置: 首页 > 知识库问答 >
问题:

Spark集群不能扩展到小数据

翟鹏
2023-03-14

我目前正在一个小型集群(3个节点,32个CPU和128 GB Ram)上使用线性回归(Spark ML)中的基准测试来评估Spark 2.1.0。我只测量了参数计算的时间(不包括启动、数据加载、……)并识别了以下行为。对于小的数据集,0.1MIO-3MIO数据点,测量的时间并没有真正增加,停留在大约40秒。只有对于较大的数据集,如300个Mio数据点,处理时间才会达到200秒。因此,集群似乎根本无法扩展到小型数据集。

我还比较了本地pc上的小数据集和仅使用10个worker和16GB RAM的集群。集群的处理时间要大3倍。那么,这是否被认为是SPARK的正常行为,并且可以通过通信开销来解释,或者是我做错了什么(或者线性回归并不真正具有代表性)?

集群是一个独立的集群(没有Yarn或Mesos),基准测试与90个worker一起提交,每个worker有1个核心和4 GB RAM。

共有1个答案

钮长恨
2023-03-14

最佳集群大小和配置根据数据和作业的性质而变化。在这种情况下,我认为您的直觉是正确的,在较小的数据集上完成作业似乎要花费不成比例的更长时间,因为给定集群的大小(核心和执行器)会带来额外的开销。

请注意,将数据量增加两个数量级只会使处理时间增加5倍。您正在将数据增加到群集设置的最佳大小。

Spark是一个处理大量数据的好工具,但如果数据合适,它就无法与在一台机器上运行一个进程相比较。但是,它可以比其他基于磁盘的分布式处理工具快得多,在这些分布式处理工具中,数据不适合在一台机器上。

 类似资料:
  • Kubernetes是一个高度开放可扩展的架构,可以通过自定义资源类型CRD来定义自己的类型,还可以自己来扩展API服务,用户的使用方式跟Kubernetes的原生对象无异。

  • 扩展说明 当有多个服务提供方时,将多个服务提供方组织成一个集群,并伪装成一个提供方。 扩展接口 org.apache.dubbo.rpc.cluster.Cluster 扩展配置 <dubbo:protocol cluster="xxx" /> <!-- 缺省值配置,如果<dubbo:protocol>没有配置cluster时,使用此配置 --> <dubbo:provider cluster="

  • 本文档提供一个可扩展、高可用的 Seafile 集群架构。这种架构主要是面向较大规模的集群环境,可以通过增加更多的服务器来提升服务性能。如果您只需要高可用特性,请参考3节点高可用集群文档。 架构" class="reference-link"> 架构 Seafile集群方案采用了3层架构: 负载均衡层:将接入的流量分配到 seafile 服务器上。并且可以通过部署多个负载均衡器来实现高可用。 Se

  • 问题内容: 可以说我在 四个 工作进程(伪)上具有以下内容: 在浏览器上… 问题: 由于四个独立的工作进程发送消息,因此我每秒收到 四条 消息。 如何确保邮件仅发送一次? 问题答案: 编辑: 在Socket.IO 1.0+中,现在可以使用更简单的Redis适配器模块,而不是通过多个Redis客户端设置存储。 下面显示的示例看起来更像这样: 如果您有一个主节点需要发布到其他Socket.IO进程,但

  • 在我的LibGdx游戏中,我使用一个ExtendedViewport 我把宽度设为708,高度设为900, 在我的渲染方法中,我将spritebatch缩放到视口的投影 该级别的渲染方法是 PPM等于100 我希望背景占据整个屏幕,因为它的宽度和高度都是我缩放到的(708900) 但看起来是这样的

  • 问题内容: 在启动时,我正在为我们的数据库考虑扩展解决方案。MySQL至少使我感到困惑(至少对我而言),MySQL具有MySQL群集,复制和MySQL群集复制(来自5.1.6版),它是MySQL群集的异步版本。MySQL手册解释了其集群FAQ中的一些差异,但是很难确定何时使用它们中的一个。 我将不胜感激那些熟悉这些解决方案之间的区别以及优点和缺点以及何时建议使用每种解决方案的人的任何建议。 问题答