搭建5节点hadoop+zookeeper+hbase+spark+kafka+storm(4):Spark

本篇介绍Spark集群安装。
版本:java 1.8,Hadoop 2.7.3,HBase 1.2.5,Zookeeper 3.4.10,Spark 2.1.1,Scala 2.12.2,Kafka 0.10.2.1,Storm 1.1.0。
以下操作都是以root用户进行,如需用户组和权限设定需自行配置。


1. 服务器信息及节点分配

服务器信息:

No Hostname 内网IP 外网IP OS
1 node01 192.168.5.11 192.168.205.50 Centos7
2 node02 192.168.5.12 192.168.205.62 Centos7
3 node03 192.168.5.13 192.168.205.63 Centos7
4 node04 192.168.5.14 192.168.205.70 Centos7
5 node05 192.168.5.15 192.168.205.102 Centos7

节点分配:

节点 node01 node02 node03 node04 node05
namenode YES YES NO NO NO
datanode NO NO YES YES YES
journalnode YES YES YES YES YES
zookeeper YES YES YES YES YES
hbase 主Master 备份Master RegionServer RegionServer RegionServer
spark YES YES YES YES YES
kafka YES YES YES YES YES
storm YES YES YES YES YES

2. 安装Scala

2.1 下载安装包

1
wget https://downloads.lightbend.com/scala/2.12.2/scala-2.12.2.tgz

2.2 安装

写一个简易部署脚本:

scala.sh
1
2
3
4
5
6
7
#/bin/bash

tar -xvf ./scala-2.12.2.tgz
mv ./scala-2.12.2 /usr/scala

echo "export SCALA_HOME=/usr/scala" >> /root/.bash_profile
echo "export PATH=\$SCALA_HOME/bin:\$PATH" >> /root/.bash_profile

修改权限并执行,执行时确保scala-2.12.2.tgz,scala.sh在同一目录下:
1
2
3
chmod +x ./scala.sh
./scala.sh
source /root/.bash_profile

2.3 安装所有节点

使用sftp将scala-2.12.2.tgz,scala.sh传到其他所有节点上并按照以上步骤进行部署。


3. 安装Spark

3.1 下载安装包

1
wget http://mirror.bit.edu.cn/apache/spark/spark-2.1.1/spark-2.1.1-bin-hadoop2.7.tgz

3.2 创建模板配置文件

需要修改的配置文件为spark-env.sh,slaves。

3.2.1 spark-env.sh

添加以下环境变量:

1
2
3
4
5
6
7
8
9
10
export JAVA_HOME=/usr/lib/jvm/java-1.8.0-openjdk-1.8.0.131-3.b12.el7_3.x86_64/jre
export SCALA_HOME=/usr/scala
export HADOOP_HOME=/usr/hadoop
export HADOOP_CONF_DIR=/usr/hadoop/etc/hadoop
export SPARK_DAEMON_Java_OPTS="-Dspark.deploy.recoveryMode=ZOOKEEPER -Dspark.deploy.zookeeper.url=node01:2181,node02:2181,node03:2181,node04:2181,node05:2181 -Dspark.deploy.zookeeper.dir=/spark"
export SPARK_EXECUTOR_MEMORY=1G
export SPARK_WORKER_CORES=1
export SPARK_WORKER_INSTANCES=1
export SPARK_WORKER_MEMORY=1G
export SPARK_HOME=/usr/spark

3.2.1 slaves

1
2
3
4
5
node01
node02
node03
node04
node05

3.3 安装部署

写一个简易部署脚本:

spark.sh
1
2
3
4
5
6
7
8
9
10
#/bin/bash

tar -xvf spark-2.1.1-bin-hadoop2.7.tgz
mv ./spark-2.1.1-bin-hadoop2.7 /usr/spark

cp -rf ./spark-env.sh /usr/spark/conf/spark-env.sh
cp -rf ./slaves /usr/spark/conf/slaves

echo "export SPARK_HOME=/usr/spark" >> /root/.bash_profile
echo "export PATH=\$SPARK_HOME/bin:\$PATH" >> /root/.bash_profile

修改权限并执行,执行时确保spark-env.sh,slaves,spark-2.1.1-bin-hadoop2.7.tgz,spark.sh在同一目录下:
1
2
3
chmod +x ./spark.sh
./spark.sh
source /root/.bash_profile

3.4 部署所有节点

使用sftp将spark-env.sh,slaves,spark-2.1.1-bin-hadoop2.7.tgz,spark.sh传到其他所有节点上并按照以上步骤进行部署。


4. Spark启动

node02作为备用master,基于zookeeper来自动选举active机器。

4.1 在node01执行以下命令

1
/usr/spark/sbin/start-all.sh

4.2 在node02执行以下命令

1
/usr/spark/sbin/start-master.sh

5. 测试验证

5.1 通过浏览器查看Spark信息

打开http://192.168.205.50:8080/:

5.2 通过jps查看进程

5.3 运行Spark提供的计算圆周率的示例程序

进入node01的/usr/spark目录,基于local master运行:

1
[root@node01 spark]# ./bin/spark-submit --class  org.apache.spark.examples.SparkPi  --master local  ./examples/jars/spark-examples_2.11-2.1.1.jar


基于spark on yarn运行:
1
[root@node01 spark]# ./bin/spark-submit --class  org.apache.spark.examples.SparkPi  --master yarn --deploy-mode cluster  ./examples/jars/spark-examples_2.11-2.1.1.jar


参照资料:
Spark2.1.0分布式集群安装
Linux安装Spark集群(CentOS7+Spark2.1.1+Hadoop2.8.0)
Spark2.1.1中用各种模式运行计算圆周率的官方Demo
Hadoop2.7.3+Spark2.1.0完全分布式集群搭建过程