一、环境
spark 2.0.1
hadoop 2.7.1
tachyon 0.8.2
二、原理及参考文档
三、安装搭建tachyon集群
1.下载tachyon
官网上下载最新版本tachyon-0.8.2-bin.tar.gz
2.master上/home/cms下安装tachyon
tar xvfz tachyon-0.8.2-bin.tar.gz
3.conf创建配置文件,并配置
cp tachyon-env.sh.template tachyon-env.sh
修改配置文件
export JAVA="${JAVA_HOME}/bin/java"export JAVA_HOME=/usr/lib/jvm/java-7-openjdk-amd64export TACHYON_MASTER_ADDRESS=masterexport HADOOP_HOME=$HOME/hadoop-2.7.1export TACHYON_UNDERFS_ADDRESS=hdfs://master:9000#export TACHYON_UNDERFS_ADDRESS=${TACHYON_UNDERFS_ADDRESS:-hdfs://localhost:9000}export TACHYON_WORKER_MEMORY_SIZE=0.5GB
JAVA_HOME:系统中java的安装路径 TACHYON_MASTER_ADDRESS:启动TachyonMaster的地址,默认为localhost,所以在单机模式下不用更改 TACHYON_UNDERFS_ADDRESS:Tachyon使用的底层文件系统的路径,在单机模式下可以直接使用本地文件系统,如"/tmp/tachyon",也可以使用HDFS,如"hdfs://ip:port"TACHYON_WORKER_MEMORY_SIZE:每个TachyonWorker使用的RamFS大小 ```#####4.在workers下添加work节点机器名``` master slave1 slave2 ```#####5.配置环境变量/etc/profile ```export TACHYON_HOME=$HOME/tachyon-0.8.2 path=$TACHYON_HOME/bin:$PATH``` ```source /etc/profile ```#####6.向slave1,slave2复制tachyon-0.8.2文件``` sudo scp -r tachyon-0.8.2 cms@slave1:/home/cms/ sudo scp -r tachyon-0.8.2 cms@slave2:/home/cms/ ```#####7.配置slave1,slave2的环境变量####四、测试tachyon集群#####1.启动hdfs``` start-all.sh ```#####2.格式化tachyon``` tachyon format ```#####3.启动tachyon集群``` tachyon-start.sh all SudoMount ``` >**启动Tachyon有了更多的选项:** l./tachyon-start.sh all Mount在启动前自动挂载TachyonWorker所使用的RamFS,然后启动TachyonMaster和所有TachyonWorker。由于直接使用mount命令,所以需要用户为root; l./tachyon-start.sh all SudoMount在启动前自动挂载TachyonWorker所使用的RamFS,然后启动TachyonMaster和所有TachyonWorker。由于使用sudo mount命令,所以需要用户有sudo权限; l./tachyon-start.sh all NoMount认为RamFS已经挂载好,不执行挂载操作,只启动TachyonMaster和所有TachyonWorker#####4.验证启动jps,没有TachyonWorker和TachyonMaster进程 查找tachyon-0.8.2下的logs master.log 报个一个错 ``` Exception thrown when trying to get FileSystem for hdfs://master:9000 org.apache.hadoop.ipc.RemoteException: Server IPC version 9 cannot communicate with client version 4 ``` 查看官网 当前的tachyon 0.8的版本与hadoop 2.7.1版本不兼容 解决办法:mvn 重新编译 ![](http://upload-images.jianshu.io/upload_images/1908836-fabc76d9b4810191.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240) 方法一: 将```${ALLUXIO_HOME}/pom.xm```l中的```<hadoop.version>1.4.0</hadoop.version>```改为```<hadoop.version>2.7.1</hadoop.version>``` 然后执行: ``` mvn clean package -DskipTests ``` 方法二: ``` mvn -Dhadoop.version=2.7.1 clean package -DskipTests ``` 此过程需要的时间非常漫长。。。 重新format 然后启动 然后 jps master: ![](http://upload-images.jianshu.io/upload_images/1908836-7f91333d5d3ab9eb.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240) slave: ![](http://upload-images.jianshu.io/upload_images/1908836-3a294ea427ae2e07.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240) ![](http://upload-images.jianshu.io/upload_images/1908836-162095b49870339e.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240) 可以在浏览器内打开Tachyon的WebUI,如 http://hadoop1:19999,查看整个Tachyon的状态,各个TachyonWorker的运行情况、各项配置信息和浏览文件系统等。 ![](http://upload-images.jianshu.io/upload_images/1908836-ecaf89e2055e79ce.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240) ![](http://upload-images.jianshu.io/upload_images/1908836-2800d3bb587fdf18.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)####五、tachyon命令行的使用例如 ```tachyon tfs mkdir /tmp``` ![](http://upload-images.jianshu.io/upload_images/1908836-09fb21ff1a0526f7.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)####六、在Tachyon运行spark#####1.添加core-site.xml具体操作是在$SPARK_HOME/conf目录下创建core-site.xml文件 ```$cd /app/hadoop/spark-1.1.0/conf$touch core-site.xml$vi core-site.xml ``` 在该配置文件中添加如下内容: ``` <configuration> <property> <name>fs.tachyon.impl</name> <value>tachyon.hadoop.TFS</value> </property> </configuration> ```#####2.启动spark集群#####3.准备文件现在在hdfs先上传一个文件 ``` hadoop fs -put u.data tmp/ml-100k/u.data ``` 这个时候,可以通过tachyon来获取u.data文件#####4.代码 tatest.py``` from pyspark import SparkContext, SparkConf appName="shashibiya"conf=SparkConf().setAppName(appName).setMaster("local") sc = SparkContext(conf=conf) user_data=sc.textFile("tachyon://master:19998/tmp/ml-100k/u.data") user_fields=user_data.map(lambda line:line.split("|"))print user_fields.take(5) ``` shell的形式我运行暂时失败 总是找不到blabla class 我就采用 独立应用的方式 并把jar包 包含进去 ``` spark-submit --jars /home/cms/tachyon-0.8.2/clients/client/target/tachyon-client-0.8.2-jar-with-dependencies.jar tatest.py ``` 运行结果: ![](http://upload-images.jianshu.io/upload_images/1908836-950fd9b8f4d7d815.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240) 其中,tachyon://master:19998就是你的tachyon的通信地址,那怎么获取得到hdfs上的文件的呢?因为通过```export TACHYON_UNDERFS_ADDRESS=hdfs://master:9000```配置,就可通过tachyon找到那个文件了 查看tachyon下的目录 ![](http://upload-images.jianshu.io/upload_images/1908836-b2a8581dba74d048.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240) **然而。。。** 直接从hdfs上读取文件 ``` user_data=sc.textFile("hadoop://master:9000/tmp/ml-100k/u.data") ``` 运行时间4s多,远比tachyon快,why?待探索 ![](http://upload-images.jianshu.io/upload_images/1908836-93ac75b355421a2f.png?imageM
作者:玄月府的小妖在debug
链接:https://www.jianshu.com/p/087b9e97c1b9