转行搞了三年大数据,计划写些的东西,对这个方向总结一下,包括架构,工具,格式,库等等。
最近准备造轮子,就先从一些目前最常见的流式数据处理手段开始。
Spark & Flink
Spark,Flink是最知名的通用数据处理工具,不限定场景,不限定数据量。支持分布式,支持自定义状态,灵活定义数据处理逻辑(执行计划)。
当然缺点就是:人工参与程度大,速度慢,系统臃肿。
缺点与优点是相互取舍的,因为本身就是通用平台,不能与业务场景过分绑定,所以很多功能在实际使用时是不需要的,比如只用20%功能,但也有80%的功能拖慢了速度。
另外磁盘和网络IO,也是持久化,分布式必须的。
调用方式:因为两者定位都是数据平台,都是异步的网络API,即使有SDK,也相当于客户端封装再异步调用。
状态
Flink (https://flink.apache.org/) 举例,他官方描述就是 Stateful Computations over Data Streams
顾名思义,有两个东西,一个是Data Stream,一个是Computation State,这个是任何流处理系统的共识抽象。