我在同一臺機器上有一個Spark集羣和一個Hdfs。 我已經在每臺機器的本地文件系統和hdfs分佈式文件系統上覆制了一個單獨的文本文件,大約爲3Gbytes。Spark本地vs hdfs permormance
我有一個簡單的字數pyspark程序。
如果我提交從本地文件系統讀取文件的程序,它會持續約33秒。 如果我提交從hdfs讀取文件的程序,它持續約46秒。
爲什麼?我期待完全相反的結果。
增加sgvd的請求後:
16奴隸1個主
星火獨立的,沒有特別的設置(複製因子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')
rdd1 = rdd.flatMap(lambda x: x.split(' ')).map(lambda x:(x,1)).reduceByKey(lambda x,y:x+y)
topFive = rdd1.takeOrdered(5,key=lambda x: -x[1])
print topFive
它可以依靠很多東西。你的集羣有多大?你使用什麼集羣管理器?任何自定義設置?什麼Spark版本?你能顯示你的代碼嗎? – sgvd
我在問題的空間回答。 – arj