Ubuntu 15.10 下Tachyon安裝

1 系統環境

Ubuntu 15.10, Java 1.7, Hadoop 2.6.0 HA, Spark-1.4.0html

三臺機器java

spark-1423-0001: Master, Workergit

spark-1423-0002: Master, Workergithub

spark-1423-0003: Workershell

 

2 tachyon下載地址

源碼:https://github.com/Alluxio/alluxioapache

可執行文件:https://github.com/Alluxio/alluxio/releasesoracle

 

我下載的是0.7.0:https://github.com/amplab/tachyon/archive/v0.7.0.zipjvm

本身用Maven編譯,固然也能夠使用官網編譯好的。oop

mvn -Dhadoop.version=2.6.0 clean package -DskipTests=true

由於Spark-1.4.0中已經集成了Tachyon(0.6.*),因此這裏使用Tachyon-0.7.0是沒有問題的。測試

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

 

啓動以後能夠在:http://spark-1423-0001:19999上面看到Tachyon的啓動狀況

爲了驗證高可用,能夠將spark-1423-0001中的Master進程殺死,系統會自行進行切換,大概須要花15秒

 

5 Spark on Tachyon

5.1 首先須要在SPARK_HOME/conf中新建core-site.xml,內容以下:

<configuration>
  <property>
    <name>fs.tachyon-ft.impl</name>
    <value>tachyon.hadoop.TFSFT</value>
  </property>
</configuration>

5.2 修改spark_env.conf,添加以下內容:

export SPARK_JAVA_OPTS="
  -Dtachyon.zookeeper.address=spark-1421-0000:2181,spark-1421-0003:2181,spark-1421-0004:2181,spark-1421-0005:2181,spark-1421-0006:2181
  -Dtachyon.usezookeeper=true
  $SPARK_JAVA_OPTS"

5.3 spark-shell中測試:

val s = sc.textFile("tachyon-ft://spark-1423-0001:19999/X")
s.count()
s.saveAsTextFile("tachyon-ft://spark-1423-0002:19999/Y")

這裏須要注意一點,Tachyon讀取文件的順序是先從本機內存中讀取,若是本機內存中沒有,Tachyon會從集羣中其餘Worker節點中尋找,若是集羣中Worker節點內存中也沒有,那麼Tachyon會從UnderFS中尋找,例如HDFS中。

在使用Spark-shell測試時,若是是用的Local模式,那麼tachyon-ft://spark-1423-0002:19998 只能讀取本機內存中的數據,Tachyon集羣其餘節點中內存的數據都讀不到,HDFS中的數據也是讀不到。

6 參考文獻

http://www.cnblogs.com/shishanyuan/p/4775400.html

http://www.sxt.cn/u/756/blog/5410

http://www.tachyonproject.org/documentation/v0.7.1/Running-Spark-on-Tachyon.html

相關文章
相關標籤/搜索