一、spark基础架构与核心概念
1.spark定位
基于内存计算的分布式大数据处理框架,支持离线批处理加实时流计算,速度远快于mapreduce,可独立运行,不依赖Hadoop,兼容Hadoop的生态
2.Spark运行架构基本概念
RDD
DAG
应用
任务
作业
阶段
3.核心组件
Driver
Executor
worker
master
4.spark和Mapreduce的核心区别
1.Spark是基于内存计算,Map reduce是以磁盘IO为主计算
2.sark多算子可以灵活编程,map reduce仅有map和reduce
3.sparkDAG调度;MapReduce多阶段依赖磁盘
4.spark延迟低,MapReduce延迟高
5.spark运行基本流程
1.首先构建基本运行环境,即由Driver创建一个SPARKCONTEXT,进行资源申请,任务的分配和监控
2.资源管理器为EXecutor分配资源,启动executor进程
3.sparkcontext根据RDD的依赖关系构建DAG图,DAG图交给DAGScheduler解析成Stage,然后把一个个taskset提交给底层调度器TASKScheduler处理,exector 向sparkcontext申请task,taskscheduler讲task发放给executor运行,并提供应用程序代码
4.task在executor上运行,执行结果反馈给taskscheduler,然后反馈给DAGScheduler,运行完毕后写入数据并释放所有资源
6.运行模式
yarn:生产环境首选,支持资源动态分配
其他:standalone、local、mesos k8s
7.应用提交
命令:spark-submit
指定主类参数:--class
二、RDD
1.核心特点
可分区、并行计算;不可变,只能通过转换生成新RDD
支持持久化;惰性求值(转换不触发,行动触发)
容错机制:Lineage血统(记录依赖关系实现故障修复)
2.两类操作
转换算子:惰性执行
例如:map filter flatmap reducebykey groupbykey join
行动算子:触发算子
例如:count collect take first foreach saveasTextFile countbykey
关键算子对比
reducebykey:先本地聚合再shuffle,性能更高
groupbykey:先shuffle再聚合,性能低
3.依赖关系
窄依赖:无shuffle,性能高(map filter flatmap)
宽依赖:有shuffle,划分stage(reducebykey groupbykey join)
4.持久化
cache():persist()简化版、默认存储于内存
persist():支持多存储机制级别
注意⚠️:非永久保存,应用停止即丢失
5.DAG与Stage
DAG是有向无环图,反映RDD依赖关系
DAG调度器:将作业拆分为Stage(任务调度的基本单位)
6.rdd执行过程总结
创建rdd对象
sparkcontext负责计算rdd依赖关系,构建DAG
DAGScheduler负责把DAG分成多个阶段,每个阶段包含多个任务,每个任务会被任务调度器分发给各个工作节点worknode上的\
executor去执行
三、sparksql(dataframe)
1.sparksql的特点
容易整合(集成)
统一的数据访问方式
兼容hive
标准的数据库连接
2.dataframe优势
带schema结构信息,支持sql查询
执行计划优化(catalyst优化器),效率高于RDD
适合结构化/半结构化数据,可与rdd互转
3.核心API
创建临时视图:createOrReplaceTempView/createTempView
创建全局临时视图:createGlobalTempView
支持直接查询HIVE表,兼容hiveql
4.支持数据源
csv 文本文件 parquet ORC JSON JDBC
5.工作流程
读取数据源 生成DATAFrame catalyst优化器生成执行计划 集群执行 返回结果
6.优化存储格式
Parquet/ORC:列式存储 支持压缩 谓词下推 大幅减少I/O,提升统计性能
四、spark streaming
1.基本原理
将实时流切分为微批次(batch),用spark core 批处理引擎执行,核心抽象(离散流,一系列RDD)
2.关键参数
批间隔:streamingcontext(sc,秒数)
延迟:秒级准实时,非毫秒级
窗口:window(windowDuration,sildeDuration)
3.支持数据源
socket kafka flume rdd队列 常用端口如9999(TCP监听)
4.程序标准四步骤
定义输入源
定义流计算
开始流计算
结束流计算
五、spark扩展库
1.Grapx(图计算)
核心结果:Graph
顶点:vertrdd
边:edgerdd
不支持顶点/边随意增删改查
2.Mlib
分类:逻辑回归、决策树、随机森林、XGBOOST、朴素贝叶斯
回归:线性回归
聚类:k-means
特征工程:vectorassembler(转换器,将多列转为特征向量)
特征转换:stringindexer(标签编码),indextostring(标签索引转换为字符串类型标签) vectorindex(对单个类别型特征进行转换)
模型评估:准确率,F1值,精确率,召回率
交叉验证:支持k折
六、spark性能优化
1.spark比MapReduce更快的原因
基于内存计算,中间结果不落盘
Dag调度减少,多次磁盘IO
内置优化器,并行度更高,延迟更低
2.大数据量优化机制
Rdd持久化:cache,persist
合理分区提升并行度
广播变量,优化小表关联
列式存储:parquet/ORC
七、高频考点
1.词频统计流程
读取数据 flatmap拆分单词 Map转换 Reducebykey求和 输出
2.分组聚合
Group by+agg(Avg/Sum/count)
3.数据过滤
filter(lambda x:条件)
4.排序
Sortby(Ascending=False),Sortbykey
5.二次排序
自定义key+重写比较器
6.机器学习流程
加载数据 特征工程 数据集拆分 模型训练 预测
模型训练必须用训练集,不可用测试集
7.大数据分析流程
数据采集 数据预处理 数据分析建模 模型评估 可视化分析
八、数据安全与伦理
1.核心要求
坚守数据安全底线,维护国家数据主权与核心利益
2.合规措施
数据加密 脱敏处理 权限管控 分级分类 操作审计
3.禁止行为
未经授权采集隐私数据,泄露集群配置使用,未过审境外组件

1095

被折叠的 条评论
为什么被折叠?



