分散構成tachyonとHadoop例MapReduceの実行


--------この文章は、tachyon公式サイトのチュートリアルに従ってインストールし、記録します.
(ローカルインストールtachyon詳細:http://blog.csdn.net/u012587561/article/details/51039977 )
筆者の運転環境:
tachyon0.8.2
hadoop2.7.1
ubuntu14.04(仮想マシン3台)Hadoop 2を使用する.x
もしあなたが2.xバージョンのHadoopクラスタでは、上記のようにcore-site.xmlファイルに属性を追加する必要はありません.しかし、場合によってはjava.io.IOException: No FileSystem for scheme: tachyonのエラーに遭遇する可能性があります.例えば、YARNがTachyonファイルにアクセスしようとすると、このエラーが発生する可能性があります.エラーが発生した場合は、core-site.xmlファイルにこれらのプロパティを追加し、YARNを再起動します.
<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>

Tachyonクライアントのコンパイル
TachyonとHadoopバージョンを対応させるには、Tachyon ClientのJarパッケージを再コンパイルし、Hadoopバージョンを指定する必要があります.Tachyonディレクトリで次のコマンドを実行できます.
 $ mvn install -Dhadoop.version=<YOUR_HADOOP_VERSION>
    <YOUR_HADOOP_VERSION>バージョンでは、さまざまなHadoopリリースがサポートされています.たとえば、mvn install -Dhadoop.version=2.7.1では、Apache Hadoop 2.7.1バージョンのTachyonがコンパイルされます.他のリリースのサポート情報を取得するには、Tachyonマスターブランチの構築ページにアクセスしてください.
コンパイルに成功すると、新しいTachyonクライアントJarパッケージは次のディレクトリで入手できます.
./clients/client/target/tachyon-client-0.8.2-jar-with-dependencies.jar

分布式配置 tachyon 并运行Hadoop例子 MapReduce_第1张图片
        
以下の内容はこのjarパッケージを利用して展示します.
Hadoopの設定
TachyonクライアントJarパッケージをJobClientに有効にするには、hadoop-env.shファイルでHADOOP_CLASSPATHを次のように変更します.
$ export HADOOP_CLASSPATH=/<PATH_TO_TACHYON>/clients/client/target/tachyon-client-0.8.2-jar-with-dependencies.jar

(当然,也可以将该jar包放在其他地方,修改成相应的路径)

该配置让代码可以使用Tachyon的URI来创建和提交作业。

分发Tachyon客户端Jar包

为了让MapRedude作业可以在Tachyon上读写文件,Tachyon客户端Jar包必须被分发到集群的所有节点上。这使得TaskTracker和JobClient包含所有与Tachyon进行交互访问所需要的可执行文件。

如何从Cloudera上加入第三方库这篇文档介绍了分发Jar包的多种方式。文档中建议通过使用命令行的-libjars选项,使用分布式缓存来分发Tachyon客户端Jar包。另一种分发客户端Jar包的方式就是手动将其分发到Hadoop节点上。下面就是这两种主流方法的介绍:

1.使用-libjars命令行选项 你可以在使用hadoop jar ...的时候加入-libjars命令行选项,指定/<PATH_TO_TACHYON>/core/client/target/tachyon-client-0.8.2-jar-with-dependencies.jar为参数。这条命令会把该Jar包放到Hadoop的DistributedCache中,使所有节点都可以访问到。例如,下面的命令就是将Tachyon客户端Jar包添加到-libjars选项中。

$ hadoop jar hadoop-examples-1.2.1.jar wordcount -libjars /<PATH_TO_TACHYON>/core/client/target/tachyon-client-0.8.2-jar-with-dependencies.jar <INPUT FILES> <OUTPUT DIRECTORY>`

2.Jarパケットをすべてのノードに手動で配布各ノードにTachyonをインストールするには、クライアントJarパケットtachyon-client-0.8.2-jar-with-dependencies.jar(/<PATH_TO_TACHYON>/core/client/target/ディレクトリにある)を各MapReduceノードの$HADOOP_HOME/lib(バージョンによっては$HADOOP_HOME/share/hadoop/common/lib)ディレクトリの下に配置し、すべてのTaskTrackerを再起動する必要があります.この方法では、各Jarパッケージが最新バージョンに更新されているため、すべてのJarパッケージを再インストールする必要があります.一方、Jarパケットが各ノードに存在する場合、-libjarsコマンドラインオプションを使用する必要はありません.
ローカルモードのTachyonでHadoop wordcountを実行
まず、対応するHadoopバージョンのTachyonをコンパイルします.
$ mvn clean install -Dhadoop.version=<YOUR_HADOOP_VERSION>

便宜上、擬似分散クラスタと仮定し、次のコマンドを実行して起動します.
$ cd$HADOOP_HOME$ ./bin/stop-all.sh
$ ./bin/start-all.sh

Tachyonを構成し、ローカルHDFSクラスタを最下位のストレージシステムとします.conf/tachyon-env.shを修正し、次の文を追加する必要があります.
export TACHYON_UNDERFS_ADDRESS=hdfs://localhost:9000

ローカルモードでTachyonを起動するには:
$ ./bin/tachyon-stop.sh all
$ ./bin/tachyon-start.sh local


Tachyonに2つの簡単なファイルを追加してwordcountを実行することができます.Tachyonディレクトリで実行:
$ ./bin/tachyon tfs copyFromLocal LICENSE /wordcount/input.txt

このコマンドは、LICENSEファイルをTachyonのファイルネーミングスペースにコピーし、そのパスを/wordcount/input.txtと指定します.
wordcount用のMapReduceジョブを実行します.
$ bin/hadoop jar hadoop-examples-1.2.1.jar wordcount -libjars /<PATH_TO_TACHYON>/core/client/target/tachyon-core-client-0.8.2-jar-with-dependencies.jar -Dtachyon.user.file.understoragetype.default=SYNC_PERSIST tachyon://localhost:19998/wordcount/input.txt tachyon://localhost:19998/wordcount/output
hadoop jar share/hadoop/mapreduce/sources/hadoop-mapreduce-examples-2.7.1-sources.jar org.apache.hadoop.examples.WordCount -libjars /usr/local/tachyon/clients/client/target/tachyon-client-0.8.2-jar-with-dependencies.jar -Dtachyon.user.file.understoragetype.default=SYNC_PERSIST tachyon://master1:19998/wordcount/input.txt tachyon://master1:19998/wordcount/output
      tachyon    Hadoop   MapReduce_ 2



,wordcount Tachyon /wordcount/outputディレクトリの にあります. ファイルを するには、 のコマンドを します.

$ ./bin/tachyon tfs ls /wordcount/output
$ ./bin/tachyon tfs cat /wordcount/output/part-r-00000

このファイルは、ローカルHDFSクラスタのWebUIがlocalhost:5070にある ストレージシステムHDFS namenodeのWebUIでも できます.
が しているからtachyon://master1:19998/wordcount/outputに されます. に. のように
それでも
hadoop@master1:/usr/local/hadoop$ hadoop dfs -copyFromLocal README.txt /in
に、
      tachyon    Hadoop   MapReduce_ 3
モードのTachyonでHadoop wordcountを
まずconf/tachyon-envを する.sh

 export TACHYON_MASTER_ADDRESS=master1 
 
export TACHYON_UNDERFS_ADDRESS=hdfs://hadoop@master1
:9000   
 #hdfs://ip:portこのパラメータはhadoop/etc/hadoop/core-size.xmlのfs.default.nameのvalue
フォーマットtachyon:bin/tachyon format
tachyonの :
しかし、Tachyonを するには、より くのオプションがあります.
bin/tachyon-start.sh all Mount#TachyonWorkerが するRamFSを に にマウントし、TachyonMasterとすべてのTachyonWorkerを します.mountコマンドを するため、root のユーザーが です.
bin/tachyon-start.sh all SudoMount#は、 にTachyonWorkerが するRamFSを にマウントし、TachyonMasterとすべてのTachyonWorkerを します.sudo mountコマンドを するため、sudo をユーザに たせる がある.
bin/tachyon-start.sh all NoMount#RamFSは にマウントされていると し、マウント を せず、TachyonMasterとすべてのTachyonWorker のみを する
したがって、Tachyonを するたびにRamFSを1 マウントしたくない は、まずコマンドbin/tachyon-mountを することができる.sh Mount workersまたはbin/tachyon-mount.sh SudoMount workersはすべてのRamFSをマウントし、bin/tachyon-startを します.sh all NoMountコマンドTachyonを します.
ここで するコマンド:bin/tachyon-start.sh all SudoMount
      tachyon    Hadoop   MapReduce_ 4
jpsはtachyonMasterプロセスが されたかどうかを します.
      tachyon    Hadoop   MapReduce_ 5
      tachyon    Hadoop   MapReduce_ 6
bin/hdfs  dfs  -mkdir -p /in1
bin/hdfs dfs-put/usr/local/hadoop/input/in 1(ローカルinputフォルダを/in 1フォルダにマッピング)
ファイルをin 1に
hadoop dfs -copyFromLocal /usr/local/hadoop/etc/hadoop/*.xml/in1  
      tachyon    Hadoop   MapReduce_ 7
 
      tachyon    Hadoop   MapReduce_ 8

wordcountのMapReduceジョブ:
hadoop jar share/hadoop/mapreduce/sources/hadoop-mapreduce-examples-2.7.1-sources.jar org.apache.hadoop.examples.WordCount -libjars /usr/local/tachyon/clients/client/target/tachyon-client-0.8.2-jar-with-dependencies.jar -Dtachyon.user.file.understoragetype.default=SYNC_PERSIST /in1 /tmp/wordcount
[ ]
[ ]
[ ]
[ ]
 
ジョブは に され、プログラムの が いため、 さなテキストでテストすることをお めします.
さもないと のように、 に が わるのを ってから る==
△ くてたまらないので、 を って るのをやめました.
#############################################################################
1.tachyon を にエラーが しました:
tachyon/tachyon-env.sh: line 83: export: 'hdfs://master1:9000' : not a valid identifier Killed 0 processes on worker1 
ここではconf/tachyon-env.shファイルエラー.あなたのworkerのパス が っているはずです.
がもとはhdfs://master1:9000というエラーが しました.

 TACHYON_UNDERFS_ADDRESS=hdfs://hadoop@master1
:9000が しました.(hadoopはユーザグループ、master 1はユーザ 、 は マシンで3 のノードを )
 
2.ssh に したか、パスワードを する がある
SSH id_rsa, id_rsa.pub 、 サーバはAgent admitted failure to sign using the keyエラーを します.
ssh-addを すればよい
パスワードなしのリモートログインがまだ われていない は、sshを インストールし、 (id_rsa.pub)をauthorized_に き むkeys(パスワード リストなし).
すべてを き んで、それぞれの にコピーします.パスワードなしでログインできます.
えば、Aノードのid_rsa.pubのコンテンツをコピーし、Bのauthorized_に きます.keysファイルでは、AはパスワードなしでAに できますが、B Aはパスワードが です.Aの リストにBがないためです.
テキストにコピーして き むと、パスワードなしで できます.sshのインストール については、 のhadoopインストールの ブログに してください. な が されています.
  
3. る に、tachyonを しないで、 るのを つのはつらい. 
#############################################################################