刊载于程序员杂志2013年2月号
大数据处理:批量数据处理和流数据处理
Hadoop家族在大数据处理方面的能力已经得到业界认可,但它更适用于对集群上的大数据进行批量处理,并不使用于实时处理大规模流数据。
包括雅虎在内的互联网公司都在尝试建立适用于大规模流数据处理的系统,Twitter的Storm就是其中之一。本文将主要介绍Storm Trident以及雅虎如何基于Storm Trident构建一个流数据处理系统。
Storm基本概念
先介绍本文会涉及到的几个Storm术语。
Storm应用通过Spout从外部数据源读取数据,并将数据以流(stream)的方式发送给Storm节点。用户逻辑运行在Bolt进程。Storm使用Topology(一种有向无环图)来描述所有Spout和Bolt的关系。关于Storm概念细节,请自行查阅相关资料。
Trident特性
Storm是Twitter开发的分布式实时数据处理系统,而Trident是一个基于Storm的用于实时计算的抽象层,详情请参阅这篇文章。
我们可以认为,Trident可以提供如下特性。
- Trident是Storm平台上的“高级语言”(类似于Pig在Hadoop上提供的类SQL查询功能)。Trident支持联结(Join),聚集(Aggregation),分组(Group),函数(Function)和过滤器(Filter)等操作。<