Mesos 上的独立 Spark 集群访问不同 Hadoop 集群中的 HDFS 数据



我们有一个Hadoop集群,数据节点有275个节点(总内存55T,12000个VCores(。 这个集群与几个项目共享,我们有一个资源有限的 YARN 队列分配给我们。

为了提高性能,我们正在考虑为我们的项目构建一个单独的Spark集群(在同一网络中的Mesos上(,并在Hadoop集群上访问HDFS数据。

如Spark文档中所述: https://spark.apache.org/docs/latest/spark-standalone.html#running-alongside-hadoop

我的问题是:

  1. 这不是违背了Hadoop的哲学:"将计算转移到数据上"吗?

  2. 为了获得最佳性能,新的 Spark 群集需要多少节点?

--编辑--

  1. 我想知道这个数据加载是如何发生的。例如,如果我对表执行SparkSQL查询,它是否通过从Hadoop集群加载数据在Mesos Spark集群中创建RDD,然后在生成的RDD上进行处理? 这种跨集群数据 IO 不会影响性能吗?由于通常在YARN-Spark设置中,RDD和数据位于相同的节点中。
这不是

违背Hadoop的哲学:"将计算转移到数据"吗?

一般来说是的。特别是如果这些节点位于不同的数据中心。越近越好。现在,我读到它们在同一个网络中:

在同一网络中的中观上

测量计算机之间的延迟。只有这样,你才能判断它是否好。

为了获得最佳性能,新的 Spark 群集需要多少节点?

最适合谁?这仅取决于您的用例。

例如,如果我对表执行SparkSQL查询,它是否通过从Hadoop集群加载数据在Mesos Spark集群中创建RDD,然后在生成的RDD上进行处理?

是的,虽然它不是一个固定的过程"读取所有内容然后处理它"——它不断地读取、处理然后写下"部分结果",因为正如您可能猜到的那样,它无法在内存中加载 1 TB 的数据。

这种跨集群数据 IO 不会影响性能吗?由于通常在YARN-Spark设置中,RDD和数据位于相同的节点中。

绝对!但是,正如我已经提到的,如果您想要更精确的估计,您至少应该测量该网络中节点之间的延迟 - 也许某些节点比其他节点更接近HDFS机器。

如果没有测量(无论是延迟、性能测试等(和对网络拓扑的仔细分析,这纯粹是推测。

相关内容

  • 没有找到相关文章