大数据的Lambda架构

Lambda架构

Lambda架构提供了一个结合实时数据和Hadoop预先计算(离线计算批处理层)的数据环境的混合平台,
以提供一个实时的数据试图。

分层架构:

批处理层(离线处理数据),实时处理层(与批处理层数据采集点击和访问的行为),服务层(收集用户信息等):把批处理曾的数据进行处理,进行前端的互动。

大数据的Lambda架构

一 批处理层:通过HDFS进行数据的存储,然后mapreduce进行计算(也可换成可用spark计算)

**注:**mapreduce是作业的独立调度的,基于磁盘存储的,有大量中间结果写入HDFS
spark是基于内存的,由基于RDD整体的图调度,是整体内存迭代式计算框架

特点:

1.数据不可变(append only)(HBase是通过文件的合并)
2.可以进行任何计算(任何的类型的输入和输出,中间转换过程可灵活配置)
3.水平扩展:数据量大
4.高延迟:根据计算量和数据量的不同,运行时间可能几分钟到几个小时

主件

日志收集Flume:agent
数据的同步工具:从SQL数据(结构化数据)用Sqoop导入到hadoop,或从hadoop,esqoop导出到SQL
分布式存储:HDFS基于文件的分布式存储系统,一个128m,默认3个副本,不适合存储大量小文件。HBase:基于机构化的存储系统,nosql数据库,链式存储,基于行键进行查询,基于rowkey搜索
分布式计算:Hadoop,spark
产生视图:数据集经过mapreduce/spark后会产生很多视图view,这些试图存储在HDFS/HBase上。可直接推送到redis,前端可非常快从redis取出。
数据序列化:内存->磁盘:系列化(我们可处理格式转换为字节流)。磁盘->内存:反序列化(字节流转换为我们可处理方式)
为什么为数据设置schema:数据一致性;数据合法性验证(读写规范数据);避免数据损坏
选择序列化框架:Thrift(facebook,主要用);Protocol buffer(google);Avro(apache,通用性非常好,重要)
视图存储库:HBase(强调一致性),Cassandra(强调高可用性,主节点漂移)
IMpala(满足前端交互式的BI,MPP架构)
Redis/memcache:(可靠性差,高效低延时)
Mysql

二 实时处理层:通过数据流收集的数据,进行实时处理,交给storm(可换成sparkstreaming计算)

特点:

1.流式处理
2.持续计算:不说停,就不会停
3.存储和分析某个窗口期内的数据:比如五分钟内
4.最终正确性:有些算法很难实时运算,此时采用估算值即可

数据收集:flume,保证数据处理的吞吐量,会放入kafka,然后kafka->storm

实时数据分析:strom:是一个拓扑,有一些组件spomt(接收tuple数据发送给后端),bolt:translate转发出去

视图存储数据库:

HBase,Cassandra,impala,Redis/memcache/mysql

三 服务层:

支持随机读
需要在非常短时间内返回结果用到缓存机制,内存数据库
读取batch layer和speed layer结果,并对其归并(impala,redis读,合并,展现)
KETTKE:ETL工具