Apache Spark 基础设施 - 结合计算和存储节点

Apache Spark 基础设施 - 结合计算和存储节点

我有一个关于 Apache Spark 的基础设施问题,我正考虑在一个新建项目中推出它,其中(最多)大约 4 TB 的数据用于任何给定时间的建模。应用领域将是分析,模型的训练可能会在一夜之间批量完成,而不是实时完成。

传统的三层应用程序将工作负载的数据库和应用程序端分开,这意味着可以优化两个不同的服务器以分别执行存储和计算任务。这使得构建系统变得容易,因为各种提供商(如戴尔例如)针对每个应用程序提供优化的产品。

像 Spark 这样的新框架似乎结合了这两个方面,以避免在节点之间移动数据 - 以及由此导致的网络负载 - 但我想知道这在基础设施层面是如何工作的。

人们是否在一台机器上结合了大量的存储和计算能力?对于我的应用程序来说,标准系统拓扑是什么样的?在规划它时我会考虑哪些因素?最后,是否有任何刀片服务器既能提供高存储密度,又能提供良好的计算能力?

我理想情况下希望使用不超过 5 个节点,但我不知道有任何指导资源可以帮助规划这样的实施。在这方面,任何建议都值得赞赏。

答案1

我将回答我自己的问题,因为我找到了一些资源,但是我也会将任何高质量的答案标记为答案,所以请随意贡献。也非常欢迎对我的想法发表评论。

链接中有一些关于为 Spark 配置硬件的信息,据我所知,您基本上可以将 Spark 视为三层堆栈中的应用程序层。因此,您可以在存储节点上运行(例如)Cassandra 或 HBase,并将 Spark 放在具有更强大的 CPU 和内存但可用存储空间较少的“应用程序”节点上。节点之间的 10 Gbps 以太网在这些用例中听起来很重要。

我想这引发了一个问题,即考虑到您最终可能仍需要从 Hbase 数据库中流出数据进行处理,因此如何处理非常大的数据集,但我认为这归结为应用程序架构,因此它超出了本网站的范围。

相关内容