为了账号安全,请及时绑定邮箱和手机立即绑定

Spark & Alluxio

标签:
Spark

概述

Alluxio(在1.0版本之前名为Tachyon)是一个以内存分布式存储系统。它统一了数据访问的方式,为上层计算框架和底层存储系统构建了桥梁。 应用只需要连接Alluxio即可访问存储在底层任意存储系统中的数据。此外,Alluxio的以内存为中心的架构使得数据的访问速度能比现有常规方案快几个数量级。

Spark使用Alluxio的好处有如下几点:

  • 数据可以长期存储在内存中,多个应用可以共享缓存数据

  • 数据缓存在JVM外部可以减少程序的GC时间

  • 缓存的数据不会因为程序的意外崩溃而消失

  • Alluxiou与Hadoop兼容,无需修改spark代码,可直接运行

配置

Alluxio的编译部署

从源码主分支编译支持Spark,Hadoop2.4的Alluxio

git clone git://github.com/alluxio/alluxio.gitcd alluxio
mvn install -Pspark -Dhadoop.version=2.4.1 -DskipTests

如果需要编译一个指定的版本,使用gitcheckout命令即可,例如编译1.2版本

cd alluxiogit checkout v1.2.0

在HDFS上配置Alluxio

编译完成后,修改配置文件

cd alluxio/conf
cp alluxio-env.sh.template alluxio-env.sh
ALLUXIO_UNDERFS_ADDRESS=hdfs://localhost:9000/alluxioALLUXIO_MASTER_HOSTNAME=xxx
ALLUXIO_RAM_FOLDER=/home/admin/alluxio/ramdisk

在Spark上配置Alluxio

可以在spark-env.sh中配置SPARK_CLASSPATH

export SPARK_CLASSPATH=/usr/install/alluxio/core/client/target/alluxio-core-client-1.3.0-SNAPSHOT-jar-with-dependencies.jar

在spark1.6以上,可以配置在spark-defaults.conf

spark.executor.extraClassPath /usr/install/alluxio/core/client/target/alluxio-core-client-1.3.0-SNAPSHOT-jar-with-dependencies.jar
spark.driver.extraClassPath /usr/install/alluxio/core/client/target/alluxio-core-client-1.3.0-SNAPSHOT-jar-with-dependencies.jar

修改spark/conf下的core-site.xml

<property>
  <name>fs.alluxio.impl</name>
  <value>alluxio.hadoop.FileSystem</value>
  <description>The Alluxio FileSystem (Hadoop 1.x and 2.x)</description></property><property>
  <name>fs.alluxio-ft.impl</name>
  <value>alluxio.hadoop.FaultTolerantFileSystem</value>
  <description>The Alluxio FileSystem (Hadoop 1.x and 2.x) with fault tolerant support</description></property><property>
  <name>fs.AbstractFileSystem.alluxio.impl</name>
  <value>alluxio.hadoop.AlluxioFileSystem</value>
  <description>The Alluxio AbstractFileSystem (Hadoop 2.x)</description></property>

启动Alluxio

./bin/alluxio format
./bin/alluxio-start.sh local

此时可以通过http://localhost:19999访问Alluxio web ui,运行一个test

./bin/alluxio runTests

如果运行成功可以在Browse中看到生成的default_tests_files文件

在Alluxio上运行Spark

就和从普通的文件系统中读取文件一样

将LICENSE上传到HDFS的alluxio目录

hadoop fs -put -f /alluxio/LICENSE hdfs://localhost:9000/alluxio/LICENSE

进行一些操作

val s = sc.textFile("alluxio://localhost:19998/LICENSE")
val double = s.map(line => line + line)double.saveAsTextFile("alluxio://localhost:19998/LICENSE2")

可以在web ui 中看到保存的文件,当然DataFrame的操作也是一样的,例如

val df = sc.parallelize(Seq("zhangsan","lisi")).toDF("name")
df.write.parquet("alluxio://localhost:19998/people")

一些运行截图

webp

这里写图片描述



作者:breeze_lsw
链接:https://www.jianshu.com/p/03814bdec0b4


点击查看更多内容
TA 点赞

若觉得本文不错,就分享一下吧!

评论

作者其他优质文章

正在加载中
  • 推荐
  • 评论
  • 收藏
  • 共同学习,写下你的评论
感谢您的支持,我会继续努力的~
扫码打赏,你说多少就多少
赞赏金额会直接到老师账户
支付方式
打开微信扫一扫,即可进行扫码打赏哦
今天注册有机会得

100积分直接送

付费专栏免费学

大额优惠券免费领

立即参与 放弃机会
意见反馈 帮助中心 APP下载
官方微信

举报

0/150
提交
取消