写在前面的话:不要被技术吓到哦 ,本文尽量写的白话,致力为从事大数据的运营、咨询规划、需求以及想学习大数据的入门者提供知识分享@……@
导读:本文阐述实时处理诞生的背景,实时处理意义、应用场景和技术架构实现。
一、背景
随着互联网的更进一步发展,信息浏览、搜索、关系交互传递型,以及电子商务、互联网旅游生活产品等将生活中的流通环节在线化。对于实时性的要求进一步提升,而信息的交互和沟通正在从点对点往信息链甚至信息网的方向发展,这样必然带来数据在各个维度的交叉关联,数据爆炸已不可避免。因此流式处理和NoSQL产品应运而生,分别解决实时框架和数据大规模存储计算的问题。
二、流式处理算意义
通过大数据处理我们获取了数据的价值,但是数据的价值是恒定不变的吗?显然不是,一些数据在事情发生后不久就有了更高的价值,而且这种价值会随着时间的推移而迅速减少。流处理针对这样的场景。流处理的关键优势在于它能够更快地提供洞察力,通常在毫秒到秒之间。
三、主要应用的场景
流式处理可以用于两种不同场景: 事件流和持续计算。
1、事件流
事件流具能够持续产生大量的数据,这类数据最早出现与传统的银行和股票交易领域,也在互联网监控、无线通信网等领域出现、需要以近实时的方式对更新数据流进行复杂分析如趋势分析、预测、监控等。
简单来说,事件流采用的是查询保持静态,语句是固定的,数据不断变化的方式。
2、持续计算
比如对于大型网站的流式数据:网站的访问PV/UV、用户访问了什么内容、搜索了什么内容等,实时的数据计算和分析可以动态实时地刷新用户访问数据,展示网站实时流量的变化情况,分析每天各小时的流量和用户分布情况;
比如金融行业,毫秒级延迟的需求至关重要。一些需要实时处理数据的场景也可以应用Storm,比如根据用户行为产生的日志文件进行实时分析,对用户进行商品的实时推荐等。
四、实现架构
通过Flume进行数据的的采集,将数据推送给Kafka作为数据的缓存层,Storm作为kafka的消费者,从而进行实时的处理。最终,通过Web展示给前端,能够实时统计和分析车辆的在线总数,轨迹点总数,对此可以做一些相关的应用。
![1463040-fdd0044bff1710a3.png](https://upload-images.jianshu.io/upload_images/1463040-fdd0044bff1710a3.png)
大数据实时处理框架
其中,
KAFKA:是实时流计算的数据分发节点,实现信令XDR数据实时分发给计算节点;
STORM :是实时流计算的数据分布计算节点,实现各类场景的指标计算,并将结果推送至Redis缓存;
Redis:是实时计算结果缓存节点,将最近24小时指标数据缓存在内存,供应用访问。
需要注意的是:ETL过程其实是通过Flume进行数据采集入库实现的,上图没有体现。
五、总结
生活中有大量流式处理的需求,例如,银行客户交易,活动,网站访问,并且随着物联网用例(所有类型的传感器),它们的增长速度会更快。通过流处理,我们可以快速的得到响应结果,根据响应结果检测到,以求更快的改进。
附、关于离线处理
Hadoop分布式存储+分布式运算的框架,可以对海量数据进行统计分析,解决单节点极限性。笔者另一篇文章浅显的描述了分布式存储和计算原理,感兴趣的同学可以参考大数据处理架构系列三:原来如此简单,HADOOP原理解读