Spark集群安装 - standalone模式

准备工作

  1. 机器及角色
机器 机器名 节点类型
10.121.138.146 lfg01 Master
10.121.138.147 lfg02 Slave
10.121.138.148 lfg03 Slave
  1. 三台机器创建账号及免密登录
    账号:hadoop

  2. 三台机器安装Java1.8环境
    过程略

  3. 三台机器安装Scala环境
    我们打算安装spark 2.4.4,它依赖Scala 2.12,参考:https://spark.apache.org/docs/latest/#downloading

这里有一个坑:虽然spark 2.4.4,写着依赖Scala 2.12,但是安装完spark后,通过spark-shell命令,发现它竟然依赖的时Scala2.11.12。所以本地开发环境一定要使用Scala2.11.12版本,否则可能会出现Caused by: java.lang.NoClassDefFoundError: scala/runtime/LambdaDeserialize错误。

[hadoop@lfg01 ~]$ spark-shell
Using Spark's default log4j profile: org/apache/spark/log4j-defaults.properties
Setting default log level to "WARN".
To adjust logging level use sc.setLogLevel(newLevel). For SparkR, use setLogLevel(newLevel).
Spark context Web UI available at http://lfg01:4040
Spark context available as 'sc' (master = local[*], app id = local-1571298365414).
Spark session available as 'spark'.
Welcome to
      ____              __
     / __/__  ___ _____/ /__
    _\ \/ _ \/ _ `/ __/  '_/
   /___/ .__/\_,_/_/ /_/\_\   version 2.4.4
      /_/

Using Scala version 2.11.12 (Java HotSpot(TM) 64-Bit Server VM, Java 1.8.0_201)
Type in expressions to have them evaluated.
Type :help for more information.

scala>

scala版本列表:https://www.scala-lang.org/files/archive/
这里我们安装Scala 2.12最新版本2.12.10

wget https://www.scala-lang.org/files/archive/scala-2.12.10.tgz
tar -xzvf scala-2.12.10.tgz

使用root账号执行如下命令

mkdir -p /usr/local/scala
cp -r scala-2.12.10 /usr/local/scala
echo "export SCALA_HOME=/usr/local/scala/scala-2.12.10" >> /etc/profile
echo "export PATH=\$SCALA_HOME/bin:\$PATH" >> /etc/profile

切换到hadoop执行如下命令

source /etc/profile
scala -version

显示如下内容说明安装成功

Scala code runner version 2.12.10 -- Copyright 2002-2019, LAMP/EPFL and Lightbend, Inc.

spark安装

下载

下载页面:https://spark.apache.org/downloads.html
我们下载最新的版本2.4.4

wget http://mirror.bit.edu.cn/apache/spark/spark-2.4.4/spark-2.4.4-bin-hadoop2.7.tgz
tar -xzvf spark-2.4.4-bin-hadoop2.7
mkdir /data/spark
cp -r spark-2.4.4-bin-hadoop2.7 /data/spark/
wget http://mirror.bit.edu.cn/apache/spark/spark-2.4.4/spark-2.4.4-bin-hadoop2.7.tgz
tar -xzvf spark-2.4.4-bin-hadoop2.7.tgz

安装并配置环境变量

使用root用户:
创建安装目录

mkdir /data/spark
chown -R hadoop /data/spark
cp -r spark-2.4.4-bin-hadoop2.7 /data/spark/

配置环境变量

echo "export SPARK_HOME=/data/spark/spark-2.4.4-bin-hadoop2.7" >> /etc/profile
echo "export PATH=\$PATH:\$SPARK_HOME/bin" >> /etc/profile

切换回hadoop

source /etc/profile

配置spark参数

cp $SPARK_HOME/conf/slaves.template $SPARK_HOME/conf/slaves
vi $SPARK_HOME/conf/slaves

删除默认的localhost,把所有slave的机器名写入进去

lfg01
lfg02
lfg03

lfg01即是master,也是slave

创建spark-env.sh

cp $SPARK_HOME/conf/spark-env.sh.template $SPARK_HOME/conf/spark-env.sh
vi $SPARK_HOME/conf/spark-env.sh

加入以下内容:

export SPARK_MASTER_HOST=10.121.138.146
export SPARK_LOCAL_DIRS=/data/spark/data

SPARK_MASTER_HOST既可以配置host,也可以配置ip;如果配置host,访问webui时会出现host地址,所以建议配置ip地址

另外的机器也按照这个方式安装和配置

启动

手动启动

master上执行

cd $SPARK_HOME/sbin
./start-master.sh 

slave上执行

cd $SPARK_HOME/sbin
./start-slave.sh spark://lfg01:7077

访问spark web页面:http://10.121.138.146:8080/
能看到如下界面,说明安装成功

image.png