第三章 快速入门
目前Spark最新稳定版本:2.4.x系列,官方推荐使用的版本,也是目前企业中使用较多版本,网址:https://github.com/apache/spark/releases
Spark 2.4.x依赖其他语言版本如下,其中既支持Scala 2.11,也支持Scala 2.12,推荐使用2.11。
3.1 环境准备
本次Spark课程所使用的集群环境为3台虚拟机,否则就是1台虚拟机,安装CentOS 7.7系统:
其中虚拟机基本信息说明如下
1)、IP地址及主机名称
192.168.88.100 node1.itcast.cn node1
192.168.88.101 node2.itcast.cn node2
192.168.88.102 node3.itcast.cn node3
在Windows系统配置上述映射关系,配置文件:C:\Windows\System32\drivers\etc\hosts。
2)、系统用户及密码
超级管理员用户:root/123456
普通用户:itcast/itcast
3)、虚拟机安装环境及快照
当讲解集群安装部署时,使用分布式集群环境,否则讲解知识点时使用伪分布式环境,主要节省宿主机资源及避免分布式环境带来学习中环境问题。
4)、软件安装目录为:【/export/server】,Hadoop离线框架使用CDH-5.16.2版本
本章节Spark应用程序运行在伪分布式环境中,所以使用【3、基础环境(伪分布式)】快照进行操作,如下图所示:
3.2 源码编译
Spark 软件安装包下载:http://spark.apache.org/downloads.html
默认情况下,可以下载官方提供的针对Apache不同版本的Hadoop编译的软件包,但是在实际企业项目开发中下载Spark对应版本源码,依据所使用的Hadoop版本进行编译,同时不会使用CDH 5.x提供Spark版本(其一:Spark版本太低;其二:CDH 版本Spark功能阉割,尤其在SparkSQL模块,由于SparkSQL与Cloudera公司Impala属于竞争关系),源码下载地址:https://archive.apache.org/dist/spark/spark-2.4.5/
具体如何编译Spark源码,参考官方文档,注意Maven版本:
http://spark.apache.org/docs/2.4.5/building-spark.html
整个编译大概耗时1个小时左右,具体依赖网络及下载依赖包速度,如下为编译完成截图:
3.3 Spark 安装
将编译完成spark安装包【spark-2.4.5-bin-cdh5.16.2-2.11.tgz】解压至【/export/server】目录:
## 解压软件包
tar -zxf /export/software/spark-2.4.5-bin-cdh5.16.2-2.11.tgz -C /export/server/
## 创建软连接,方便后期升级
ln -s /export/server/spark-2.4.5-bin-cdh5.16.2-2.11 /export/server/spark
其中各个目录含义如下:
第一步、安装Scala-2.11.12
## 解压Scala
tar -zxf /export/softwares/scala-2.11.12.tgz -C /export/server/
## 创建软连接
ln -s /export/server/scala-2.11.12 /export/server/scala
## 设置环境变量
vim /etc/profile
### 内容如下:
# SCALA_HOME
export SCALA_HOME=/export/server/scala
export PATH=$PATH:$SCALA_HOME/bin
第二步、修改配置名称
## 进入配置目录
cd /export/server/spark/conf
## 修改配置文件名称
mv spark-env.sh.template spark-env.sh
第三步、修改配置文件,$SPARK_HOME/conf/spark-env.sh,增加如下内容:
## 设置JAVA和SCALA安装目录
JAVA_HOME=/export/server/jdk
SCALA_HOME=/export/server/scala
## HADOOP软件配置文件目录,读取HDFS上文件和运行YARN集群
HADOOP_CONF_DIR=/export/server/hadoop/etc/hadoop
第四步、启动HDFS集群,从HDFS上读取数据文件
# 启动NameNode
hadoop-daemon.sh start namenode
# 启动DataNode
hadoop-daemon.sh start datanode
3.4 运行spark-shell
本地模式运行Spark框架提供交互式命令行:spark-shell,其中本地模式LocalMode含义为:启动一个JVM Process进程,执行任务Task,使用方式如下:
--master local | local[*] | local[K] 建议 K >= 2 正整数
其中K表示启动线程数目(或CPU Core核数),
本地模式启动spark-shell:
## 进入Spark安装目录
cd /export/server/spark
## 启动spark-shell
bin/spark-shell --master local[2]
运行成功以后,有如下提示信息:
其中创建SparkContext实例对象:sc、SparkSession实例对象:spark和启动应用监控页面端口号:4040,详细说明如下:
Spark context Web UI available at http://192.168.59.140:4040
#表示每个Spark 应用运行时WEB UI监控页面,端口号4040
Spark context available as 'sc' (master = local[2], app id = local-1572380095682).
#表示SparkContext类实例对象名称为sc
#在运行spark-shell命令行的时候,创建Spark 应用程序上下文实例对象SparkContext
#主要用于读取要处理的数据和调度程序执行
Spark session available as 'spark'.
#Spark2.x出现的,封装SparkContext类,新的Spark应用程序的入口
#表示的是SparkSession实例对象,名称spark,读取数据和调度Job执行
将【$SPARK_HOME/README.md】文件上传到HDFS目录【/datas】,使用SparkContext读取文件,命令如下:
## 上传HDFS文件
hdfs dfs -mkdir -p /datas/
hdfs dfs -put /export/server/spark/README.md /datas
## 读取文件
val datasRDD = sc.textFile("/datas/README.md")
## 条目数
datasRDD.count
## 获取第一条数据
datasRDD.first
相关截图如下: