技术选型和优劣对比
流处理框架
Flink vs Spark Streaming vs Storm
Flink
1、复杂时间处理:同时支持事件时间,接入时间,处理时间的选择,便于精准处理乱序事件和窗口运算
2、窗口操作灵活:提供了包括基于时间,计数,会话以及数据驱动的窗口定义
3、流批一体:基于事件驱动,低延迟,其他的系统都是通过"微批处理"实现的
4、独立的内存管理:基于JVM进行了独立的内存管理优化
5、状态管理,设计了checkpoint,保证容错状态下的恢复
6、智能背压控制:内建了BackPressure功能,具备自我调节流量能力,防止数据积压导致系统阻塞
7、社区活跃,一直在持续的优化和改进
Spark Streaming
基于Spark的弹性分布式数据集(RDD)构建,基于微批处理,不够实时,存在延时,秒级延时
Storm
劣势:吞吐和延迟不及flink,无状态,需要用户自己进行状态管理;缺少窗口,时间处理,聚合,会话等高级功能,社区活跃度低
Hive vs SparkSql(快和慢)
sparkSql利用了spark的弹性分布式数据集和内存计算能力,hive基于hadoop的MapReduce计算,不是在内存中做的计算,需要更多的IO,序列化和反序列化操作
有哪些任务调度的框架
Quartz
性能问题,大批量任务的时候,数据库可能成为瓶颈
xxl-job
轻量级分布式任务调度框架,支持通过web页面对任务进行动态的CURD操作,支持高可用,故障转移,
有哪些工作流任务调度框架
Apache Azkaban
Oozie
DolphinScheduler
一个分布式、易扩展的可视化DAG工作流任务调度平台,主要用于解决数据处理过程中复杂任务依赖与调度的问题