Spark 安装和使用
2026/9/13 22:49:53 网站建设 项目流程

大数据计算引擎的发展

HDFS 是大数据常用分布式存储,

Hive 提供 HiveQL,不存储业务数据,数据存放于 HDFS

第一代计算引擎:MapReduce:用廉价机器实现分布式大数据处理

第二代计算引擎:Tez:基于MR优化了DAG,性能比MR快一些

第三代计算引擎:Spark:优先使用内存式计算引擎 ,国内目前主要应用的离线计算引擎

第四代计算引擎:Flink:实时流式计算引擎 , 国内目前最主流实时计算引擎

计算引擎:你的车的发动机 、计算机中的 CPU

Spark简介 [火花]

定义:基于内存式计算的分布式的统一化的数据分析引擎。

发展历程

2009年,Spark诞生于伯克利AMPLab,伯克利大学的研究性项目。

2014年2月成为Apache顶级项目,同年5月发布Spark 1.0正式版本

2018年Spark2.4.0发布,成为全球最大的开源项目,目前是Apache中的顶级项目之一。

2020年6月Spark发布3.0.0正式版,目前学习的就是3.x

DataBricks官网:https://databricks.com/spark/about

spark的诞生其实是因为MR计算引擎太慢了。

MR计算是基于磁盘的,Spark计算是基于内存的。

Spark能做什么

实现离线数据批处理:类似MapReduce、Pandas,写代码做处理:代码类的离线数据处理

实现交互式即时数据查询:类似于Hive、Presto、Impala,使 用SQL做即席查询分析:SQL类的离线数据处理

实现实时数据处理:类似于Storm、Flink实现分布式的实时计算:代码类实时计算或者SQL类的实时计算

实现机器学习的开发:代替传统一些机器学习工具

Spark有哪些部分组成?

Hadoop的组成部分:common、MapReduce、Hdfs、Yarn

Spark Core:Spark最核心的模块,可以基于多种语言实现代码类的离线开发 【类似于MR】

Spark SQL:类似于Hive,基于SQL进行开发,SQL会转换为SparkCore离线程序 【类似Hive】

Struct Streaming:基于SparkSQL之上构建了结构化实时计算模块

Spark ML lib:机器学习算法库,提供各种机器学习算法工具,可以基于SparkCore或者SparkSQL实现开发。

Spark 为什么要 on Hive?

Hive 的优势是:可以存储数据 (创建一个表,把数据存储到表中)

Spark 的优势: 基于内存的计算引擎,sql 速度特别快

Spark On Hive !

Spark的安装和部署

下载安装包

我们使用的是Hive3.1.3版本,安装Spark3.5.9

国内镜像(下载速度快,生产首选)

  1. 清华 TUNA 镜像 Index of /apache/spark
  2. 阿里镜像 apache-spark安装包下载-开源镜像站-阿里云

标准完整版,预打包 Hadoop3 客户端 jar,包含 spark-shell、spark-sql、pyspark、SparkR,可直接对接 HDFS/YARN/Hive。解压后就是完整 Spark 集群部署包,绝大多数生产环境选这个

上传、解压、重命名

tar -zxf spark-3.5.9-bin-hadoop3.tgz -C /opt/installs
cd /opt/installs mv spark-3.5.9-bin-hadoop3/ spark3.5.9

配置环境变量

vim /etc/profile.d/myenv.sh
export SPARK_HOME=/opt/installs/spark3.5.9 export PATH=$PATH:$SPARK_HOME/bin:$SPARK_HOME/sbin
source /etc/profile

测试安装成功

Spark Python Shell 是一个交互工具,可以启动spark中的交互工具,里面可以写代码

pyspark --master local[2]

退出测试

exit()

Spark On Hive 模式

Hive中可以使用Beeline或者Dbeaver连接HiveServer2进行测试,那SparkSQL中如何实现?

ThriftServer

  • 功能:类似于HiveServer2,负责解析客户端提交的SQL语句,转换成Spark的任务进行执行
  • 本质:Spark中的一个特殊的程序,利用程序的资源运行所有SQL,该程序除非手动关闭,否则一直运行

在hive的hive-site.xml添加如下配置

vim hive-site.xml
<property> <name>hive.metastore.schema.verification</name> <value>false</value> </property>

将hive-site.xml 复制到 spark的conf 下

cp /opt/installs/hive3.1.3/conf/hive-site.xml /opt/installs/spark3.5.9/conf

修改spark下的hive-site.xml,将之前的 10000 端口,修改为 10001 端口

cd /opt/installs/spark3.5.9/conf
vim hive-site.xml
<property> <name>hive.server2.thrift.port</name> <value>10001</value> </property>

新增环境变量

vim /etc/profile.d/myenv.sh
export HADOOP_CONF_DIR=$HADOOP_HOME/etc/hadoop export YARN_CONF_DIR=$HADOOP_HOME/etc/hadoop
source /etc/profile

记得每次先启动 metastore 服务!!!然后在启动thrift服务

start-stop.sh

hive-server-manager.sh stop

start-all.sh

hive-server-manager.sh start

停止spark服务

/opt/installs/spark3.5.9/sbin/stop-thriftserver.sh

启动spark服务

/opt/installs/spark3.5.9/sbin/start-thriftserver.sh \ --hiveconf hive.server2.thrift.port=10001 \ --hiveconf hive.server2.thrift.bind.host=bigdata001 \ --master yarn \ --conf spark.sql.shuffle.partitions=2

可查看到如下进程,该服务不会停止,一直在后台启动,假如启动不了,记得查看日志。

当我们把 thrift 服务已停止,这些都瞬间消失了。

连接测试

编写一个远程服务脚本

在/usr/local/bin 下创建一个脚本:spark-server-manager.sh

#!/bin/bash # 使用方式: spark-server-manager.sh [start|stop|] help_info() { echo "参数异常,请重新输入" exit -1 } # 获取操作命令 op=$1 # 检查参数是否正确 if [ ! $op ]; then help_info elif [ $op != "start" -a $op != "stop" ]; then help_info fi # 开启服务 start_thrift() { /opt/installs/spark3.5.9/sbin/start-thriftserver.sh \ --hiveconf hive.server2.thrift.port=10001 \ --hiveconf hive.server2.thrift.bind.host=bigdata001 \ --master yarn \ --conf spark.sql.shuffle.partitions=2 } # 停止服务 stop_thrift() { sh /opt/installs/spark3.5.9/sbin/stop-thriftserver.sh } # 控制操作 ${op}_thrift

chmod 777 spark-server-manager.sh

spark-server-manager.sh start
spark-server-manager.sh stop

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询