Spark核心知识点

一、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.禁止行为

未经授权采集隐私数据,泄露集群配置使用,未过审境外组件

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值