Apache Spark基础架构 – 结合计算和存储节点

我有一个关于Apache Spark的基础设施问题,我正在研究在一个新build项目中推出的(至多)大约4 TB用于build模的数据。 应用领域将是分析,模型的培训可能会在一夜之间完成,而不是实时进行。

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

像Spark这样的新框架似乎将两个方面结合起来,以避免在节点之间移动数据 – 以及由此造成的networking负载 – 但是我想知道这是如何在基础设施级别工作的。

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

理想情况下,我最好喜欢使用不超过5个节点,但我不知道任何指导资源来帮助规划这样的实现。 任何build议在这方面表示赞赏。

我会回答我自己的问题,因为我已经find了一些资源,但是我也会标记任何高质量的答案作为答案,所以随时可以贡献。 这里对我的想法的评论也非常值得欢迎。

这个链接有一些关于为Sparkconfiguration硬件的信息,从我可以理解的基本上可以把Spark作为三层堆栈中的应用层。 因此,您可能会在存储节点上运行(例如)Cassandra或HBase,并将Spark放在具有更强的CPU和内存但“可用”较less的“应用程序”节点上。 节点之间的10 Gbps以太网听起来像是在这些用例中非常重要。

我想这就提出了一个问题,就是如何在一个非常大的数据集上进行处理,因为你可能最终还是从Hbase数据库中stream出数据来完成处理,但是我认为这归结于应用程序架构,所以它会超出了本网站的范围。