使用 spark 和 HDFS 作为文件存储系统和 YA​​RN 作为资源管理器的优势是啥?

Posted

技术标签:

【中文标题】使用 spark 和 HDFS 作为文件存储系统和 YA​​RN 作为资源管理器的优势是啥?【英文标题】:What is the advantage of using spark with HDFS as file storage system and YARN as resource manager?使用 spark 和 HDFS 作为文件存储系统和 YA​​RN 作为资源管理器的优势是什么? 【发布时间】:2019-01-26 17:35:53 【问题描述】:

我试图了解 spark 是否可以替代用于分析大数据的普通 MapReduce 方法。由于spark将数据的操作保存在内存中,所以在使用HDFS作为spark的存储系统时,是否利用了HDFS的分布式存储优势?例如,假设我有 100GB 的 CSV 文件存储在 HDFS 中,现在我想对其进行分析。如果我将其从 HDFS 加载到 spark ,将 spark 将完整的数据加载到内存中以进行转换,或者它将使用分布式环境来完成 HDFS 为 Storage 提供的工作,该工作由用 hadoop 编写的 MapReduce 程序利用。如果不是,那么使用 spark 优于 HDFS 的优势是什么?

PS:我知道如果 RAM 溢出,磁盘上会出现火花溢出,但这种溢出是否会发生在集群的每个节点(假设每个节点 5 GB)的数据或完整数据(100 GB)上?

【问题讨论】:

嗨。这是一个广泛的问题,其标题和文本不太适合。例如。我看不到的纱线。 YARN 是在整个问题中处理 Spark 作业的资源管理器。 但您可以单独使用 Spark。 是的,但我想了解使用它相对于 HDFS 和 YARN 的优势。 我无法从文本中收集到这一点。只是试图帮助澄清。 【参考方案1】:

如果没有足够的内存来读取文件,Spark 作业可以配置为溢出到本地执行器磁盘。或者,您可以在 Spark 阶段之间启用 HDFS 快照和缓存。

您提到了 CSV,这在 Hadoop 中通常是一种糟糕的格式。如果你有 100GB 的 CSV,如果用 Parquet 或 ORC 编写,你可以轻松地拥有不到一半......

归根结底,您需要一些处理引擎和一些存储层。例如,在 Mesos 或 Kubernetes 上的 Spark 可能和在 YARN 上一样工作,但它们是独立的系统,不像 HDFS 和 YARN 那样捆绑和捆绑在一起。另外,与 MapReduce 一样,在使用 YARN 时,您将执行转移到数据节点上的 NodeManagers,而不是通过网络拉取数据,您将在其他 Spark 执行模式下这样做。 NameNode 和 ResourceManagers 协调这种通信,以便在哪里存储和处理数据

如果您确信 MapReduceV2 可以比 Spark 更好,我建议您改用 Tez

【讨论】:

以上是关于使用 spark 和 HDFS 作为文件存储系统和 YA​​RN 作为资源管理器的优势是啥?的主要内容,如果未能解决你的问题,请参考以下文章

Spark——spark RDD中的partition和hdfs中的block的关系

spark与hadoop区别与联系

将数据作为文本文件从 spark 保存到 hdfs

扫盲:Hadoop分布式文件系统(HDFS)基础概念讲解!

hdfs学习

Hadoop&Spark搭建