【问题标题】:How to specify where to read data from HDFS when submitting Spark application?提交 Spark 应用程序时如何指定从 HDFS 读取数据的位置?
【发布时间】:2017-12-03 19:11:20
【问题描述】:

我一直在尝试在三台机器(master、slave1 和 slave2)上部署 spark 多节点集群。我已经成功部署了 spark 集群,但我对如何将我的 HDFS 数据分布在从属服务器上感到困惑?从客户端提交应用程序时,我是否需要手动将数据放在从节点上?如何指定从何处读取数据?我搜索了多个论坛,但无法弄清楚如何在不使用 Hadoop 的情况下将 HDFS 与 Spark 一起使用。

【问题讨论】:

    标签: apache-spark hdfs


    【解决方案1】:

    tl;dr 在 Hadoop HDFS 上存储要由 Spark 应用程序处理的文件,Spark 执行程序将被告知如何访问它们。


    来自HDFS Users Guide

    本文档是使用 Hadoop 分布式文件系统 (HDFS) 作为 Hadoop 集群的一部分或作为独立的通用分布式文件系统的用户的起点。

    HDFS 集群主要由管理文件系统元数据的 NameNode 和存储实际数据的 DataNode 组成。

    因此,HDFS 是一个仅仅是文件系统,您可以使用它来存储文件并在分布式应用程序中使用它们,包括。 Spark 应用程序。


    令我惊讶的是,只有在 HDFS Architecture 中,您才能找到 HDFS URI,即 hdfs://localhost:8020/user/hadoop/delete/test1,它是属于用户 hadoop 的资源 delete/test1 的 HDFS URL。

    hdfs 开头的 URL 指向一个 HDFS,在上面的示例中由位于 localhost:8020 的 NameNode 管理。

    这意味着 HDFS 不需要 Hadoop YARN,但通常一起使用,因为它们结合在一起并且一起使用很简单。


    从客户端提交应用程序时,我是否需要手动将数据放在我的从节点上?如何指定从哪里读取数据?

    Spark 支持带或不带 Hadoop YARN 的 Hadoop HDFS。 cluster manager(又名 主 URL)是 HDFS 的正交关注点。

    总结一下,只需使用hdfs://hostname:port/path/to/directory with 即可访问 HDFS 上的文件。

    【讨论】:

      猜你喜欢
      • 2017-11-27
      • 1970-01-01
      • 2020-06-05
      • 1970-01-01
      • 1970-01-01
      • 2019-08-22
      • 2019-09-26
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多