1. 先安装 scala, spark 支持的是 scala 2.10 和 2.11, 下载 2.11版本

  2. 下载 对应的spark 版本的源码, 注意要选择 匹配hadoop 版本的 spark 版本

  3. 执行命令

    hdfs dfs -mkdir /spark-logs
    mkdir -p /opt/tmp/spark-work
    mkdir -p /opt/logs/spark
    cd /opt/spark/conf 
    cp spark-env.sh.template spark-env.sh 
    cp spark-defaults.conf.template spark-defaults.conf 
    cp slaves.template slaves
    ln -s $HIVE_HOME/conf/hive-site.xml ./hive-site.xml
    rm -rf /opt/spark/jars/slf4j-log4j12-*.jar # 删除有冲突的jar 包
    
  4. 修改spark-env 的相关配置 (配置项可选)

    export SPARK_DIST_CLASSPATH=$($HADOOP_HOME/bin/hdfs classpath)
    export LD_LIBRARY_PATH=$HADOOP_HOME/lib/native
    export SPARK_LAUNCH_WITH_SCALA=0
    export SPARK_WORKER_MEMORY=26g
    export SPARK_DRIVER_MEMORY=26g
    export SPARK_MASTER_HOST=txz-data0
    export SPARK_MASTER_WEBUI_PORT=18080
    export SPARK_WORKER_DIR=/opt/tmp/spark-work # worker 工作目录
    export SPARK_MASTER_PORT=7077
    export SPARK_WORKER_PORT=7078
    export SPARK_LOG_DIR=/opt/logs/spark
    export HADOOP_CONF_DIR=$HADOOP_HOME/etc/hadoop
    export YARN_CONF_DIR=$HADOOP_HOME/etc/hadoop
    export SPARK_PID_DIR=/opt/tmp/spark-work
    
  5. 修改spark-defaults.conf

    spark.master                     spark://txz-data0:7077
    spark.eventLog.enabled           true
    # spark 事件启动日志
    spark.eventLog.dir               hdfs://txz-data0:9820/spark-logs
    spark.serializer                 org.apache.spark.serializer.KryoSerializer
    spark.executor.memory            12g
    spark.driver.memory              12g
    spark.executor.extraJavaOptions  -XX:+PrintGCDetails -Dkey=value -Dnumbers="one two three"
    # 告诉 yarn 去哪里查看 spark 的history 地址
    spark.yarn.historyServer.address txz-data0:19889
    # spark job 执行日志
    spark.history.fs.logDirectory    hdfs://txz-data0:9820/spark-log
    
  6. 将spark 复制到 DN 所在的节点上,配置好 slaves

  7. 配置好 spark 环境变量

    export SPARK_HOME=/opt/spark
    export SPARK_LOG_DIR=/opt/logs/spark
    export PATH=$SPARK_HOME/bin:$PATH
    
  8. 执行 /sbin/start-all.sh 启动spark, 访问 web 查看状态, 这里启动的是 spark 自带的 Standalone 模式

  9. 确认是否支持 hive ,执行 <SPARK_HOME>/bin/pyspark

    from pyspark.sql import HiveContext
    

    记得要删除有冲突的jar包, 如 /opt/spark/jars/slf4j-log4j12-*.jar

    注意

    如果spark 构建在 HA HDFS上, 则需要指定好 HADOOP_CONF_DIR , 来帮助 Spark 找到正确的 core-site.xml 和 hdfs-site.xml