目录
1.spark是什么?
首先我们看一下hadoop生态系统:
hdfs + zookeeper + mapreduce/hive + hbase + storm + mahout + 其他工具
如果说hive的产生是为了解决MapReduce的编程复杂问题,那么Spark的产生就是为了解决MapReduce的计算缓慢的问题
hdfs + zookeeper +spark + hbase + storm + mahout + 其他工具
所以:spark是快速,通用,可扩展的分布式计算引擎
2.spark的原理
3. spark的分布式部署
我们主要来讲spark的分部署部署
3.1 机器信息
机器列表 | 角色 |
wyl01 | master、work |
wyl02 | work |
wyl03 | work |
3.2 安装前准备工作
我们看官网上的要求:
- jdk
- python
- scala
3.2.1 jdk的安装
略
3.2.2 python的安装
略
3.2.3 scala的安装
scala官网,下载安装包
解压,配置环境变量,输入sacla出现面的交互模式,则表示安装成功
[root@wyl01 opt]# scala
Welcome to Scala 2.12.8 (Java HotSpot(TM) 64-Bit Server VM, Java 1.8.0_131).
Type in expressions for evaluation. Or try :help.
scala>
3.3 Spark的安装
3.3.1 获取安装包
3.3.2 解压,配置环境变量
tar -xf spark-2.3.3-bin-hadoop2.7.tgz -C /opt
vim /etc/profile
# 添加以下内容
export SPARK_HOME=/opt/spark
export PATH=${SPARK_HOME}/bin:$PATH
3.3.3 修改配置文件,分发到其他机器
在修改配置文件之前,我们看看单机版的一个Spark一个执行情况,我们就按照官网上的例子来做
[root@wyl01 spark]# ./bin/spark-shell
2019-05-24 11:10:29 WARN NativeCodeLoader:62 - Unable to load native-hadoop library for your platform... using builtin-java classes where applicable
Setting default log level to "WARN".
To adjust logging level use sc.setLogLevel(newLevel). For SparkR, use setLogLevel(newLevel).
Spark context Web UI available at http://wyl01:4040
Spark context available as 'sc' (master = local[*], app id = local-1558667447611).
Spark session available as 'spark'.
Welcome to
____ __
/ __/__ ___ _____/ /__
_\ \/ _ \/ _ `/ __/ '_/
/___/ .__/\_,_/_/ /_/\_\ version 2.3.3
/_/
Using Scala version 2.11.8 (Java HotSpot(TM) 64-Bit Server VM, Java 1.8.0_131)
Type in expressions to have them evaluated.
Type :help for more information.
scala> val textFile = spark.read.textFile("README.md") #是spark下的readme的一个文件
scala> textFile.count()
res0: Long = 103 # 看到结果是103行
修改配置文件,官网上也有介绍,只要修改2个配置文件
修改spark-env.sh配置文件
vim spark-env.sh
#添加以下内容
export JAVA_HOME=/opt/java
export HADOOP_HOME=/opt/hadoop
export HADOOP_CONF_DIR=/opt/hadoop/etc/hadoop
export SCALA_HOME=/opt/scala
export SPARK_MASTER_HOST=wyl01
export SPARK_MASTER_PORT=7077
修改slaves配置文件
vim slaves #添加work节点
wyl01
wyl02
wyl03
在master节点将spark的安装包分发到其他机器
rsync -av spark spark-2.3.3-bin-hadoop2.7 wyl02:/opt/
rsync -av spark spark-2.3.3-bin-hadoop2.7 wyl03:/opt/
3.3.4 启动服务
在master节点上启动服务,这里需要注意hadoop集群中也有start-all.sh,如果都配置了环境变量,这里我们最好是去spark的sbin目录下去启动比较好
[hadoop@wyl01 sbin]# ./start-all.sh
3.3.5 验证
查看进程是否启动
查看web 页面是否正常访问
跑一个任务验证
[hadoop@wyl01 sbin]# spark-submit --class org.apache.spark.examples.SparkPi --master spark://wyl01:7077 --deploy-mode cluster --supervise --executor-memory 512m --total-executor-cores 2 /opt/spark/examples/jars/spark-examples_2.11-2.3.3.jar 100
Running Spark using the REST application submission protocol.
2019-05-24 17:09:40 INFO RestSubmissionClient:54 - Submitting a request to launch an application in spark://wyl01:7077.
2019-05-24 17:09:51 WARN RestSubmissionClient:66 - Unable to connect to server spark://wyl01:7077.
Warning: Master endpoint spark://wyl01:7077 was not a REST server. Falling back to legacy submission gateway instead.
2019-05-24 17:09:51 WARN NativeCodeLoader:62 - Unable to load native-hadoop library for your platform... using builtin-java classes where applicable
至此,我们的spark集群就已经部署好了