spark大数据处理技术、 应用与性能优化

spark大数据处理技术、 应用与性能优化

**spark简介**
	spark是什么
		基于内存的分布式实时计算框架,保证高容错高可伸缩性
	与hadoop的关系
		hadoop是mapreduce以及hdfs等基础加上hive,hbase,等上层的生态关系,

spark是mapreducce的替代方案,sparksql是hive的替代方案,sparkstreaming是storm的替代方案,mllib是mahout的替代方案,graphx是graphlab的替代方案
与hadoop相比的优势
输出结果上,以stage为单元的有向无环图,多个任务可以串联或可以并行执行,
数据格式或内存布局上,采用RDD作为分布式数据集,分布式读写,
执行策略上,基于任务执行计划图,DAG输出,避免shuffle耗费太多的时间,
任务调度上,基于时间驱动的MKKA启动任务,避免进程或线程启动开销
spark带来的好处
全栈计算范式的流水线
轻量级快速处理
易于使用,支持多语言
与hdfs兼容
社区活跃度高
spark集群安装与部署
安装jdk
安装scala
配置ssh
安装hadoop
安装spark
spark工作机制
spark应用的执行机制
spark应用的概念
application:自定义的spark程序
Driver Program:main函数以及sparkcontext
RDDGraph:核心结构,可以通过算子运算
job:Rdd作业,由action触发
stage:job会被切分多个stage,每个stage包含多个task
task:一个分区对应一个task
spark调度与任务分配模块
调度模式
local模式
standalone模式
基于fifo独占可用资源
yarn模式
在yarn客户端设置可用资源
mesos模式
静态分配资源
job模式
FIFO:先进先出,独占资源
Fair:多个job轮流调度
调度池;调度模式选择FIFO或则fair,池子内部通过FIFO执行
stage的生成
task的调度
sparkIO机制
序列化
将链表存储的非连续空间转换为连续空间存储数组
作用
进程间通信
数据持久化
进程间通信方式
actor消息模式
java NIO
Netty OIO
压缩
snappy
lzf
spark块管理
通信层:采用Master/Slave结构实现通信
存储层:存储到内存或磁盘
spark通信模块
RPC远程过程调用协议
基于c/s,本地分布式对象向本机发请求,通过网络向其他的服务器发送请求,进行处理, 再返回给客户端
rmi远程方法调用
RMI支持对象通信
jms java消息
支持p2p以及pub/stub两种消息模型
ejb 企业级规范
分布式事务、安全、日志等问题
web service
网络间跨语言,跨平台的分布式通信标准,如xml,json
容错机制
lineage
如果出错,则重新计算
checkpoint
记录关键信息,在内存中缓存RDD
shuffle机制
shuffle write
shuffle fetch
shuffle aggregator
spark计算模型
value型transformation算子
输入与输出一对一
flatmap
map
mappartitions
glom
输入与输出多对一
union
cartesian
输入与输出多对多
groupby
输出为输入的子类型
filter
distinct
substract
sample
takesample
cache型
cache
persist
key-value型transformation算子
输入与输出一对一
mapvalues
对单个RDD与两个RDD聚集
keybinbykey
reducebykey
partitionby
连接
join
leftoutjoin和rightoutjoin
action算子
无输出
foreach
HDFS
save as textfile
save as object file
Scala集合和数据类型
collect
collect as map
reduce by key locally
lookup
count
top
reduce
fold
aggregate
spark开发环境配置及流程
spark编程实践
benchmark使用详解
bdas简介
mesos:相当于生态系统中的yarn,资源管理任务调度
hdfs;
tachyon:分布式内存文件系统,缓存数据并进行快速的读写
spark:核心计算引擎,能够将任务并行化,在集群中进行大规模并行计算
spark streaming :流式计算引擎
spark sql :sql on hadoop ,能够提供交互式查询和报表查询,通过jdbc等接口调用
graphx:图计算引擎
mllib:机器学习库
spark性能调优
参数优化
1.设置合适的资源
2.spark jvm 参数优化
3.更高效序列化方法,如kyro
4.设置offheap内存
5.调整并行度
6.小文件合并
7.大小表join
8.sql谓词下推
9.推测式执行
10.网络连接超时时间
代码优化
1.filter操作后进行coalesce操作
2.优化数据结构,使用基础类型
3.处理数据倾斜
4.RDD复用
5.选择合适算子
6.使用dataset
集群优化
防止不必要的jar重复分发
2.数据本地性
3.存储格式选择
4.资源隔离
5. nm jvm参数优化
6.集群硬件环境

猜你喜欢

转载自blog.csdn.net/IQiaoKeLi/article/details/82991428