【发布时间】:2016-07-19 10:36:00
【问题描述】:
我从 spark 开始,从未使用过 Hadoop。我有 10 台 iMac,在其上安装了 Spark 1.6.1 和 Hadoop 2.6。我下载了预编译的版本,并将提取的内容复制到/usr/local/spark/。我使用SCALA_HOME 设置了所有环境变量,更改为PATH 和其他spark conf。我可以同时运行 spark-shell 和 pyspark(使用 anaconda 的 python)。
我已经设置了独立集群;所有节点都显示在我的 Web UI 上。现在,通过使用 python shell(不在本地集群上运行)我关注了this link's python interpreter word count example。
这是我使用的代码
from operator import add
def tokenize(text):
return text.split()
text = sc.textFile("Testing/shakespeare.txt")
words = text.flatMap(tokenize)
wc = words.map(lambda x: (x,1))
counts = wc.reduceByKey(add)
counts.saveAsTextFile("wc")
在从属节点上找不到文件shakespeare.txt,这是给我的错误。环顾四周,我了解到如果我不使用 HDFS,那么该文件应该存在于同一路径上的每个从节点上。这是堆栈跟踪 - github gist
现在,我有几个问题-
RDD 不应该是分布式的吗?也就是说,它应该在所有节点上分发(当在 RDD 上运行操作时)文件,而不是要求我分发它。
我使用 Hadoop 2.6 下载了 spark,但是任何 Hadoop 命令都不能用于创建 HDFS。我提取了在
spark/lib中找到的Hadoop jar 文件,希望能找到一些可执行文件,但什么也没有。那么,spark下载中提供了哪些Hadoop相关文件呢?最后,如何在集群上运行分布式应用程序(spark-submit)或分布式分析(使用 pyspark)?如果我必须创建 HDFS,那么需要哪些额外步骤?还有,这里怎么创建HDFS?
【问题讨论】:
-
你能告诉我们你的代码吗?
-
我已经添加了代码和堆栈跟踪。
-
RDD 不会为你分发文件,这就是为什么你通常会使用像 HDFS 这样的分布式文件系统。
标签: hadoop apache-spark pyspark rdd hadoop2