大数据实时计算架构技术研究
来源:用户上传
作者:
摘 要 大数据,指无法在一定时间范围内用常规软件工具进行捕捉、管理和处理的数据集合。它需要新处理模式才能具有更强的决策力、洞察发现力和流程优化能力的海量、高增长率和多样化的信息资产。随着互联网、物联网、AI等行业技术快速发展,信息产业快速增长,各行各业数据量猛增,高并发、大数据量情况下的实时计算、实时响应需求,日益迫切。
关键词 大数据;实时计算;Storm
引言
大数据是一种规模大到在获取、存储、管理、分析方面大大超出了传统数据库软件工具能力范围的数据集合,具有海量的数据规模、快速的数据流转、多样的数据类型和价值密度低四大特征。在大数据情况下,传统软件架构已无法满足实时计算、实时业务逻辑处理和实时响应需求,需要研究、使用全新技术架构。
1 大数据业务分类
大数据业务处理主要分为两类,离线计算和实时计算。对于日志分析、数据挖掘等,对实时性要求不高、对数据吞吐量有较大诉求的业务场景,适合选择离线计算架构;对于网上交易、监测预警等要求系统给出及时性响应的业务场景,适合选择实时计算架构。目前市面上流行的离线式计算架构大多以Hadoop的HDFS和MapReduce为基础,结合Kafka、Spark、Redis、Mysql等丰富组件,实现大规模数据的分布式、离线运算。在实时计算方面,目前较流行Storm和SparkStreaming,本文重点对Storm架构进行介绍[1]。
2 基于Storm框架的实时性大数据架构
底层数据接入方面,各类前端设备通过统一的接入标准,实时将数据发送到Kafka集群;为了减轻存储计算集群的资源压力及数据可重用性角度考虑,经过ETL实时清洗,把数据解压、解密、转义,部分简单的补全,异常数据处理等工作前移,为后面环节的数据重用打下扎实的基础。为了避免大量数据流写入HDFS,导致HDFS客户端不稳定现象,且影响数据实时性,把经过数据实时清洗后的数据重新写入Kafka,实时计算基于Storm直接从Kafka消费。Storm是一个免费并开源的分布式实时计算系统,利用Storm可以很容易做到可靠地处理无限的数据流,可以很好地应对海量、高并发的业务场景,他具备编程简单、高性能、分布式、易扩展、高容错和消息不丢失等特性。
Storm实现了一个数据流(data flow)的模型,在这个模型中数据持续不断地流经由多个转换实体构成的网络。一个数据流的抽象叫作流(stream),流是无限的元组(Tuple)序列。元组是一个可以表示标准数据类型(例如int,float和byte数组)和用户自定义类型(需要额外序列化代码的)的数据结构。每个流由一个唯一的ID来标示的,这个ID可以用来构建拓扑中各个组件的数据源。水龙头类似数据流的来源,一旦水龙头打开,数据就会源源不断地流经Bolt而被处理,Storm将流的中间状态转换抽象为Bolt,Bolt可以消费任意数量的输入流,只要将流方向导向该Bolt,同时它也可以发送新的流给其他Bolt使用,这样一来,只要打开特定的spout(管口)再将spout中流出的tuple导向特定的Bolt,该Bolt对导入的流做处理后再导向其他Bolt或者目的地。每个数据流中流动的是元组(Tuple),它承载了具体的数据。元组通过流经不同的转换实体而被处理。
Storm对数据输入的来源和输出数据的去向没有做任何限制。像Hadoop,是需要把数据放到自己的文件系统HDFS里的,在Storm里,可以使用任意来源的数据输入和任意的数据输出,只要你实现对应的代码来获取/写入这些数据就可以。典型场景下,输入/输出数据来是基于类似Kafka或者ActiveMQ这样的消息队列,但是数据库、文件系统或者web服务也都是可以的。
Storm集群主要由一个主节点(master node)和一组工作节点(worker nodes)组成,通过 Zookeeper集群进行协调。主节点通常运行一个后台程序Nimbus,它负责在集群里面发送代码,并将任务分配到工作节点,同时监控状态,全局只有一个。工作节点运行一个后台程序Supervisor,用于监听分配给它那台机器的工作,根据需要启动/关闭工作进程Worker,每一个要运行Storm的机器上都要部署一个Supervisor,并且按照机器的配置设定上面分配的槽位数。Nimbus和Supervisor这两种组件都是快速失败的、没有状态,任务状态和心跳信息等都保存在Zookeeper上的,提交的代码资源都在本地机器的硬盘上。
3 結束语
在Storm之前,进行大数据量实时处理是非常痛苦的事情,需要维护一堆消息队列和消费者,他们构成了非常复杂的结构。消费者进程从队列里取消息,处理完成后,去更新数据库,或者给其他队列发新消息。这样进行实时处理是非常痛苦的,我们主要的时间都花在关注往哪里发消息,从哪里接收消息,消息如何序列化,真正的业务逻辑只占了源代码的一小部分。Storm完整地解决了这些问题,它是为分布式场景而生的,抽象了消息传递,会自动地在集群机器上并发地处理流式计算,让开发者专注于实时处理的业务逻辑。
参考文献
[1] 孟超,金龙,孙知信.大数据实时传输架构研究[J].计算机技术与发展,2019,(05):1-6.
转载注明来源:https://www.xzbu.com/1/view-14944296.htm