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

时间:2017-08-28 08:38:36

标签: hadoop apache-spark apache-spark-sql mesos

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

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

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

我的问题是:

  1. 这不符合Hadoop的理念:“将计算转移到数据”吗?

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

  3. - 编辑 -

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

1 个答案:

答案 0 :(得分:0)

  

这不符合Hadoop的理念:"将计算转移到数据" ?

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

  

在同一网络中的Mesos上

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

  

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

最适合谁?它只取决于你的用例。

  

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

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

  

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

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

没有测量(无论是延迟,性能测试等)以及对网络拓扑的仔细分析,这都是纯粹的推测。