整合 Tachyon 運行 Spark(譯)

整合 Tachyon 運行 Spark

兼容性

若是你計劃運行Spark 結合使用 Tachyon,如下版本的搭配將共同開箱即用。若是你計劃使用不一樣版本而不是默認支持版本。請從新編譯Spark 的正確版本,經過在 spark/core/pom.xml 中改變 tachyon-client 的版本。html

Spark Version Tachyon Version
1.0.x and Below v0.4.1
1.1.x v0.5.0
1.2.x v0.5.0
1.3.x v0.5.0
1.4.x v0.6.4
1.5.x and Above v0.7.1

Tachyon的輸入/輸出數據

這些額外的先決條件是Spark(0.6 或者更高版本)。咱們還猜想到用戶運行 Tachyon 0.7.1 或更高版本,按照這些指導 Local Mode 或Cluster Mode 並已創建的Tachyon和Hadoop。java

We also assume that the user is running on Tachyon 0.7.1 or later and has set up Tachyon and Hadoop in accordance to these guides Local Mode or Cluster Mode.web

若是你運行Spark 版本低於 1.0.0, 請增長如下內容給 spark/conf/spark-env.sh:shell

export SPARK_CLASSPATH=/pathToTachyon/client/target/tachyon-client-0.7.1-jar-with-dependencies.jar:$SPARK_CLASSPATH

若是運行一個Hadoop 1.x 集羣,建立新文件 spark/conf/core-site.xml 增長如下內容:apache

<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:ide

val conf = new SparkConf()
val sc = new SparkContext(conf)
sc.hadoopConfiguration.set("fs.tachyon.impl", "tachyon.hadoop.TFS")

若是你將 tachyon 結合 zookeeper 容錯模式運行,Hadoop 集羣是 1.x 集羣,另外添加新條目前建立 spark/conf/core-site.xml :oop

<property>
    <name>fs.tachyon-ft.impl</name>
    <value>tachyon.hadoop.TFSFT</value>
</property>

添加如下內容在 spark/conf/spark-env.sh:ui

export SPARK_JAVA_OPTS="
  -Dtachyon.zookeeper.address=zookeeperHost1:2181,zookeeperHost2:2181
  -Dtachyon.usezookeeper=true
  $SPARK_JAVA_OPTS
"

將文件放入 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.exernalBlockStore.url 和 spark.externalBlockStore.baseDir.externalBlockStore.url (默認狀況下:tachyon://localhost:19998 ) 是Tachyon的文件系統中的TachyonStore的 URL地址。spark.externalBlockStore.baseDir(默認 java.io.tmpdir) 是Tachyon文件系統存儲RDDs的基本目錄。在Tachyon中能夠以逗號分隔多個目錄。爲了持久化 RDD 到 Tachyon,你須要使用 StorageLevel.OFF_HEAP 參數,下面是以 Spark shell 的示例:


$ ./spark-shell
$ val rdd = sc.textFile(inputPath)
$ rdd.persist(StorageLevel.OFF_HEAP)


當Spark 應用正在運行,在Tachyon's WebUI 中看看 spark.externalBlockStore.baseDir (默認URI 是 http://localhost:19999)。應該有一堆文件;他們是RDD 數據塊。 目前,當Spark應用運行完成這些文件將被清除掉。

你也可使用Tachyon 做爲Spark 應用的 輸入 和 輸出 源。上面的部分已經顯示了指令。

相關文章
相關標籤/搜索