Mesos 上的独立 Spark 集群访问不同 Hadoop 集群中的 HDFS 数据
Posted
技术标签:
【中文标题】Mesos 上的独立 Spark 集群访问不同 Hadoop 集群中的 HDFS 数据【英文标题】:Standalone Spark cluster on Mesos accessing HDFS data in a different Hadoop cluster 【发布时间】:2017-08-28 08:38:36 【问题描述】:我们有一个 Hadoop 集群,其中包含 275 个节点的数据节点(55Tb 总内存,12000 个 VCore)。 这个集群与几个项目共享,我们有一个资源有限的 YARN 队列分配给我们。
为了提高性能,我们正在考虑为我们的项目构建一个单独的 Spark 集群(在同一网络中的 Mesos 上)并访问 Hadoop 集群上的 HDFS 数据。
如 Spark 文档中所述:https://spark.apache.org/docs/latest/spark-standalone.html#running-alongside-hadoop
我的问题是:
这不违反 Hadoop 的哲学:“将计算转移到数据”吗?
为了获得最佳性能,新 Spark 集群需要多少节点?
--编辑--
-
我想知道这个数据加载是如何发生的。例如,如果我对表执行 SparkSQL 查询,它是否通过从 Hadoop 集群加载数据在 Mesos Spark 集群中创建 RDD,然后对生成的 RDD 进行处理?
这个跨集群数据IO不会影响性能吗?由于通常在 YARN-Spark 设置中,RDD 和数据位于相同的节点中。
【问题讨论】:
为什么不在 Mesos 中运行 HDFS?Doesn't this cross cluster data IO impact the performance ?
- 是的。但是您仍然在同一个网络中,如下面的答案所述
【参考方案1】:
这不是违背 Hadoop 的哲学:“将计算转移到数据”吗?
一般来说是的。特别是如果这些节点位于不同的数据中心。越近越好。现在,我读到它们在同一个网络中:
在同一网络中的 Mesos 上
测量机器之间的延迟。只有这样才能判断好不好。
为了获得最佳性能,新 Spark 集群需要多少节点?
最适合谁?这仅取决于您的用例。
例如,如果我对表执行 SparkSQL 查询,它是否通过从 Hadoop 集群加载数据在 Mesos Spark 集群中创建 RDD,然后对生成的 RDD 进行处理?
是的,虽然它不是“读取所有内容然后处理它”的固定过程 - 它不断读取、处理然后写下“部分结果”,因为您可能猜到,它无法加载 1 TB 的数据记忆。
这种跨集群数据 IO 不会影响性能吗?由于通常在 YARN-Spark 设置中,RDD 和数据位于相同的节点中。
绝对!然而,正如我已经提到的,如果你想要更精确的估计,你至少应该测量这个网络中节点之间的延迟——也许一些节点比其他节点更接近 HDFS 机器。
如果没有测量(延迟、性能测试等)和对网络拓扑的仔细分析,这纯粹是推测。
【讨论】:
修改第三题以上是关于Mesos 上的独立 Spark 集群访问不同 Hadoop 集群中的 HDFS 数据的主要内容,如果未能解决你的问题,请参考以下文章
大数据平台实战(05)深入Spark Cluster集群模式YARN vs Mesos vs Standalone vs K8s