Big Data: Principles and best practices of scalable realtime
《大数据:可扩展实时系统的原理和最佳实践》是分布式实时处理系统Storm的作者及另一位twitter老兄合作写的。
书中主要描述上述三层主要概念:自底向上分别是:
1. Batch Layer
主要进行批量处理,其特点是延时较高、高吞吐量,并且是append-only(没有delete和update的概念)的。本书采用Hadoop实现,包括HDFS和Hadoop MapReduce。包括对全部数据集的预计算。
2. Serving Layer
主要进行批量更新,其特点是延时相对较低,一般数小时更新一次。本书主要采用HBase和Cassandra实现。
3. Speed Layer
主要进行低延时更新(与Serving Layer的批量更新相比,这里更接近于实时更新),是一种流处理(stream processing),采用各种复杂的增量算法实现。本层是对Serving Layer的补充,即只处理Serving Layer中间“没有”的“数小时”的数据,并且一旦这些数据在Serving Layer存在了,Speed Layer就将它们丢弃,并重新处理来着应用层的新数据。注意,查询的结果将来自于Serving Layer和Speed Layer处理结果的merge。本书采用Storm实现。
此外,作者还将big data相关的开源项目做了以下分类:
1. 批量计算系统:延时较高、吞吐量大,如Hadoop。
2. 序列化框架:为对象和字段提供一种模式定义语言,实现传输通信以及不同语言环境之间的转化。如Thrift, Protocol Buffers, 和Avro。
3. 支持任意存取的NoSQL数据库:牺牲了SQL强大的表现力优势,根据应用场景不同仅支持部分操作。按照CAP理论来说,就是牺牲C(一致性)或A(可用性)来实现AP或CP。如Cassandra, HBase, MongoDB,Voldemort, Riak, CouchDB等。
4. 消息/排队系统:保证进程之间以容错和异步的方式传递消息,在实时处理系统中非常重要。如Kestrel。
5. 实时计算系统:高吞吐、低延时的流处理系统。如Storm。
其他参考:The Lambda architecture: principles for architecting realtime Big Data systems