1、系统环境
Ubuntu 15.10,Java 1.7, Hadoop 2.6.0 HA
三台机器
spark-1423-0001: Master, Worker
spark-1423-0002: Master, Worker
spark-1423-0003: Worker
2、tachyon下载地址
源码:https://github.com/Alluxio/alluxio
可执行文件:https://github.com/Alluxio/alluxio/releases
我下载的是0.7.0:https://github.com/amplab/tachyon/archive/v0.7.0.zip
自己用Maven编译
mvn -Dhadoop.version=2.6.0 clean package -DskipTests=true
3、修改配置文件
下面的配置都是在spark-1423-001上进行的。
3.1、修改tachyon-env.sh
export JAVA_HOME=/usr/lib/jvm/java-1.7.0-openjdk-amd64
if [[ `uname -a` == Darwin* ]]; then
# Assuming Mac OS X
export JAVA_HOME=${JAVA_HOME:-$(/usr/libexec/java_home)}
export TACHYON_RAM_FOLDER=/Volumes/ramdisk
export TACHYON_JAVA_OPTS="-Djava.security.krb5.realm= -Djava.security.krb5.kdc="
else
# Assuming Linux
if [ -z "$JAVA_HOME" ]; then
if [ -d /usr/lib/jvm/java-7-oracle ]; then
export JAVA_HOME=/usr/lib/jvm/java-7-oracle
else
# openjdk will set this
if [ -d /usr/lib/jvm/jre-1.7.0 ]; then
export JAVA_HOME=/usr/lib/jvm/jre-1.7.0
fi
fi
fi
export TACHYON_RAM_FOLDER=/mnt/ramdisk
fi
if [ -z "$JAVA_HOME" ]; then
export JAVA_HOME="$(dirname $(which java))/.."
fi
export JAVA="$JAVA_HOME/bin/java"
export TACHYON_MASTER_ADDRESS=spark-1423-0001
export TACHYON_UNDERFS_ADDRESS=hdfs://hadoop-cluster
#export TACHYON_UNDERFS_ADDRESS=hdfs://localhost:9000
export TACHYON_WORKER_MEMORY_SIZE=10GB
export TACHYON_UNDERFS_HDFS_IMPL=org.apache.hadoop.hdfs.DistributedFileSystem
export TACHYON_WORKER_MAX_WORKER_THREADS=2048
export TACHYON_MASTER_MAX_WORKER_THREADS=2048
export TACHYON_SSH_FOREGROUND="yes"
export TACHYON_WORKER_SLEEP="0.02"
# Prepend Tachyon classes before classes specified by TACHYON_CLASSPATH
# in the Java classpath. May be necessary if there are jar conflicts
#export TACHYON_PREPEND_TACHYON_CLASSES="yes"
# Where log files are stored. $TACHYON_HOME/logs by default.
#export TACHYON_LOGS_DIR=$TACHYON_HOME/logs
CONF_DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )"
export TACHYON_JAVA_OPTS+="
-Dlog4j.configuration=file:$CONF_DIR/log4j.properties
-Dtachyon.debug=false
-Dtachyon.worker.tieredstore.level.max=1
-Dtachyon.worker.tieredstore.level0.alias=MEM
-Dtachyon.worker.tieredstore.level0.dirs.path=$TACHYON_RAM_FOLDER
-Dtachyon.worker.tieredstore.level0.dirs.quota=$TACHYON_WORKER_MEMORY_SIZE
-Dtachyon.underfs.address=$TACHYON_UNDERFS_ADDRESS
-Dtachyon.underfs.hdfs.impl=$TACHYON_UNDERFS_HDFS_IMPL
-Dtachyon.data.folder=$TACHYON_UNDERFS_ADDRESS/tmp/tachyon/data
-Dtachyon.worker.max.worker.threads=$TACHYON_WORKER_MAX_WORKER_THREADS
-Dtachyon.workers.folder=$TACHYON_UNDERFS_ADDRESS/tmp/tachyon/workers
-Dtachyon.worker.memory.size=$TACHYON_WORKER_MEMORY_SIZE
-Dtachyon.worker.data.folder=/tachyonworker/
-Dtachyon.master.max.worker.threads=$TACHYON_MASTER_MAX_WORKER_THREADS
-Dtachyon.master.worker.timeout.ms=60000
-Dtachyon.master.hostname=$TACHYON_MASTER_ADDRESS
-Dtachyon.master.journal.folder=$TACHYON_UNDERFS_ADDRESS/tachyon/journal/
-Dorg.apache.jasper.compiler.disablejsr199=true
-Djava.net.preferIPv4Stack=true
-Dtachyon.usezookeeper=true
-Dtachyon.zookeeper.address=spark-1421-0000:2181,spark-1421-0003:2181,spark-1421-0004:2181,spark-1421-0005:2181,spark-1421-0006:2181
"
# Master specific parameters. Default to TACHYON_JAVA_OPTS.
export TACHYON_MASTER_JAVA_OPTS="$TACHYON_JAVA_OPTS"
# Worker specific parameters that will be shared to all workers. Default to TACHYON_JAVA_OPTS.
export TACHYON_WORKER_JAVA_OPTS="$TACHYON_JAVA_OPTS"
这里需要设置Master IP,Hadoop 地址,我这里Hadoop是高可用的
3.2、修改Worker
spark-1423-0001
spark-1423-0002
spark-1423-0003
配置完成之后,将Tachyon分发到Spark-1421-0002,spark-1423-0003,同时修改spark-1423-0002 tachyon-env.sh中的MasterIP,其他不变。
4、系统启动
下面的操作都是在spark-1423-0001上进行的,首次启动前需要格式化
tachyon format
然后启动
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
因此,如果不想每次启动Tachyon都挂载一次RamFS,可以先使用命令./tachyon-mount.sh Mount workers 或./tachyon-mount.sh SudoMount workers挂载好所有RamFS,然后使用./tachyon-start.sh all NoMount 命令启动Tachyon。
单机和集群式模式的区别就在于节点配置和启动步骤,事实上,也可以在集群模式下只设置一个TachyonWorker,此时就成为伪分布模式。
因为Tachyon设置了高可用,那么在spark-1423-002上需要启动Master
./tachyon-start.sh master
启动之后可以在:spark-1423-0001:19999上面看到Tachyon的启动情况
为了验证高可用,可以将spark-1423-0001中的Master进程杀死,系统会自行进行切换,大概需要花15秒。