spark是个分布式运算平台,在火热的大数据时代,很多企业很多场景都使用spark作为运算平台。一方面是其在计算的高效性,另一方面是其稳定性。官网有个很形象的说明,spark的运算效率是hadoop运算效率的100倍以上。广泛被运用在各种场景中,原因spark支持很多语言的接口:java、scala、python、R等,降低了开发人员的使用门槛。
下面介绍spark的构建过程:
1、环境准备,准备三台服务器:
192.168.1.119 work01
192.168.1.120 work02
192.168.1.121 work03
2、JDK环境构建
这里不再详述,主要是配置好JAVA_HOME
3、SCALA环境构建
从官网下载scala安装包:https://www.scala-lang.org/,我在这里下载的版本使用的是2.11.1
将安装包解压到某个目录:/opt/scala/scala-2.11.1
在/etc/profile中增加配置:
export SCALA_HOME=/opt/scala/scala-2.11.1
4、spark环境构建
从官网下载spark的安装包:https://spark.apache.org/downloads.html,我这里使用的是spark的2.1.0版本。
因spark core是由scala编写,官网默认的安装包统计是由scala的2.11版本编译。官网说明:Note: Starting version 2.0, Spark is built with Scala 2.11 by default. Scala 2.10 users should download the Spark source package and build with Scala 2.10 support.
配置spark-env.sh(文件不存在时,直接cp对应的default文件)
export SCALA_HOME=/opt/scala/scala-2.12.1
export JAVA_HOME=/usr/java/jdk1.8.0_121/
export SPARK_MASTER_IP=192.168.1.119
配置spark-env.sh(文件不存在时,直接cp对应的default文件)
work01
work02
work03
上述配置是最简单的,所有的配置都使用默认的形式,后面写spark实现运算时再详细介绍某些配置的使用。
三台服务器是完全相同的配置,先配置好work01节点后,再将spark目录scp到work02和work03对应的目录下。
5、启动服务
在spark的sbin目录下执行./start-all.sh
spark@work01:/opt/spark/spark-2.1.0-bin-hadoop2.7/sbin$ ./start-all.sh
starting org.apache.spark.deploy.master.Master, logging to /opt/spark/spark-2.1.0-bin-hadoop2.7/logs/spark-spark-org.apache.spark.deploy.master.Master-1-work01.out
work03: starting org.apache.spark.deploy.worker.Worker, logging to /opt/spark/spark-2.1.0-bin-hadoop2.7/logs/spark-spark-org.apache.spark.deploy.worker.Worker-1-work03.out
work02: starting org.apache.spark.deploy.worker.Worker, logging to /opt/spark/spark-2.1.0-bin-hadoop2.7/logs/spark-spark-org.apache.spark.deploy.worker.Worker-1-work02.out
work01: starting org.apache.spark.deploy.worker.Worker, logging to /opt/spark/spark-2.1.0-bin-hadoop2.7/logs/spark-spark-org.apache.spark.deploy.worker.Worker-1-work01.out
检查进程是否正常:
spark@work01:/opt/spark/spark-2.1.0-bin-hadoop2.7/sbin$ jps
46018 Jps
45865 Master
45966 Worker
spark@work02:/opt/spark/spark-2.1.0-bin-hadoop2.7/conf$ jps
9389 Worker
9439 Jps
spark@work02:/opt/spark/spark-2.1.0-bin-hadoop2.7/conf$ jps
9389 Worker
9439 Jps
查看master绑定的端口:
spark@work01:/opt/spark/spark-2.1.0-bin-hadoop2.7/sbin$ ss -lnp | grep 45865
tcp LISTEN 0 50 ::ffff:192.168.1.119:6066 :::* users:(("java",45865,227))
tcp LISTEN 0 1 :::8888 :::* users:(("java",45865,222))
tcp LISTEN 0 128 ::ffff:192.168.1.119:7077 :::* users:(("java",45865,220))
第一个端口是rpc的一个端口,建议一般情况下不要打开此端口,此端口可通过远程执行代码可入库对应的主机;第二个端口是webUI端口,第三个端口是执行Application时指定的端口。
通过webUI查看当前的状态: