Centos7搭建hadoop spark集群之spark集群搭建

环境

1
2
3
4
JDK:1.8  
Spark-2.2.0
Hadoop Release:2.7.5
centos:7.3

两台主机

1
2
10.4.20.181 spark01
10.4.20.48 spark02

依赖环境Hadoop
参考我的另一篇博客CentOs7搭建hadoop spark集群之hadoop集群搭建

spark集群搭建

下载spark2.2.0并解压到相应目录

我之前已经下好了spark2.2.0.tar.gz并用xftp上传到了主机spark01的/home/spark/download目录下

1
2
3
4
cd /home/spark/download
tar -zxf spark-2.2.0-bin-hadoop2.7.tgz -C /home/spark/app
cd /home/spark/app
mv spark-2.2.0-bin-hadoop2.7 spark

设置环境变量

如果是对所有的用户都生效就修改vi /etc/profile 文件
如果只针对当前用户生效就修改 vi ~/.bahsrc 文件

1
vim ~/.bahsrc

添加如下内容

1
2
3
#spark
export SPARK_HOME=/home/spark/app/spark/
export PATH=$SPARK_HOME/bin:$PATH

使环境变量生效,运行 source /.bahsrc使/.bahsrc文件生效,/etc/profile同理

修改配置

1
2
3
cd /home/spark/app/spark/conf
mv spark-env.sh.template spark-env.sh
vim spark-env.sh

在文件末尾添加如下内容

1
2
3
4
5
6
7
8
#Java安装目录
export JAVA_HOME=/usr/java

#Spark主节点的IP
export SPARK_MASTER_IP=10.4.20.181

#设置hadoop配置文件
export HADOOP_CONF_DIR=/home/spark/app/hadoop/etc/hadoop

简单介绍几个变量

1
2
3
4
5
6
7
8
JAVA_HOME:Java安装目录
SCALA_HOME:Scala安装目录
HADOOP_HOME:hadoop安装目录
HADOOP_CONF_DIR:hadoop集群的配置文件的目录
SPARK_MASTER_IP:spark集群的Master节点的ip地址
SPARK_WORKER_MEMORY:每个worker节点能够最大分配给exectors的内存大小
SPARK_WORKER_CORES:每个worker节点所占有的CPU核数目
SPARK_WORKER_INSTANCES:每台机器上开启的worker节点的数目

修改 slaves

1
2
3
cd /home/spark/app/spark/conf
mv slaves.template slaves
vim slaves

删除localhost,添加如下内容

1
2
spark01
spark02

配置集群

复制节点
进去spark安装目录 ,打包,并发送,到其他节点

1
2
3
cd cd /home/spark/app
tar zcf spark.tar.gz spark
scp spark.tar.gz spark@spark02:/home/spark/app

进去spark02节点 解压

1
2
cd /home/spark/app
tar -zxf spark.tar.gz

设置环境变量,跟上面设置环境的步骤一样

到这里一步确保你的每一个节点下面环境变量都有

1
2
3
4
5
6
7
8
9
10
11
#jdk
export JAVA_HOME=/usr/java
export JRE_HOME=$JAVA_HOME/jre
export CLASSPATH=.:$JAVA_HOME/lib:$JRE_HOME/lib
export PATH=$SPARK_HOME/bin:$SCALA_HOME/bin:$HADOOP_HOME/bin:$JAVA_HOME/bin:$PATH

#hadoop
export HADOOP_HOME=/home/spark/app/hadoop/

#spark
export SPARK_HOME=/home/spark/app/spark/

你可以输入env查看环境变量

1
env

启动集群

关闭防火墙

1
systemctl stop firewalld.service

启动 Hadoop

1
2
3
start-dfs.sh
start-yarn.sh
mr-jobhistory-daemon.sh start historyserver

此时hadoop的环境变量已配好

启动 Spark

1
2
cd /home/spark/app/spark
./sbin/start-all.sh

启动 Spark Shell

1
2
cd /home/spark/app/spark
./bin/spark-shell

spark web界面访问:http://10.4.20.181:8080
spark web界面
spark-shell 界面访问:http://10.4.20.181:4040
spark-shell界面

使用jps命令看到有以下几个进程

spark和hadoop集群搭建成功

集群运行模式

Spark应用程序在集群中运行时,需要借助于集群管理器(包括本地集群管理器、YARN、Mesos)来为其实现资源管理调度服务,实现对集群中各个机器的访问这里通过简单的示例介绍其中两种:独立集群管理器和Hadoop Yarn集群管理器。通过介绍,我们可以了解到如何在这两种集群管理器上运行Spark应用程序。

独立集群管理器

(1)在集群中运行应用程序JAR包
向独立集群管理器提交应用,需要把spark://spark01:7077作为主节点参数递给spark-submit。
下面我们可以运行Spark安装好以后自带的样例程序SparkPi,它的功能是计算得到pi的值(3.1415926)。
在Shell中输入如下命令:

1
bin/spark-submit --class org.apache.spark.examples.SparkPi --master spark://spark01:7077 examples/jars/spark-examples_2.11-2.2.0.jar 100 2>&1 | grep "Pi is roughly"

运行结果如下
运行结果

运行自己上传的jar包

1
bin/spark-submit --class WordCount /home/spark/app/spark/mycode/jars/WordCount.jar

–class后面跟的是要运行的jar包中的主类名

(2)在集群中运行spark-shell
也可以用spark-shell连接到独立集群管理器上。
首先做一点准备工作,把一个README.md文件拷贝到HDFS上,用于后面的测试。

1
2
3
cd /home/saprk/app/spark/
# 下面这条命令中,我们把spark安装目录下的README.md文件上传到分布式文件系统HDFS的根目录下
hadoop fs -put README.md /

在Shell中输入如下命令启动进入spark-shell:

1
2
cd /home/saprk/app/spark/
bin/spark-shell --master spark://spark01:7077

可以在spark-shell中输入如下代码进行测试:

1
2
3
4
5
6
scala> val textFile = sc.textFile("hdfs://spark01:9000/README.md")
textFile: org.apache.spark.rdd.RDD[String] = hdfs://spark01:9000/README.md MapPartitionsRDD[1] at textFile at <console>:24
scala> textFile.count()
res0: Long = 99
scala> textFile.first()
res1: String = # Apache Spark

用户在独立集群管理Web界面查看应用的运行情况,可以浏览器中输入地址进行查看(http://spark01:8080/),如下图:

Hadoop YARN管理器

在集群中运行应用程序JAR包
向Hadoop YARN集群管理器提交应用,需要把yarn-cluster作为主节点参数递给spark-submit。
在Shell中输入如下命令:

1
bin/spark-submit --class org.apache.spark.examples.SparkPi --master yarn-cluster examples/jars/spark-examples_2.11-2.2.0.jar

运行后,根据在Shell中得到输出的结果地址查看,如下图:

复制结果地址到浏览器,点击查看Logs,再点击stdout,即可查看结果,如下图:


关闭集群

关闭hadoop

1
2
3
stop-dfs.sh
stop-yarn.sh
mr-jobhistory-daemon.sh stop historyserver

关闭spark

1
2
cd /home/spark/app/spark
./sbin/stop-all.sh
打赏

请我喝杯咖啡吧~

支付宝
微信