本文作者:贺圣军,叩丁狼高级讲师。原创文章,转载请注明出处。
现在在大数据的生态圈的离线的处理主要使用的是MapReduce和Hive技术,但是对于实时处理分析,越来越多的企业使用的Spark作为企业的内存处理计算框架,相对于MapReduce,Spark主要有以下一些特点:
- Spark基于内存运算要比MapReduce块100倍,基于HDFS也要快10倍以上
- Spark简单易用,有相对成熟的API,支持使用Scala,Python和Java的API
- Spark提供了统一的解决方案,Spark可以用于批处理,交互式查询,实时处理,机器学习和图计算
- 兼容性好,Spark可以运行在standalone,YARM,Mesos等资源调度管理框架
接下来我们来搭建一个Spark的集群模式,本教程讲搭建Spark2.3的版本,其中依赖的相关配置如下
- 操作系统:CentOS Linux release 7.5.1804 (Core)
- jdk使用 1.8.0_171
- hadoop版本使用 hadoop-2.9.1(使用HDFS文件系统)
- 注册中心使用zookeeper-3.4.12
安装好上述相关软件,我们来时我们的Spark集群规划
主从节点 | lab201 | lab202 | lab203 |
---|---|---|---|
Master节点 | √ | √ | |
Worker节点 | √ | √ | √ |
-
接下来去官网下载对应的安装包:http://mirrors.tuna.tsinghua.edu.cn/apache/spark/spark-2.3.1/spark-2.3.1-bin-hadoop2.7.tgz
-
分别上传到三台主机
[root@lab201 soft]# pwd
/root/soft
[root@lab201 soft]# ls |grep sp
spark-2.3.1-bin-hadoop2.7.tgz
- 解压文件到指定的安装目录
[root@lab201 soft]# tar -zxvf spark-2.3.1-bin-hadoop2.7.tgz -C ~/apps/
[root@lab201 apps]# pwd
/root/apps
[root@lab201 apps]# ls
hadoop-2.9.1 hive-1.2.2 jdk1.8 maven-3.5.4 spark-2.3.1-bin-hadoop2.7 zookeeper-3.4.12
- 使用scp命令分别拷贝到另外两台主机
[root@lab201 apps]# scp -r spark-2.3.1-bin-hadoop2.7/ lab202:$PWD
[root@lab201 apps]# scp -r spark-2.3.1-bin-hadoop2.7/ lab203:$PWD
- 拷贝完成以后开始修改对应的配置文件
spark-env.sh:主要配置JAVA_HOME,是spark程序的启动配置文件
[root@lab201 conf]# mv spark-env.sh.template spark-env.sh
[root@lab201 conf]# vi spark-env.sh
#配置java的运行环境
JAVA_HOME=/root/apps/jdk1.8
#配置Master节点使用ZKserver进行注册管理,避免单节点故障
export SPARK_DAEMON_JAVA_OPTS="-Dspark.deploy.recoveryMode=ZOOKEEPER -Dspark.deploy.zookeeper.url=lab201:2181-Dspark.deploy.zookeeper.dir=/spark"
#配置HADOOP环境的配置目录,根据HADOOP的客户端配置决定默认是读取HDFS还是本地file:///
HADOOP_CONF_DIR=/root/apps/hadoop-2.9.1/etc/hadoop
- slaves: 主要配置从节点Worker的地址
[root@lab201 conf]# mv slaves.template slaves
[root@lab201 conf]# vi slaves
lab201
lab202
lab203
- 把修改的配置文件拷贝到另外两台主机
[root@lab201 conf]# scp slaves spark-env.sh lab202:$PWD
[root@lab201 conf]# scp slaves spark-env.sh lab203:$PWD
-
启动master节点和worker节点
在lab201执行 sbin/start-all.sh
[root@lab201 spark-2.3.1-bin-hadoop2.7]# pwd
/root/apps/spark-2.3.1-bin-hadoop2.7
[root@lab201 spark-2.3.1-bin-hadoop2.7]# sbin/start-all.sh
- 在lab202 单独启动marster集群
[root@lab202 spark-2.3.1-bin-hadoop2.7]# sbin/start-master.sh
-
通过jps检查进程是否正常启动
lab201
[root@lab201 spark-2.3.1-bin-hadoop2.7]# jps
2517 Jps
2455 Worker
1496 QuorumPeerMain
2348 Master
lab202
[root@lab202 spark-2.3.1-bin-hadoop2.7]# jps
1552 QuorumPeerMain
2409 Jps
2253 Worker
2334 Master
lab203
[root@lab203 bin]# jps
2195 Jps
2137 Worker
1550 QuorumPeerMain
如果都有上面的Master和Worker进程说明启动成功
-
当然,我们也可以通过访问Spark的管理页面看到其中的运行状态
其中一个状态为ALIVE 另外一个状态为STANDBY
好了,关于Spark的集群环境搭建基本上已经完成. 我们就可以开始Spark框架的学习了。