Lambda架构

混合平台架构图1

混合平台架构图2

Lambda架构是由Strom的作者提出的一种通用系统架构,可以说它是一种混合式架构,其架构大致分为三层batch layer、speed layer和serving layer。

  • batch layer : 称为批处理层,主要进行离线数据处理和计算。计算数据量大,延时高是其主要特点
  • speed layer : 称为流处理层 ,主要进行实时数据处理和计算。远远不断的处理过来的数据,延时低是其主要特点
  • Serving layer : 主要进行合并Batch View和Real-time view 中的结果到最终数据集

批处理层(batch layer)

批量计算:批量获取数据、批量传输数据、周期性批量计算数据并进行数据展示。

下面对具体可行方案进行探讨

数据收集:FlumeNG 是一个分布式的采集、聚和传输系统,其核心组件是Agent。使用它可以实现从源到目标的海量数据传输。

数据同步层:sqoop可以完成关系型数据到分布式文件系统之间的数据同步

数据存储:可以使用HDFS+Hbase

分布式计算:mapreduce 或者spark。mapreduce中是一个一个的job,spark中则是一个一个RDD。其中他们俩最大的一个差别是HDFS处理的 数据必须被放在磁盘上,而Spark则不是它的数据可以都在内存中完成

序列化框架:Thrift、Protocol buffer、Avro

视图:由reduce产生,可以存在Hbase、mysql、redis、memcache中都可以

实时处理层

实时处理可以实时产生、传输、计算并展示数据。其特点主要是延时低,

数据收集 flume(OG/NG) : agent -> storage,其中可以变形 agent -> kafka -> storage

数据分析 (storm(毫级)、spark streaming(秒级))

存储数据库 : (Hbase、Cassandra、Impala、Redis/memcache、MySql)

服务层

特点: 随机读 、非常端的时间内返回结果、读取batch layer 和speed layer结果,并对其归并

Lambda架构具体实现

实现1

实现2