我们有一个Hadoop集群,其数据节点为275个节点(55Tb总内存,12000个VCores)。 这个集群与几个项目共享,我们有一个YARN队列,用有限的资源分配给我们。
为了提高性能,我们正在考虑为我们的项目(在同一网络中的Mesos上)构建一个单独的Spark集群,并访问Hadoop集群上的HDFS数据。
如Spark文档中所述:https://spark.apache.org/docs/latest/spark-standalone.html#running-alongside-hadoop
我的问题是:
这不符合Hadoop的理念:“将计算转移到数据”吗?
为了获得最佳性能,我们需要为新Spark集群提供多少节点?
- 编辑 -
答案 0 :(得分:0)
这不符合Hadoop的理念:"将计算转移到数据" ?
总的来说是的。特别是如果这些节点位于不同的数据中心。越接近越好。现在,我读到他们在同一个网络中:
在同一网络中的Mesos上
测量机器之间的延迟。只有这样你才能判断它是否有好处。
为了获得最佳性能,我们需要为新Spark集群提供多少节点?
最适合谁?它只取决于你的用例。
例如,如果我在表上执行SparkSQL查询,是否通过从Hadoop集群加载数据在Mesos Spark集群中创建RDD,然后对生成的RDD进行处理?
是的,虽然它不是一个固定的过程"阅读所有内容然后处理它" - 它不断地读取,处理然后写下部分结果",因为正如你猜测的那样,它无法在内存中加载1 TB的数据。
这个跨群集数据IO不会影响性能吗?由于通常在YARN-Spark设置中,RDD和数据位于相同的节点中。
当然!但是,正如我已经提到的,如果您想要更精确的估计,您应该至少测量该网络中节点之间的延迟 - 也许某些节点比其他节点更接近HDFS机器。
没有测量(无论是延迟,性能测试等)以及对网络拓扑的仔细分析,这都是纯粹的推测。