Spark 安装和使用

发布时间:2026/9/13 22:50:02
Spark 安装和使用
大数据计算引擎的发展HDFS 是大数据常用分布式存储Hive 提供 HiveQL不存储业务数据数据存放于 HDFS第一代计算引擎MapReduce用廉价机器实现分布式大数据处理第二代计算引擎Tez基于MR优化了DAG性能比MR快一些第三代计算引擎Spark优先使用内存式计算引擎 国内目前主要应用的离线计算引擎第四代计算引擎Flink实时流式计算引擎 , 国内目前最主流实时计算引擎计算引擎你的车的发动机 、计算机中的 CPUSpark简介 [火花]定义基于内存式计算的分布式的统一化的数据分析引擎。发展历程2009年Spark诞生于伯克利AMPLab伯克利大学的研究性项目。2014年2月成为Apache顶级项目同年5月发布Spark 1.0正式版本2018年Spark2.4.0发布成为全球最大的开源项目目前是Apache中的顶级项目之一。2020年6月Spark发布3.0.0正式版目前学习的就是3.xDataBricks官网https://databricks.com/spark/aboutspark的诞生其实是因为MR计算引擎太慢了。MR计算是基于磁盘的Spark计算是基于内存的。Spark能做什么实现离线数据批处理类似MapReduce、Pandas写代码做处理代码类的离线数据处理实现交互式即时数据查询类似于Hive、Presto、Impala使 用SQL做即席查询分析SQL类的离线数据处理实现实时数据处理类似于Storm、Flink实现分布式的实时计算代码类实时计算或者SQL类的实时计算实现机器学习的开发代替传统一些机器学习工具Spark有哪些部分组成Hadoop的组成部分common、MapReduce、Hdfs、YarnSpark CoreSpark最核心的模块可以基于多种语言实现代码类的离线开发 【类似于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国内镜像下载速度快生产首选清华 TUNA 镜像 Index of /apache/spark阿里镜像 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/installscd /opt/installs mv spark-3.5.9-bin-hadoop3/ spark3.5.9配置环境变量vim /etc/profile.d/myenv.shexport SPARK_HOME/opt/installs/spark3.5.9 export PATH$PATH:$SPARK_HOME/bin:$SPARK_HOME/sbinsource /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.xmlproperty namehive.metastore.schema.verification/name valuefalse/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/confvim hive-site.xmlproperty namehive.server2.thrift.port/name value10001/value /property新增环境变量vim /etc/profile.d/myenv.shexport HADOOP_CONF_DIR$HADOOP_HOME/etc/hadoop export YARN_CONF_DIR$HADOOP_HOME/etc/hadoopsource /etc/profile记得每次先启动 metastore 服务然后在启动thrift服务start-stop.shhive-server-manager.sh stopstart-all.shhive-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.port10001 \ --hiveconf hive.server2.thrift.bind.hostbigdata001 \ --master yarn \ --conf spark.sql.shuffle.partitions2可查看到如下进程该服务不会停止一直在后台启动假如启动不了记得查看日志。当我们把 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.port10001 \ --hiveconf hive.server2.thrift.bind.hostbigdata001 \ --master yarn \ --conf spark.sql.shuffle.partitions2 } # 停止服务 stop_thrift() { sh /opt/installs/spark3.5.9/sbin/stop-thriftserver.sh } # 控制操作 ${op}_thriftchmod 777 spark-server-manager.shspark-server-manager.sh startspark-server-manager.sh stop