分享

Spark中使用tachyon内存存储架构实战

regan 发表于 2015-12-21 14:25:21 [显示全部楼层] 只看大图 回帖奖励 阅读模式 关闭右栏 2 10379
本帖最后由 regan 于 2015-12-21 16:05 编辑

      tachyon是开源社区中最近非常热门的技术,tachyon构建了一个基于内存的分布式文件系统,相对于传统的磁盘文件系统如HDFS,访问速度得到了最大的提高。
      下面是公司项目中使用到的sparkStreaming的架构图:
      
图片1.png

对于tachyon分布式文件系统环境的搭建步奏如下:
Tachyon的安装及使用教程
一、安装环境
系统环境:centos 7
软件环境:jdk1.7.0_79 ; hadoop2.6 ; maven-3.3.9 ; thrift-0.9.2 ;
Tachyon各版本下载:https://github.com/amplab/tachyon/releases
二、安装准备
1、JDK安装
2、Maven安装
解压二进制包:
tar xzvf apache-maven-3.3.9-bin.tar.gz
添加maven到path
export MAVEN_HOME=/home/yxf/softwares/apache-maven-3.3.9
export PATH=${MAVEN_HOME}/bin:$PATH
命令:mvn –v 显示

Maven本地仓库配置:
<localRepository>/home/yxf/repository/maven_repo</localRepository>
保存文件:
mvn archetype:generate -DgroupId=com.yiibai -DartifactId=NumberGenerator -DarchetypeArtifactId=maven-archetype-quickstart -DinteractiveMode=false
3、Thrift安装
$ sudo yum install automake libtool flex bison pkgconfig gcc-c++ make
$ sudo yum install 'ftp://ftp.pbone.net/mirror/ftp5.gwdg.de/pub/opensuse/repositories/home:/monkeyiq:/centos6updates/CentOS_CentOS-6/noarch/autoconf-2.69-12.2.noarch.rpm'
$ wget 'https://github.com/apache/thrift/archive/0.9.2.tar.gz'
$ tar zxvf 0.9.2
$ cd thrift-0.9.2/
$ ./bootstrap.sh
$ ./configure --enable-libs=no
$ make
$ sudo make install
三、源码编译Tanchyon
由于官方提供的tachyon所对应的hadoop版本为1.0.x版本,为了更好地契合用户的本地环境,如Java版本、Hadoop版本或其他一些软件包的版本,需要下载对应spark版本的Tachyon源码自行编译。
$ git clone git://github.com/amplab/tachyon.git
$ cd tachyon
此处若有问题,可使用
mvn clean package -Djava.version=1.7 -Dhadoop.version=2.6.0 -DskipTests
进行编译,前者指定java版本,后者指定hadoop版本
若出现java.lang.OutOfMemoryError的错误,则执行
export MAVEN_OPTS="-Xmx2g -XX:MaxPermSize=512M -XX:ReservedCodeCacheSize=512m"
四、使用Tachyon
$ cp conf/tachyon-env.sh.template conf/tachyon-env.sh
Tachyon配置:
&#61548;JAVA_HOME:系统中java的安装路径
&#61548;TACHYON_MASTER_ADDRESS:启动TachyonMaster的地址,默认为localhost,所以在单机模式下不用更改
&#61548;TACHYON_UNDERFS_ADDRESS:Tachyon使用的底层文件系统的路径,在单机模式下可以直接使用本地文件系统,如"/tmp/tachyon",也可以使用HDFS,如"hdfs://ip:port"
&#61548;TACHYON_WORKER_MEMORY_SIZE:每个TachyonWorker使用的RamFS大

$ ./bin/tachyon format
$ ./bin/tachyon-start.sh local
访问http://localhost:19999检查tachyon的状态
使用
$ ./bin/tachyon runTests
测试tachyon
使用
$ ./bin/tachyon-stop.sh
停止tachyon。

在集群模式下略有不同:
tachyon相关配置文件在$TACHYON_HOME/conf目录下,对slaves文件中配置需要启动TachyonWorker的节点
先启动HDFS:
$HADOOP_HOME/sbin/start-dfs.sh
在格式化tachyon:
$TACHYON_HOME/bin/tachyon format
通过
hdfs dfs –ls /
命令可以看到HDFS根目录下有/tmp文件夹,再
Hdfs dfs –ls /tmp
可以看到/tmp/tachyon
最后启动tachyon:
启动Tachyon有了更多的选项:
./tachyon-start.sh all Mount在启动前自动挂载TachyonWorker所使用的RamFS,然后启动TachyonMaster和所有TachyonWorker。由于直接使用mount命令,所以需要用户为root;
./tachyon-start.sh all SudoMount在启动前自动挂载TachyonWorker所使用的RamFS,然后启动TachyonMaster和所有TachyonWorker。由于使用sudo mount命令,所以需要用户有sudo权限;
./tachyon-start.sh all NoMount认为RamFS已经挂载好,不执行挂载操作,只启动TachyonMaster和所有TachyonWorker
因此,如果不想每次启动Tachyon都挂载一次RamFS,可以先使用命令./tachyon-mount.sh Mount workers 或./tachyon-mount.sh SudoMount workers挂载好所有RamFS,然后使用./tachyon-start.sh all NoMount 命令启动Tachyon。
单机和集群式模式的区别就在于节点配置和启动步骤,事实上,也可以在集群模式下只设置一个TachyonWorker,此时就成为伪分布模式。

五、参考
1、http://www.sxt.cn/u/756/blog/5410
2、http://www.tachyon-project.org/
3、http://www.68idc.cn/help/mysqldata/nosql/20150117174963.html
4、http://stark-summer.iteye.com/blog/2245285
5、http://www.cnblogs.com/shishanyuan/p/4775400.html


六、Tachyon与Spark
版本对照:
图片2.png

1、添加core-site.xml
在$SPARK_HOME/conf目录下创建core-site.xml文件,并添加如下内容:
<configuration>
  <property>
    <name>fs.tachyon.impl</name>
    <value>tachyon.hadoop.TFS</value>
  </property>
</configuration>
在使用时,方法类似于HDFS,其文件路径为:
Tachyon://192.168.1.130:19998/…

七、局限性
1、使用maven编译的过程中发现不能使用jdk1.8

环境搭建好之后,就是配置tachyon,简单配置如下:
tachyonconf.zip (2.46 KB, 下载次数: 0, 售价: 1 云币)

最后SparkStreaming中结果保存tachyon:
KVRDD.saveAsTextFiles(ProjectConf.tachyonHome)
上述中的ProjectConf.tachonHome放到配置application.properties文件中:
tachyonHome=tachyon://master:19998/home/

已有(2)人评论

跳转到指定楼层
zhujun182104906 发表于 2015-12-22 10:22:25
有没有测过,使用tachyon与不使用hadoop或spark任务快了多少倍啊
回复

使用道具 举报

regan 发表于 2015-12-22 14:26:16
zhujun182104906 发表于 2015-12-22 10:22
有没有测过,使用tachyon与不使用hadoop或spark任务快了多少倍啊

之前存的HDFS,其他业务部门要使用需从HDFS读取,现在直接从Tachyon中读取。至于速度提升,对其他部门共享访问数据肯定提升不少

回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关闭

推荐上一条 /2 下一条