在Spark的常见问题解答中,它明确表示不必使用HDFS:
我需要Hadoop来运行Spark吗?
不,但如果您在群集上运行,则需要某种形式的共享文件系统(例如,NFS安装在每个节点上的相同路径上).如果您有这种类型的文件系统,则可以在独立模式下部署Spark.
那么,如果我不打算使用Hadoop MapReduce,那么使用Apache Spark和HDFS与其他分布式文件系统(如NFS)相比有哪些优点/缺点?如果我使用NFS而不是HDFS用于节点存储(用于检查点,随机溢出等),我是否会遗漏一个重要的功能?
我在同一台机器上有一个 Spark 集群和一个 Hdfs。我在每台机器的本地文件系统和 hdfs 分布式文件系统上复制了一个大约 3GB 的文本文件。
我有一个简单的字数统计 pyspark 程序。
如果我提交从本地文件系统读取文件的程序,它会持续大约 33 秒。如果我提交从 hdfs 读取文件的程序,它会持续大约 46 秒。
为什么 ?我期望完全相反的结果。
在 sgvd 的请求后添加:
16从1主
没有特定设置的 Spark Standalone(复制因子 3)
版本 1.5.2
import sys
sys.path.insert(0, '/usr/local/spark/python/')
sys.path.insert(0, '/usr/local/spark/python/lib/py4j-0.8.2.1-src.zip')
import os
os.environ['SPARK_HOME']='/usr/local/spark'
os.environ['JAVA_HOME']='/usr/local/java'
from pyspark import SparkContext
#conf = pyspark.SparkConf().set<conf settings>
if sys.argv[1] == 'local':
print 'Esecuzine in modalita local file'
sc = SparkContext('spark://192.168.2.11:7077','Test Local file')
rdd = sc.textFile('/root/test2')
else:
print 'Esecuzine in modalita hdfs'
sc = SparkContext('spark://192.168.2.11:7077','Test HDFS file')
rdd = sc.textFile('hdfs://192.168.2.11:9000/data/test2') …Run Code Online (Sandbox Code Playgroud)