Spark概念
- 是一个大数据分析计算引擎。
- 基于内存
- 快速、通用、可拓展。
Spark & Flink
- Spark : 离线
- Flink : 实时
离线与实时的概念
从数据处理的延迟角度,分为离线与实时
延迟:从开始计算到得到结果中间过程的间隔时间
- 离线:延迟以小时、天为单位(尽量保证在1天之内)
- 实时:延迟以毫秒为单位,即1s之内得到结果,就是实时
Hadoop生态
- 早期Hadoop就是一个计算框架
- 后来衍生为生态系统 计算需要数据,大量数据不够存储,于是产生了HDFS> HDFS(GFS) + MR(MR) + HBase(BigTable)> hive + Flume
Spark & MR
都是离线的
- MR:基于goole三篇大数据论文之一。核心思想:把数据打散之后再聚合。基于一次性计算的中心思想设计,不适合迭代式计算- 一次性计算:数据源——(Map打散)——>Data——(Reduce聚合)——>目的地
- hive: MR开发效率低,产生hive框架;但hive虽然用sql语言简化MR,但底层还是MR,运行效率低
- Spark:因为MR运行效率低,产生Spark。基于MR开发的,改善了MR的中间计算过程,让数据不再罗盘,可以通过内存进行数据传输因此 Spark和MR的最大区别在于:1. MR基于磁盘文件做计算,Spark基于内存做计算。2. MR一次性计算,Spark可迭代式计算3. MR基于Java语言;Spark基于Scala语言,函数式语言
Spark弊端:过于依赖内存,且因为数据倾斜,当内存资源较少时,容易出错。只能让运行效率快,但开发效率仍然低。
Spark内置模块
Spark Core
实现Spark基本功能
Spark SQL结构化数据
Spark Streaming实时计算
Spark Milib机器学习 *
SparkGraghX图计算 *
独立调度器
spark自己搭建集群管理资源,因为spark是一个计算框架,对于资源调度方面,yarn更强势
YARN
国内用的较多
Mesos
国外应用较多
spark安装演示
1、地址
- 官网地址:http://spark.apache.org/
- 档查看地址:https://spark.apache.org/docs/3.3.1/
- 下载地址:https://spark.apache.org/downloads.html https://archive.apache.org/dist/spark/
2、目录结构
bin
存储可执行文件
- .cmd 结尾 Windows系统使用
- .sh 结尾 Linux系统使用
sbin
运行中以s开头的命令,基本是一些启停命令
conf
存储配置文件
以.template结尾,表示只起到参考作用
data
存储一些模拟数据
example
存放官方案例的源码(src)和 可运行程序(打成了jar包,存放到jars目录下)
jars
spark软件自己用到的jar包
Spark运行模式
运行环境:
spark是一个计算框架,所以计算所需资源,Spark需要依托于其他软件提供
单机环境(local模式)
由当天Spark软件所在节点提供资源(cpu、内存)
运行在一台机器上的模式,本地模式
计算逻辑——通过接口——>spark
案例:
bin/spark-submit
–class org.apache.spark.examples.SparkPi
–master local[2]
./examples/jars/spark-examples_2.12-3.3.1.jar
10
真正启动的是Java虚拟机 spark-submit
–后跟的参数,是一对参数
不同–后的参数可以调整顺序
在任务运行还没有完成时,可登录hadoop102:4040查看程序运行结果
集群环境(YARN模式)
由服务器集群体提供计算资源(cpu、内存)
YARN 提供
启动YARN后,由RM管理,由NodeManager(Java虚拟机进程–4096)启动
- NM内存:4G
- NM的cpu核:默认每个NM8个虚拟核
- 解压spark到路径/opt/module
tar -zxvf spark-3.3.1-bin-hadoop3.tgz -C /opt/module/
- 进入该目录,修改名字(便于和本地模式区分)
mv spark-3.3.1-bin-hadoop3/ spark-yarn
- 修改Hadoop配置文件
vim /opt/module/hadoop/etc/hadoop/yarn-site.xml
<!--是否启动一个线程检查每个任务正使用的物理内存量,如果任务超出分配值,则直接将其杀掉,默认是true --><property><name>yarn.nodemanager.pmem-check-enabled</name><value>false</value></property><!--是否启动一个线程检查每个任务正使用的虚拟内存量,如果任务超出分配值,则直接将其杀掉,默认是true --><property><name>yarn.nodemanager.vmem-check-enabled</name><value>false</value></property>
- 分发配置文件到其他节点
xsync /opt/module/hadoop/etc/hadoop/yarn-site.xml
- 修改spark配置文件 拷贝配置文件并改名
cd /opt/module/spark-yarn/conf/
cp spark-env.sh.tmplate spark-env.sh
vim spark-env.sh
增加内容:
YARN_CONF_DIR=/opt/module/hadoop/etc/hadoop
- 启动HDFS和YARN
在namenode节点:sbin/start-dfs.sh
在yarn节点:sbin/start-yarn.sh
- 执行一个程序
cd /opt/module/spark-yarn/
bin/spark-submit
–class org.apache.spark.examples.SparkPi
–master yarn
./examples/jars/spark-examples_2.12-3.3.1.jar
10
对比指令: – master后跟的参数不同
集群模式下,spark会先向HDFS上传spark库,然后yarn会下载资源,然后跑程序,最后删除资源。
- 查看hadoop作业运行日志 http://hadoop103:8088/ hadoop103:8088页面,点击History,查看历史页面 注意:hadoop集群要开启历史服务后才可以看到
- 查看spark作业运行日志 http://hadoop102:4040/ 注意:只有在进程运行时才可以看到
想在执行完后看到监控界面,需要配置历史服务
配置历史服务
- 进入目录
/opt/module/spark-yarn/conf
- 拷贝配置文件并改名
cp spark-defaults.conf.template spark-defaults.conf
- 修改 (1) spark-defaults.conf
vim spark-defaults.conf
查看HDFS信息:
http://hadoop102:9870/
标黄处的端口号是什么,就在配置文件中添加什么
spark.eventLog.enabled true
spark.eventLog.dir hdfs://hadoop102:8020/directory
为了能从Yarn上关联到Spark历史服务器,需要配置spark历史服务器关联路径。
目的:点击yarn(8088)上spark任务的history按钮,进入的是spark历史服务器(18080),而不再是yarn历史服务器(19888)。
继续添加:
spark.yarn.historyServer.address=hadoop102:18080
spark.history.ui.port=18080
在hdfs网页中创建目录directory
(2)spark-env.sh
vim spark-env.sh
增加内容:
export SPARK_HISTORY_OPTS="
-Dspark.history.ui.port=18080
-Dspark.history.fs.logDirectory=hdfs://hadoop102:8020/directory
-Dspark.history.retainedApplications=30"
- Dspark.history.ui.port:WEBUI访问的端口号为18080
- Dspark.history.fs.logDirectory:指定历史服务器日志存储路径(读)
- Dspark.history.retainedApplications:指定保存Application历史记录的个数,如果超过这个值,旧的应用程序信息将被删除,这个是内存中的应用数,而不是页面上显示的应用数。
- 重启当前Spark历史服务 回到spark-yarn安装目录下
sbin/stop-history-server.sh
sbin/start-history-server.sh
- 再次提交任务到YARN执行
- 在web端查看日志 http://hadoop103:8088/cluster 点击history跳转到spark历史服务界面
重点
- 计算逻辑
- 底层原理
版权归原作者 小酱MaaFY 所有, 如有侵权,请联系我们删除。