如何在提交Spark应用程序时指定从HDFS读取数据的位置?

时间:2017-12-03 19:11:21

标签: apache-spark hdfs

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

1 个答案:

答案 0 :(得分: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,它是属于用户{delete/test1的资源hadoop的HDFS URL。 1}}。

hdfs开头的网址指向HDFS,上述示例中的网址由localhost:8020的NameNode管理。

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

  

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

Spark支持Hadoop HDFS,无论是否有Hadoop YARN。 cluster manager(又名主网址)是HDFS的正交关注点。

将其包装起来,只需使用hdfs://hostname:port/path/to/directory来访问HDFS上的文件。

相关问题