基于Tachyon运行Spark的案例实践时,要求已经部署了Tachyon集群,并且配置了容错处理,即启动了ZooKeeper对Master进行管理,启动了HDFS,同时将HDFS配置为Tachyon的底层文件系统。
一、准备在Spark上使用的文件
二、基于Tachyon的Spark实践案例及解析
1.修改配置Spark-env.sh,添加以下内容:
注意:在重新编译的Spark 1.3.0(不低于1.0.0)版本中,没有设置也可以成功访问Tachyon。
2.增加配置文件core-site.xml
注意:在重新编译的spark 1.3.0版本(基于Hadoop 2.x版本)中,没有设置也可以成功访问Tachyon。
3.启动./bin/spark-shell
进入spark部署目录,输入:
去除过多的日志信息:
4.使用Tachyon文件
启动./bin/spark-shell,在交互式界面输入:
5.将文件重新保存到Tachyon上
查看Tachyon的Web Interface(http∶//cluster04∶19999)界面,如图5.25所示。
图5.25 保存文件到Tachyon文件系统后的界面
可以看到,文件已经成功保存到Tachyon文件系统,目录为保存时的参数save1。
6.对RDD进行缓存
缓存RDD时,对应的API没有指定Tachyon的文件路径,这时候需要提供配置参数,这里提供了spark.tachyonStore.url和spark.tachyonStore.baseDir,通过这两个配置信息,可以确定RDD缓存在Tachyon文件系统上的路径。
修改配置文件spark-default.conf,添加以下内容:
spark.tachyonStore.url是Spark连接Tachyon用的,如果没有设置,会使用默认URL(localhost/127.0.0.1:19998)去连接,导致连接失败,比如触发缓存后的错误信息如下:
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。
首先从本地加载文件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中添加:
图5.26 StorageLevel.OFF_HEAP存储级别缓存后的界面
这种设置方式在运行时会出现以下警告信息:
警告信息可以忽略,如果将属性配置到conf/spark-defaults.conf的话,在Tachyon中是不起作用的。
另外在conf/core-site.xml文件中添加以下信息:
注意:在重新编译的Spark 1.3.0版本(基于Hadoop 2.x版本)中,没有设置也可以成功访问Tachyon。
启动spark-shell,用Active Master指定路径来获取文件内容,并保存到Standby Master指定的路径上。
可以看到,这里使用了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所示。
图5.27 Tachyon文件系统的tachyon-ft方式访问界面
注意,如果使用的是没有重新编译过的Spark 1.3.0,比如从官网直接下载时,在Tach-yon上执行Spark时,会出现以下错误。
1.错误一:
必须在spark-env.sh文件中配置Spark_CLASSPATH,具体值参看前面内容。
2.错误二:
该错误是由于下载的Spark 1.3.0依赖的Tachyon版本为1.5.0,和Tachyon 1.6.0版本不兼容,必须进行重编译后才能运行通过。
免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。