在Tachyon上面運行Spark


兼容性


默認的,Spark 1.0.x版本綁定的是Tachyon 0.4.1版本.如果你的Tachyon版本不同,那需要在這個文件: 

spark/core/pom.xml 

中指定Tachyon的版本,然後重新編譯正確的版本的Spark.



與Tachyon進行數據IO


這一部分的額外前提是Spark(0.6 或者後續版本).另外,假設你在運行Tachyon`site`.`TACHYON_RELEASED_VERSION` 或後續版本的時候通過查閱資料已經搭建好Tachyon和Hadoop 的本地模式或者集羣模式.

如果運行的Spark版本低於1.0.0,那麻煩你把如下內容添加到這個文件:

spark/conf/spark-env.sh 

中:


export SPARK_CLASSPATH=/pathToTachyon/client/target/tachyon-client-`site`.`TACHYON_RELEASED_VERSION`-jar-with-dependencies.jar:$SPARK_CLASSPATH


如果是跑在 hadoop 1.x 版本的集羣上,那麼需要創建一個新的文件:

spark/conf/core-site.xml  

並把如下內容添加進去:


<configuration>

  <property>

    <name>fs.tachyon.impl</name>

    <value>tachyon.hadoop.TFS</value>

  </property>

</configuration>


將文件X寫入HDFS,然後執行如下Spark Shell:


$ ./spark-shell

$ val s = sc.textFile("tachyon://localhost:19998/X")

$ s.count()

$ s.saveAsTextFile("tachyon://localhost:19998/Y")


查看 http://localhost:19999 的話會發現會有個輸出文件 Y 包含有 輸入文件 X 內單詞的數量(一個單詞一行?).

將文件X寫入HDFS,然後執行如下Spark Shell:

如果你通過sbt 或者 其他利用sbt的框架調用 Spark 的job:


val conf = new SparkConf()

val sc = new SparkContext(conf)

sc.hadoopConfiguration.set("fs.tachyon.impl", "tachyon.hadoop.TFS")


如果你的hadoop 集羣版本爲1.x 並且 以Zookeeper的容錯模式 運行Tachyon,需要在之前創建的xml文件: spark/conf/core-site.xml 中添加如下實體(屬性):


<property>

    <name>fs.tachyon-ft.impl</name>

    <value>tachyon.hadoop.TFS</value>

</property>


在這個文件 spark/conf/spark-env.sh 中添加如下內容:

export SPARK_JAVA_OPTS="

  -Dtachyon.zookeeper.address=zookeeperHost1:2181,zookeeperHost2:2181

  -Dtachyon.usezookeeper=true

  $SPARK_JAVA_OPTS

"

將文件 X 寫入HDFS. 當運行Spark Shell的時候你可以指定任何的Tachyon Master:


$ ./spark-shell

$ val s = sc.textFile("tachyon-ft://stanbyHost:19998/X")

$ s.count()

$ s.saveAsTextFile("tachyon-ft://activeHost:19998/Y")


將 Spark RDDs 在 Tachyon中持久化


爲滿足這個特點,你需要運行 Spark (1.0 或後續版本) 以及 Tachyon (0.4.1 或後續版本). 詳細優點可查閱 Spark Doc .

Spark 應用程序需要設置兩個參數: spark.tachyonStore.url 以及 spark.tachyonStore.baseDir

spark.tachyonStore.url (默認值爲 tachyon://localhost:19998) 是處於TachyonStore的Tachyon 文件系統的URL. spark.tachyonStore.baseDir (默認值爲 java.io.tmpdir) 存儲RDDs 的Tachyon 文件系統的根目錄. 他可以爲一個由逗號隔開的list,這個list由Tachyon衆多文件夾組成 .

爲了將Spark RDDs 在 Tachyon中持久化, 你需要用到這個參數:  StorageLevel.OFF_HEAP . 使用Spark Shell的例子如下:


$ ./spark-shell

$ val rdd = sc.textFile(inputPath)

$ rdd.persist(StorageLevel.OFF_HEAP)


當Spark 應用程序在運行的時候,你可以在Tachyon 的Web界面(默認 URI 爲http://localhost:19999)查看 spark.tachyonStore.baseDir . 你會發現有很多文件在那,他們是RDD塊.通常來講,當Spark 應用程序 運行結束的時候這些文件會被清理乾淨.你也可在Spark 應用中,將Tachyon 作爲輸入輸出源來使用


#這是我第一次翻譯,如有不足,請各位大神們支持^ ^

#By Lucosax


Yang

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章