Apache Spark 是专为大规模数据处理而设计的快速通用的计算引擎。 是 加州大学伯克利分校的AMP实验室所开发的类似Hadoop MapReduce的通用并行框架 。拥有Hadoop MapReduce所具有的优点;但不同于MapReduce的是——Job中间输出结果可以保存在内存中,从而不再需要读写HDFS,因此Spark能更好地适用于数据挖掘与机器学习等需要迭代的MapReduce的算法。 Spark 是在 Scala 语言中实现的,它将 Scala 用作其应用程序框架。与 Hadoop 不同,Spark 和 Scala 能够紧密集成,其中的 Scala 可以像操作本地集合对象一样轻松地操作分布式数据集。 尽管创建 Spark 是为了支持分布式数据集上的迭代作业,但是实际上它是对 Hadoop 的补充,Spark 是一个通用引擎,可用它来完成各种各样的运算,包括 SQL 查询、文本处理、机器学习等 。本文主要记录使用CentOS搭建Spark集群。
1 . 准备
1.准备三台Centos虚拟机,信息如下
ip | OS | 说明 |
---|---|---|
192.168.31.135 | CentOS 7 | Master |
192.168.31.136 | CentOS 7 | Worker |
192.168.31.137 | CentOS 7 | Worker |
2 . Java,去Oracle下载,注意Hadoop所要求的JAVA版本(java环境配置可参考之前zookeper集群搭建博客,这里不赘述)
3 . Hadoop,参考上一篇Hadoop集群搭建博文
4 . Scala ,去官网下载。下载地址:scala官网
5 . Spark,去官网下载。下载地址:
2 . 安装scala
进入官网来到下载页面
注意scala是运行于java虚拟机之上的,因此安装scala之前必须先配置好java环境。同时下载时注意对java的版本要求,例如上图中可得scala.2.12.6版本必须要求 java 8以上的版本。到此页面后拉至底部
我们需要的是Linux版本,所以选择第一个支持Unix系统的下载即可。在服务器创建好文件夹
1 | [root@centos1 ~]# cd /user |
将压缩包上传至 /user/scala目录下,使用解压命令解压。待解压完成后需要配置环境变量,使用如下命令编辑系统配置文件
1 | vi /etc/profile |
在最后加入scala的环境变量
1 | export SCALA_HOME=/user/scala/scala-2.12.6 |
配置完成后,使用下面的命令使配置生效
1 | source /etc/profile |
然后能通过命令查看的scala版本,能进入scala shell表示配置成功
1 | [root@centos1 user]# scala -version |
3 . 下载Spark
进入官网来到下载页面
注意Spark依赖Hadoop,在选择Spark版本时,要注意它对Hadoop的版本要求。例如上图中Spark-2.3.1对Hadoop的版本要求是2.7以上。选择完合适的版本后即可下载压缩包。下载完成把压缩包上传至服务器目录解压。
1 | tar zxvf spark-2.3.1-bin-hadoop2.7.tgz |
4 . 配置环境变量
编辑系统配置文件
1 | vi /etc/profile |
在底部加入spark的安装目录,如下
1 | export SPARK_HOME=/user/spark/spark-2.3.1-bin-hadoop2.7 |
保存退出后使用source命令使配置生效,同时通过spark-shell查看是否配置成功。如果出现如下界面表示已配置成功
5 . 配置Spark环境
进入spark安装目录,编辑spark-env.sh文件。没有该文件则新建一份
1 | [root@node1 ~]# cd /user/spark/spark-2.3.1-bin-hadoop2.7/conf |
属性解释
属性名 | 说明 |
---|---|
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文件,在文件底部加入work节点的Ip吗,内容如下
1 | # A Spark Worker will be started on each of the machines listed below. |
上述SCALA_HOME,SPARK_HOME,spark-env.sh,slaves文件的配置,可复制一份发送给所有Worker节点。不需更改,与Master节点保持完全一致。
6 . 启动Spark
先启动Hadoop,进入 /user/hadoop/hadoop-2.8.4/sbin 目录执行 start-all.sh 脚本
再启动Spark,进入 /user/spark/spark/spark-2.3.1-bin-hadoop2.7/sbin 目录执行 start-all.sh 脚本
spark已经成功启动完成,可通过jps命令查看状态
1 | [root@centos1 sbin]# jps |
可看到有Master进程,同时可访问Web UI网址:http://192.168.31.135:8080/
至此Spark集群搭建已经全部完成,下篇博客,将使用官方的单词计数例子,在自己搭建的集群上跑一跑
打赏一个呗