3.1 大数据架构概述
3-1 大数据架构
3.1.1 大数据架构介绍
大数据架构是用于提取和处理大量数据的总体系统,因此可以针对业务目的进行分析。该架构可视为基于组织业务需求的大数据解决方案的蓝图。大数据架构旨在处理以下类型的工作。
● 批量处理大数据。
● 实时处理大数据。
● 预测分析和机器学习。
精心设计的大数据架构可以节省企业资金,并帮助其预测未来趋势,从而做出明智的业务决策。
企业数据处理平台的基础架构如图3-1所示,底层的数据经过数据处理平台处理后,最终为决策者所使用。
图3-1中,平台的各个架构层对应于大数据处理平台的各个部分,得到大数据架构,如图3-2所示。
大数据架构可用于分析的数据量每天都在增长。而且,流媒体资源比以往更多,其中包括流量传感器、健康传感器、事务日志和活动日志中提供的数据。但拥有数据只是业务成功的一半。企业还需要能够理解数据,并及时使用它来影响关键决策。使用大数据架构可以帮助企业节省资金并作出关键决策,其中主要包括以下几点。
1)降低成本。在存储大量数据时,Hadoop和基于云计算的分析等大数据技术可以显著地降低成本。
2)做出更快、更好的决策。使用大数据架构的流组件,企业可以实时做出决策。
3)预测未来需求并创建新产品。大数据架构可以帮助企业衡量客户需求并分析预测未来趋势。
图3-1 企业数据处理平台的基础架构
图3-2 大数据架构
3.1.2 大数据架构分类
目前围绕Hadoop体系的大数据架构主要有传统大数据架构、流式架构、Lambda架构、Kappa架构及Unifield架构等。
1.传统大数据架构
之所以叫传统大数据架构,是因为其定位是为了解决传统BI(Business Intelligence,商业智能)的问题。简单来说,数据分析的业务没有发生任何变化,但是因为数据量、性能等问题导致系统无法正常使用,需要进行升级改造,那么此类架构便是为了解决这个问题。可以看到,其依然保留了ETL操作,将数据经过ETL操作后进行存储。
优点:简单,易懂,对于BI系统来说,基本思想没有发生变化,变化的仅仅是技术选择,用大数据架构替换掉BI的组件。
缺点:没有BI下完备的Cube架构。虽然目前有Kylin,但是Kylin的局限性非常明显,远远没有BI下Cube架构的灵活度和稳定度,因此对业务支撑的灵活度不够,所以对于存在大量报表或者复杂的钻取的场景,需要太多的手工定制化,同时该架构依旧以批处理为主,缺乏实时的支撑。
适用场景:数据分析需求依旧以BI场景为主,但是因为数据量、性能等问题无法满足日常使用。
2.流式架构
在传统大数据架构的基础上,流式架构非常激进,直接去掉了批处理,全程以流的形式处理数据,所以在数据接入端没有了ETL,转而替换为数据通道。经过流处理加工后的数据以消息的形式直接推送给消费者。虽然有一个存储部分,但是该存储更多地以窗口的形式进行存储,所以该存储并非发生在数据湖,而是在外围系统。
优点:没有臃肿的ETL过程,数据的实效性非常高。
缺点:对于流式架构来说,不存在批处理,因此对于数据的重播和历史统计无法很好地支撑。对于离线分析仅仅支撑窗口之内的分析。
适用场景:预警,监控,对数据有有效期要求的情况。
3.Lambda架构
Lambda架构算是大数据系统里面举足轻重的架构,大多数架构基本都是Lambda架构或者基于其变种的架构。Lambda的数据通道分为两条分支:实时流和离线流。实时流依照流式架构,保障了其实时性,而离线流则以批处理方式为主,保障了最终一致性。
优点:既有实时流又有离线流,对于数据分析场景涵盖得非常到位。
缺点:离线流和实时流虽然面临的场景不相同,但是其内部处理的逻辑却是相同的,因此有大量冗余和重复的模块存在。
适用场景:同时存在实时和离线需求的情况。
4.Kappa架构
Kappa架构在Lambda的基础上进行了优化,将实时流和离线流部分进行了合并,将数据通道以消息队列进行替代。因此对于Kappa架构来说,依旧以流处理为主,但是数据却在数据湖层面进行存储,当需要进行离线分析或再次计算的时候,则将数据湖中的数据再次经过消息队列重播一次则可。
优点:Kappa架构解决了Lambda架构的冗余问题,以数据可重播的高超思想进行了设计,整个架构非常简洁。
缺点:虽然Kappa架构看起来简洁,但是实施难度相对较高,尤其是对于数据重播部分。
适用场景:和Lambda类似,该架构是针对Lambda架构的优化。
5.Unifield架构
以上几种架构都以海量数据处理为主,Unifield架构则更激进,将机器学习和数据处理融为一体。从核心上来说,Unifield架构依旧以Lambda架构为主,不过对其进行了改造,在流处理层新增了机器学习层。可以看到数据在经过数据通道进入数据湖后,新增了模型训练部分,并且将其在流式层进行使用。同时流式层不单使用模型,也包含对模型的持续训练。
优点:Unifield架构提供了一套数据分析和机器学习结合的架构方案,非常好地解决了机器学习如何与数据平台进行结合的问题。
缺点:Unifield架构实施复杂度更高,对于机器学习架构来说,从软件包到硬件部署都和数据分析平台有着非常大的差别。
适用场景:有着大量数据需要分析,同时对机器学习方面又有着非常大的需求或规划。