首页 > 解决方案 > 使用 spark 和 HDFS 作为文件存储系统和 YA​​RN 作为资源管理器的优势是什么?

问题描述

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

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

标签: apache-sparkhadoophdfs

解决方案


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

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

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

如果您确信 MapReduceV2 可以比 Spark 更好,我会鼓励您查看 Tez


推荐阅读