• Ubuntu 15.10 下Tachyon安装


    1 系统环境

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

    三台机器

    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

    因为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

  • 相关阅读:
    @echo off
    小知识点
    字符串匹配方法
    一般保护错误
    Linux常用压缩与解压缩命令
    opencv__linux__配置
    opencv__配置
    Web开发从零单排之二:在自制电子请帖中添加留言板功能,SAE+PHP+MySql
    Web开发从零单排之一:在新浪云平台SAE上开发一个html5电子喜帖
    WPF中使用ValueConverter来实现“范围条件触发器”
  • 原文地址:https://www.cnblogs.com/wsxcde159/p/5318306.html
Copyright © 2020-2023  润新知