使用 spark 和 HDFS 作为文件存储系统和 YARN 作为资源管理器的优势是啥?
Posted
技术标签:
【中文标题】使用 spark 和 HDFS 作为文件存储系统和 YARN 作为资源管理器的优势是啥?【英文标题】:What is the advantage of using spark with HDFS as file storage system and YARN as resource manager?使用 spark 和 HDFS 作为文件存储系统和 YARN 作为资源管理器的优势是什么? 【发布时间】: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 作为文件存储系统和 YARN 作为资源管理器的优势是啥?的主要内容,如果未能解决你的问题,请参考以下文章