258 lines
5.4 KiB
Markdown
258 lines
5.4 KiB
Markdown
## Hadoop生态圈
|
|
|
|
### Yarn资源调度
|
|
|
|
MR on Yarn
|
|
|
|
Storm on Yarn
|
|
|
|
Spark on Yarn
|
|
|
|
Flink on Yarn
|
|
|
|
### HDFS
|
|
|
|
### MR
|
|
|
|
分而治之
|
|
|
|
## Lambda架构
|
|
|
|
离线计算 MapReduce,Hive:
|
|
|
|
实时计算
|
|
|
|
## Apache Spark
|
|
|
|
生态圈完善
|
|
|
|
Spark core 批计算 取代MR,
|
|
|
|
1. 预先申请资源Spark申请资源的粗粒度的资源申请,启动任务速度快,task完毕executor 不会立即释放.MR细粒度资源申请,执行完毕后立即释放.
|
|
|
|
2. Spark基于内存计算cache persisit内存计算pipline,RDD存储逻辑,partion
|
|
|
|
Spark streaming 流计算 取代storm
|
|
|
|
1. 微批
|
|
2. 无状态,batch
|
|
3. 有状态计算updateStateByKey(checkpoint),flink
|
|
4. 无界有界,window窗口和水位线处理顺序问题
|
|
|
|
spark sql sql
|
|
|
|
Spark mlib 机器学习
|
|
|
|
批处理只是流数据的一个极限特例而已.
|
|
|
|
## Flink
|
|
|
|
1. 支持高吞吐,低延迟,高性能\
|
|
2. 支持时间时间(Event Time)概念,结合WaterMark处理乱序数据.
|
|
1. spark基于系统时间,数据到系统的时间,
|
|
2. flink基于用户带来的时间
|
|
3. 支持有状态计算,并且支持多种状态 内存,文件,RocksDB
|
|
4. 支持高度灵活的窗口,time,count,session
|
|
5. 基于轻量级分布式快照(CheckPoint)实现容错保证exactly-once语义
|
|
6. 基于JVM实现独立内存管理
|
|
7. Save points 保存点,方便代码升级
|
|
|
|
## Flink与Spark对比
|
|
|
|
### spark
|
|
|
|
pipline
|
|
|
|
spark与MR速度原因
|
|
|
|
有界与无界流
|
|
|
|
集群
|
|
|
|
1. master,管理集群中所有Worker进而管理了集群资源
|
|
2. worker管理各个节点上的资源mem core
|
|
1. WORKER_MEMORY
|
|
2. WORKER_CORE
|
|
3. Driver任务调度
|
|
4. Executor执行task
|
|
|
|
### Flink集群
|
|
|
|
1. JobManager(JVM进程)master
|
|
1. 资源调度
|
|
2. 任务调度,触发集群进行checkpoint,
|
|
2. TaskManager(JVM进程)slaver
|
|
1. TaskManager向JobManager注册资源
|
|
2. TackManager中资源使用Task slot进行隔离,隔离内存无法隔离核.
|
|
3. TaskManager 3G 3Core
|
|
4. 设置3个task slot 平分TaskManager
|
|
5. task slot 一组固定资源
|
|
|
|
## 开发
|
|
|
|
1. 准备环境,创建/获取
|
|
2. 数据处理逻辑
|
|
3. 启动Flink任务
|
|
|
|
## 提交集群
|
|
|
|
1. Yarn-Session
|
|
1. 提交前,需要yarn去启动一个flink集群(yarn-session)
|
|
2. 启动成功后,通过flink run 这个命令去往flink集群中提交任务
|
|
3. 当job执行完毕,yarn-session集群并不会关闭,等待下一个job提交,一直占用集群资源(JobManager),好处job启动时间变短
|
|
2. Run a flink job on yarn
|
|
1. 直接去yarn中提交一个flink job,在job执行之前,先去启动一个flink集群,集群启动成功,job在执行,当job执行完毕,flink集群一同关闭,释放资源
|
|
2. 每个job执行完,集群关闭,但是每个job启动时间变长.
|
|
|
|
### 搭建高可用集群
|
|
|
|
flink JobManager元数据checkpoint,数据存储,hadoop插件.
|
|
|
|
### JobManager分担压力Flink on yarn
|
|
|
|
1. jobManager任务管理,yarn资源管理.分担jobManager压力
|
|
2. 降低维护成本yarn
|
|
|
|
### 运行流程
|
|
|
|
RM,NM,yarn运行需要hdfs
|
|
|
|
1. 上传jar及配置文件
|
|
2. 为applicationMaster申请资源
|
|
3. 分配node资源,启动applicationmaster,下载jar及配置文件
|
|
4. applicationMaster为taskmanager申请资源
|
|
5. yarn分配node并启动TaskManager
|
|
6. 分配任务taskManager中运行
|
|
7. taskManager下载文件.
|
|
|
|
## HA
|
|
|
|
1. 主备
|
|
2. 重启
|
|
|
|
## 算子并行度
|
|
|
|
1. 配置文件中设置
|
|
2. 提交job的时候,通过-p选项来设置
|
|
3. 代码中设置parallelism
|
|
4. 算子上设置
|
|
|
|
## 任务调度算子链
|
|
|
|
本地化级别:PROCESS_LOCAL
|
|
|
|
1. 不同的Task下的subtask要分发到相同的TaskSlot中.降低数据传输,提高执行效率.尽可能实现算子链
|
|
2. 相同的Task下的subtask要分发到不同的TaskSlot中充分利用集群资源.
|
|
3. TaskSlot个数决定了job未来执行的并行度,job数不能大于TaskSlot数.
|
|
|
|
### 算子->函数
|
|
|
|
1. Stateful Stream Processing=========Low-level building block (streams,state[event]time)
|
|
2. DataStream/DataSetApi============Core Api
|
|
3. Table Api========================Declaretive DSL
|
|
4. sql=============================High-level Language
|
|
|
|
### flatMap代替filter
|
|
|
|
map,flat(扁平)
|
|
|
|
union 数据流何工,数据流中的数据必须一致.
|
|
|
|
connect假合并,数据流中数据可以不一样,comap
|
|
|
|
split 可以根据一定的条件拆分数据流.
|
|
|
|
side out
|
|
|
|
## 卡口数据
|
|
|
|
相同key的数据一定是由某一个subtask处理,一个subtask可能会处理多个key所对应的数据.
|
|
|
|
### 统计每分钟卡口流量
|
|
|
|
时间映射成分钟字段,直接count
|
|
|
|
每分钟每个卡口,组合key
|
|
|
|
富函数可获取上下文及生命周期.
|
|
|
|
process底层api
|
|
|
|
广播流
|
|
|
|
## 分区策略
|
|
|
|
1. shuffle==================增大分区,数据倾斜,增加并行度使用
|
|
2. rebalance================增大分区,数据倾斜,增加并行度使用
|
|
3. rescale==================减少分区,防止大量网络传输,降低并行度.
|
|
4. broadcast================广播,大量数据冗余,映射表
|
|
5. Forward=================上游分区与下游分区一一对应的分发,窄依赖
|
|
6. global===================上游中所有数据分发到下游中第一个分区中.
|
|
7. keyby===================可以根据用户指定的字段来分发
|
|
8. partiooncustom===========自定义分区策略
|
|
|
|
DataFlow
|
|
|
|
1. source
|
|
2. transformation
|
|
3. sink
|
|
|
|
## 恰好一次
|
|
|
|
幂等处理
|
|
|
|
## Flink State
|
|
|
|
会持久化到远端
|
|
|
|
1. Keyed State
|
|
1. value state
|
|
2. list state
|
|
3. map state
|
|
4. ReducingState
|
|
5. AggregationState替代FoldingState
|
|
2. No-Keyed State(Operator State)
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|