第7章 实时计算
一、ETL已过,流计算永存
流计算比传统ETL更有优势,有能力成为数据进入大数据平台的“门户”。在大数据平台上,ETL工作由多种组件协同完成,每一种组件都提供了足够的弹性来应对多样和灵活的需求,体现在:
- 数据采集工具可针对不同的数据源与协同使用不同的预设接口;
- 数据采集工具也能完成一些初步的数据转换和清洗工作,减少不必要的数据传输与重复处理;
- 流计算提供了绝佳的数据清洗和转换的场所,强大的编程环境可在流上实现任意复杂程度的ETL工作;
- 流计算可将清洗转换后的数据分别传输给批处理和后续流计算环节继续处理,并最终写入各自的目标数据源吗,如NoSQL数据库或HDFS。
二、技术堆栈与选型
当前主流的流计算工具非Flink和Spark Streaming莫属,两者的实现思想和编程模型都是不同的,因此适用场景也有差异。
2.1 Storm
Storm的计算模型被称为“Topology”,Topology从结构上看有Spout和Bolt组成的有向无环图,图中每一个节点都会对流上的数据进行一定的处理,然后传递给后续节点做下一步处理。
(1)Spout
Spout是Stream的起点,是产生Tuple的源头,Spout会对接某类数据源(如Kafka),把数据封装成Tuple的形式吐给后续的Bolt进行处理,一个Spout可以同时为两个以上的Stream供给数据。
(2)Bolt
Bolt是Topology中进行数据处理的单元,是实现业