【发布时间】:2015-10-13 06:20:36
【问题描述】:
我在 Amazon Web Service (AWS)-EC2 上使用 Apache-Spark 来加载和处理数据。我创建了一个主节点和两个从节点。在主节点上,我有一个目录data,其中包含要处理的所有 csv 格式的数据文件。
现在在我们提交驱动程序(这是我的python代码)运行之前,我们需要将数据目录data从主节点复制到所有从节点。根据我的理解,我认为这是因为每个从节点都需要知道数据文件在自己的本地文件系统中的位置,以便它可以加载数据文件。例如,
from pyspark import SparkConf, SparkContext
### Initialize the SparkContext
conf = SparkConf().setAppName("ruofan").setMaster("local")
sc = SparkContext(conf = conf)
### Create a RDD containing metadata about files in directory "data"
datafile = sc.wholeTextFiles("/root/data") ### Read data directory
### Collect files from the RDD
datafile.collect()
每个从节点运行任务时,会从本地文件系统中加载数据文件。
但是,在我们提交我的应用程序以运行之前,我们还必须使用 $ ./ephemeral-hdfs/bin/hadoop fs -put /root/data/ ~ 将目录 data 放入 Hadoop 分布式文件系统 (HDFS)。
现在我对这个过程感到困惑。每个从节点是否从自己的本地文件系统或 HDFS 加载数据文件?如果它从本地文件系统加载数据,为什么我们需要将data放入HDFS?如果有人可以帮助我,我将不胜感激。
【问题讨论】:
-
我不太确定我是否理解这里的问题。如果您的数据在 s3 上可用,为什么要尝试将其放在 hdfs 上?
-
只是一个错字。已经修好了。
标签: amazon-web-services amazon-ec2 apache-spark filesystems hdfs