我一直在尝试在三台计算机(master,slave1和slave2)上部署spark多节点集群。我已成功部署了火花群,但我对如何在奴隶上分发我的HDFS数据感到困惑?我是否需要手动将数据放在我的从属节点上?如何指定从客户端提交应用程序时从何处读取数据?我已经搜索了多个论坛但是我们无法在不使用Hadoop的情况下弄清楚如何在Spark中使用HDFS。
答案 0 :(得分:1)
tl; dr 存储要由Hadoop HDFS和Spark执行程序上的Spark应用程序处理的文件将被告知如何访问它们。
本文档是使用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上的文件。