整合 Tachyon 运行 Hadoop MapReduce(译)

整合 Tachyon 运行 Hadoop MapReduce

本指南描述如何使Tachyon 与 Hadoop MapReduce 结合运行,这样你可以很容易运行 hadoop  MapReduce 程序文件存储在 Tachyon上。

前提

这部分额外的首要条件数是已经 Java。我们也假设你已经安装了 Tachyon 和 Hadoop 根据 Local Mode or Cluster Mode

如果运行 Hadoop 1.x 集群,确保 hadoop/conf/core-site.xml 文件中你的Hadoop 安装的 conf 目录添加过以下属性:

<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中的数据不能确保正常使用)

如果集群式 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 必须重新安装。

  • 当使用 hadoop jar ......您也可以通过使用-libjars命令行选项运行 job,指定 /pathToTachyon/clients/client/target/tachyon-client-0.7.1-jar-with-dependencies.jar 作为参数,把jar 放到hadoop的分布式缓存里,在不频繁更新Tachyon jar的情况下,可以(可靠)获取。

  • 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.

为了确保 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 。


你可能感兴趣的:(Tachyon)