整合 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 。

相关文章
相关标签/搜索