整合 Tachyon 運行 Hadoop MapReduce(譯)

整合 Tachyon 運行 Hadoop MapReduce

本指南描述如何使Tachyon 與 Hadoop MapReduce 結合運行,這樣你能夠很容易運行 hadoop  MapReduce 程序文件存儲在 Tachyon上。html

前提

這部分額外的首要條件數是已經 Java咱們也假設你已經安裝了 Tachyon 和 Hadoop 根據 Local Mode or Cluster Modegit

若是運行 Hadoop 1.x 集羣,確保 hadoop/conf/core-site.xml 文件中你的Hadoop 安裝的 conf 目錄添加過如下屬性:github

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

這將運行你的 MapReduce 任務使用 Tachyon 去輸入和輸出文件。若是你爲Tachyon 使用 HDFS做爲底層存儲, 可能須要將這些屬性添加到 hdfs-site.xml 配置文件中。(譯者注:MapReudce計算的過程當中,會有中間結果的輸出到磁盤,這裏使用Tachyon後,中間結果將會放到Tachyon中,Tachyon中的結果爲了保證高容錯,須要保持到HDFS上,這點須要注意,不然要是 Tachyon掛了,Tachyon中的數據不能確保正常使用)web

若是集羣式 2.x 版本的集羣,這些屬性就不須要添加了。緩存

分佈式 Tachyon 運行

爲了能使 MapReduce任務經過Tachyon 使用文件,咱們須要分發 Tachyon jar 到集羣全部的節點上。這將容許的 TaskTracker 和 JobClient 擁有全部必要的可執行經過 Tachyon 的接口。咱們根據 Cloudera 指導(guide)提供了三種分發 jars 選項的概述。網絡

假設 Tachyon被用在突出用途,最好是確保 Tachyon jar將長期的駐留在每一個節點上,全部咱們不依賴 Hadoop DistributedCache 避免分發 jar 到每個節點帶來的網絡開銷(選項 1),打包 Tachyon 不會顯著增長咱們 job  jar 文件大小。正因爲這個緣由,強烈建議考慮這三個選項的三個方面,經過在每一個節點安裝 Tachyon jar.分佈式

  • 爲了在每一個節點安裝 Tachyon,你須要把這個 tachyon-client-0.7.1-jar-with-dependencies.jar 放置在目標目錄  /pathToTachyon/clients/client/target 下,每一個節點的 $HADOOP_HOME/lib 目錄中。而後,重啓全部的 TaskTrackers。這種方法的一個缺點是每一個新版本更新 jars 必須從新安裝。ide

  • 當使用 hadoop jar ......您也能夠經過使用-libjars命令行選項運行 job,指定 /pathToTachyon/clients/client/target/tachyon-client-0.7.1-jar-with-dependencies.jar 做爲參數,把jar 放到hadoop的分佈式緩存裏,在不頻繁更新Tachyon jar的狀況下,能夠(可靠)獲取。oop

  • For those interested in the second option, please revisit the Cloudera guide for more assistance. One must simply package the Tachyon jar in the lib subdirectory of the job jar. This option is the most undesirable since for every change in Tachyon, we must recreate the job jar, thereby incurring a network cost for every job by increasing the size of the job jar.ui

爲了確保 Tachyon 在 JobClient 執行可用,須要將  Tachyon jar 放置在 $HADOOP_HOME/lib 目錄下,或者經過改變 hadoop-env.sh 修改 HADOOP_CLASSPATH:

$ export HADOOP_CLASSPATH=/pathToTachyon/clients/client/target/tachyon-client-0.7.1-jar-with-dependencies.jar

這將容許代碼建立和提交 job 必要時引用Tachyon。This will allow the code that creates the Job and submits it to reference Tachyon if necessary.

示例

爲簡單起見,咱們假設僞分佈式 Hadoop 集羣。

$ cd $HADOOP_HOME
$ ./bin/stop-all.sh
$ ./bin/start-all.sh

因爲咱們是僞分佈是集羣,複製Tachyon jar 到  $HADOOP_HOME/lib 使其可同時的可被 TaskTracker 和 JobClient 執行是可用的。 如今,咱們能夠經過如下方式來驗證它:

$ cd $HADOOP_HOME
$ ./bin/hadoop jar hadoop-examples-1.0.4.jar wordcount -libjars /pathToTachyon/clients/client/target/tachyon-client-0.7.1-jar-with-dependencies.jar tachyon://localhost:19998/X tachyon://localhost:19998/X-wc

X 在Tachyon 存在文件,wordcount 任務結果在 X-wc 目錄下。

例如,你有text 文件在HDFS目錄 /user/hduser/getenberg/ ,你能夠運行如下:

$ cd $HADOOP_HOME
$ ./bin/hadoop jar hadoop-examples-1.0.4.jar wordcount -libjars /pathToTachyon/clients/client/target/tachyon-client-0.7.1-jar-with-dependencies.jar tachyon://localhost:19998/user/hduser/gutenberg tachyon://localhost:19998/user/hduser/output

以上命令通知 wordcount 從HDFS目錄 /user/hduser/gutenberg/  加載文件到Tachyon,而後將輸出結果保持到 Tachyon 的 /user/hduser/output 。

相關文章
相關標籤/搜索