spark
1.spark 开源的分布式cluster(集群)运算框架
2.spark相对于Hadoop的优势
- 数据处理逻辑的代码非常简短
- 提供很多转换和动作,而hadoop只提供Map和Reduce,表达力欠缺
- 一个job可以包含多个转换操作,在调度时可以生成多个stage,多个map操作的RDD分区不变,可以放在同一个task中进行,而hadoop一个job只有map和reduce,复杂计算需要大量job完成
- 逻辑更清晰,可以提供处理逻辑整体视图,而hadoop没有整体逻辑
- spark运算中间结果放在内存中,内存放不下会写入本地磁盘,hadoop中间结果放在hdfs中
- 可以处理流数据和交互式数据,Hadoop时延高,只适用批处理
- 通过内存中缓存数据,迭代式计算能力强
3.spark生态
- spark core API:支持python,java,scala,sql等语言,批处理计算
- spark SQL: 支持用sql查询,交互式计算
- streaming: 数据流式处理,相对批量处理速度更快
- MLlib(machine learning): 较少量数据反复迭代运算,机器学习
- graphx: 基于图运算引擎,适用于图运算
4.spark核心组成部分
- driver: 写的程序本身
- cluster manager: 分配调度任务
- worker node: 执行计算任务
- executor: worker node中执行任务的角色, 相当与进程, 一个worker node 中可以有多个executor
5.job
一个application由多个job组成,与hadoop不同每个action都会产生一个job
6.stage
一个job分为多个stage,stage是按照数据计算的边界划分
7.task
一个stage可以有多个task,一个task是一个真正的计算任务,是计算任务的最小单位
8.spark数据来源
- 本地文件csv,json,txt
- hdfs
- hbase
- MongoDB
- 传统数据库等
- 云端数据S3
9.RDD-spark核心数据结构
RDD横跨整个集群,系统自动分隔,partition可以并行计算
RDD是只读的且不可改变
RDD只能从数据源读进来或者从其他RDD转换过来
RDD action计算方法: collect,count,countByValue,reduce,top
重要的RDD可以存档,可以配置保存的位置
10.大数据最耗时其实是IO操作,spark数据本地化,尽量减少数据移动,提高了处理速度,
所有开发时尽量考虑数据的位置,尽量减少数据的移动
11.Lambda架构
既有批处理又有流式处理
12.apark stream---mini batch
比流式处理容易迁移,提供秒级实时计算,对延时要求高的(毫秒级)计算不太适合