首页 理论教育 基于Tachyon的Spark运行:案例与解析

基于Tachyon的Spark运行:案例与解析

时间:2023-06-25 理论教育 版权反馈
【摘要】:基于Tachyon运行Spark的案例实践时,要求已经部署了Tachyon集群,并且配置了容错处理,即启动了ZooKeeper对Master进行管理,启动了HDFS,同时将HDFS配置为Tachyon的底层文件系统。图5.27 Tachyon文件系统的tachyon-ft方式访问界面注意,如果使用的是没有重新编译过的Spark 1.3.0,比如从官网直接下载时,在Tach-yon上执行Spark时,会出现以下错误。

基于Tachyon的Spark运行:案例与解析

基于Tachyon运行Spark的案例实践时,要求已经部署了Tachyon集群,并且配置了容错处理,即启动了ZooKeeper对Master进行管理,启动了HDFS,同时将HDFS配置为Tachyon的底层文件系统。

一、准备在Spark上使用的文件

978-7-111-51909-6-Chapter05-122.jpg

二、基于Tachyon的Spark实践案例及解析

1.修改配置Spark-env.sh,添加以下内容:

978-7-111-51909-6-Chapter05-123.jpg

注意:在重新编译的Spark 1.3.0(不低于1.0.0)版本中,没有设置也可以成功访问Tachyon。

2.增加配置文件core-site.xml

978-7-111-51909-6-Chapter05-124.jpg

注意:在重新编译的spark 1.3.0版本(基于Hadoop 2.x版本)中,没有设置也可以成功访问Tachyon。

3.启动./bin/spark-shell

进入spark部署目录,输入:

978-7-111-51909-6-Chapter05-125.jpg

去除过多的日志信息:

978-7-111-51909-6-Chapter05-126.jpg

4.使用Tachyon文件

启动./bin/spark-shell,在交互式界面输入:

978-7-111-51909-6-Chapter05-127.jpg

5.将文件重新保存到Tachyon上

978-7-111-51909-6-Chapter05-128.jpg

978-7-111-51909-6-Chapter05-129.jpg

978-7-111-51909-6-Chapter05-130.jpg

查看Tachyon的Web Interface(http∶//cluster04∶19999)界面,如图5.25所示。

978-7-111-51909-6-Chapter05-131.jpg

图5.25 保存文件到Tachyon文件系统后的界面

可以看到,文件已经成功保存到Tachyon文件系统,目录为保存时的参数save1。

6.对RDD进行缓存

缓存RDD时,对应的API没有指定Tachyon的文件路径,这时候需要提供配置参数,这里提供了spark.tachyonStore.url和spark.tachyonStore.baseDir,通过这两个配置信息,可以确定RDD缓存在Tachyon文件系统上的路径。

修改配置文件spark-default.conf,添加以下内容:

978-7-111-51909-6-Chapter05-132.jpg

spark.tachyonStore.url是Spark连接Tachyon用的,如果没有设置,会使用默认URL(localhost/127.0.0.1:19998)去连接,导致连接失败,比如触发缓存后的错误信息如下:

978-7-111-51909-6-Chapter05-133.jpg

spark.tachyonStore.baseDir配置属性为RDD缓存在Tachyon文件系统中的根目录,如果没有设置,默认值为tmp_spark_tachyon,缓存后的RDD路径如:/tmp_spark_tachyon/spark-e2fddc0b-8eb8-430d-b0c8-0f045f4d23af//spark-tachyon-20150419083901-ccd6/15/rdd_1_0。

978-7-111-51909-6-Chapter05-134.jpg

首先从本地加载文件log4j.properties,构建RDD实例t。

执行导入语句import org.apache.spark.storage.StorageLevel后,可以使用存储级别的定义。然后使用StorageLevel.OFF_HEAP存储级别,将t缓存到Tachyon中,最后通过t.count方法,触发缓存。(www.xing528.com)

查看Tachyon的Web Interface界面(http://cluster04∶19999)的In Memory Files页面,如图5.26所示。

可以看到,RDD已经成功缓存到Tachyon文件系统中。其中,缓存路径/spark/部分,是配置参数中设置的park.tachyonStore.baseDir值,可以是以逗号分割的多个目录路径。当该spark-shell结束时,RDD会被自动清理。

7.Master容错下的多Master访问

当Tachyon使用ZooKeeper处理Master容错时,可以通过任意一个Master来访问Tachyon文件系统。

首先需要添加ZooKeeper相关的配置属性,在conf/spark-env.sh中添加:

978-7-111-51909-6-Chapter05-135.jpg

978-7-111-51909-6-Chapter05-136.jpg

图5.26 StorageLevel.OFF_HEAP存储级别缓存后的界面

这种设置方式在运行时会出现以下警告信息:

978-7-111-51909-6-Chapter05-137.jpg

警告信息可以忽略,如果将属性配置到conf/spark-defaults.conf的话,在Tachyon中是不起作用的。

另外在conf/core-site.xml文件中添加以下信息:

978-7-111-51909-6-Chapter05-138.jpg

978-7-111-51909-6-Chapter05-139.jpg

注意:在重新编译的Spark 1.3.0版本(基于Hadoop 2.x版本)中,没有设置也可以成功访问Tachyon。

启动spark-shell,用Active Master指定路径来获取文件内容,并保存到Standby Master指定的路径上。

978-7-111-51909-6-Chapter05-140.jpg

978-7-111-51909-6-Chapter05-141.jpg

978-7-111-51909-6-Chapter05-142.jpg

978-7-111-51909-6-Chapter05-143.jpg

978-7-111-51909-6-Chapter05-144.jpg

可以看到,这里使用了tachyon-ft∶//cluster04∶19998和tachyon-ft∶//cluster06∶19998(其中作为Scheme信息的tachyon-ft中,ft表示fault tolerant),访问了Active和Standby的Master指定路径。

日志中的“Master addresses:[cluster04∶19998,cluster06∶19998]”,是根据Zoo-Keeper相关属性获取的当前Master列表信息。之后会尝试连接到Active Master,然后进行具体操作。

保存结果可以查看对应的Web Interface界面,如图5.27所示。

978-7-111-51909-6-Chapter05-145.jpg

图5.27 Tachyon文件系统的tachyon-ft方式访问界面

注意,如果使用的是没有重新编译过的Spark 1.3.0,比如从官网直接下载时,在Tach-yon上执行Spark时,会出现以下错误。

1.错误一:

978-7-111-51909-6-Chapter05-146.jpg

978-7-111-51909-6-Chapter05-147.jpg

必须在spark-env.sh文件中配置Spark_CLASSPATH,具体值参看前面内容。

2.错误二:

978-7-111-51909-6-Chapter05-148.jpg

该错误是由于下载的Spark 1.3.0依赖的Tachyon版本为1.5.0,和Tachyon 1.6.0版本不兼容,必须进行重编译后才能运行通过。

免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。

我要反馈