"Spark 1.6 + Alluxio 1.2 HA + OFF_HEAP" 的配置

1、到
https://github.com/winse/spark-alluxio-blockstorage
下载 AlluxioBlockManager.scala 文件,并进行编译打包为 spark-alluxio-blockstore.jar

2、将alluxio-core-client-spark-1.2.0-jar-with-dependencies.jar、 spark-alluxio-blockstore.jar 放到所有Spark节点的lib目录下。并在 conf/spark-env.sh 的 SPARK_CLASSPATH 环境变量中加上这两个jar的路径,Spark 集群中所有的节点都需要这样配置。

echo 'export SPARK_CLASSPATH=/usr/spark-1.6.0/lib/alluxio-core-client-spark-1.2.0-jar-with-dependencies.jar:$SPARK_CLASSPATH' >> conf/spark-env.sh
echo 'export SPARK_CLASSPATH=/usr/spark-1.6.0/lib/ spark-alluxio-blockstore.jar:$SPARK_CLASSPATH' >> conf/spark-env.sh

3、在conf目录下创建 alluxio-site.properties,并添加如下内容:

alluxio.zookeeper.enabled=true
alluxio.zookeeper.address=192.168.1.151:2181

3、在 conf/spark-defaults.conf 修改 spark.externalBlockStore 的相关配置,如下:

spark.externalBlockStore.blockManager org.apache.spark.storage.AlluxioBlockManager
spark.externalBlockStore.subDirectories 8
spark.externalBlockStore.url alluxio-ft://unknown:19998 //此处可以任意的主机名和任意端口
spark.externalBlockStore.baseDir /tmp_spark_alluxio

三、测试

1、以文件方式访问

val file = sc.textFile("/home/hadoop/sample-1g") //此处可以任意的主机名和任意端口
file.saveAsTextFile("alluxio-ft://unknown:19998/sample-1g")
val alluxioFile = sc.textFile("alluxio-ft://unknown:19998/sample-1g")
alluxioFile.count()

2、调用RDD的persist,并使用OFF_HEAP进行数据缓存
在 spark-shell 中运行下面的测试代码:

val file = sc.textFile("/home/hadoop/sample-1g",4)
file.persist(org.apache.spark.storage.StorageLevel.OFF_HEAP)
file.count()

6、查看 Alluxio 中的缓存情况
这里写图片描述
从上面的图片中可以看到,已经缓存到Alluxio中了。

由于这个是开源的方案,所以在应用到真实环境之前,大家还是要多测试测试。

猜你喜欢

转载自blog.csdn.net/sun_qiangwei/article/details/52262899