准备工作
机器及角色
机器
机器名
节点类型
10.121.138.146
lfg01
Master
10.121.138.147
lfg02
Slave
10.121.138.148
lfg03
Slave
三台机器创建账号及免密登录
账号:hadoop
三台机器安装Java1.8环境
过程略
三台机器安装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>
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安装
下载
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