Storm基础(一)--Storm简介

昨晚开了一会夜车,两点钟才睡着。今天一大早起来听研三答辩。没有想象中的腥风血雨,答辩现场一片和谐的欢愉画面,果然没有老黄的地方真的会轻松很多,但是老黄绝对是促使我们进步的推动者,有他在的地方我总会提起12分精神全力备战。好了,开始今日份的进步之旅~~~~

Storm是一个分布式的实时计算框架,具有可扩展,容错等特性。可以应用于实时计算,在线机器学习等领域。说实话,刚认识storm真的没触及到机器学习哎~

要学习storm首先要知道storm的应用场景---实习计算。那么问题来了,什么是实时流计算?

所谓实时流计算,就是近几年由于数据得到广泛应用之后,在数据持久性建模不满足现状的情况下,急需数据流的瞬时建模或者计算处理。在这种数据流模型中,这些数据以大量、快速、时变(可能是不可预知)的数据流持续到达,由此产生了一些基础性的新的研究问题——实时计算。实时计算的一个重要方向就是实时流计算

实时流计算背景

数据的价值随着时间的流逝而降低,所以事件出现后必须尽快对它们进行处理,最好事件出现时便立刻对其进行处理,发生一个事件进行一次处理,而不是缓存起来成一批处理。

为什么使用storm进行实时流计算,而不是用MapReduce?

Hadoop MapReduce框架为批处理做了高度优化,典型的是通过调度批量任务来操作静态数据,任务不是常驻服务,数据也不是实时流入;而数据流计算的典型范式之一是不确定数据速率的事件流流入系统,系统处理能力必须与事件流量匹配。
 

实时计算处理流程

互联网上海量数据(一般为日志流)的实时计算过程可以划分为3个阶段:

 

1)数据实时采集--flume

需求:功能上保证可以完整地收集到所有日志数据,为实时应用提供实时数据;响应时间上要保证实时性、低延迟(在1s左右);配置简单,部署容易;系统稳定可靠等。

为什么中间要加kafka作为中间件?

Flume--push--kafka--pull--storm

数据收集的速度,跟处理的速度不一定一致,故使用Kafka中间件作为数据收集和数据处理的一个Access入口,接收flume收集的数据,并通过kafkaSpout提交给Storm进行处理。

2)数据实时计算--storm

传统的数据操作,首先将数据采集并存储在DBMS中,然后通过查询和DBMS进行交互,得到用户想要的答案。在整个过程中,用户是主动的,而DBMS系统是被动的。但是,对于现在大量存在的实时数据,如股票交易的数据,这类数据实时性强,数据量大,没有止境,传统的架构并不合适。

流计算就是专门针对这种数据类型准备的。在流数据不断变化的运动过程中实时地进行分析,捕捉到可能对用户有用的信息,并把结果发送出去。在整个过程中,数据分析处理系统是主动的,而用户却处于被动接收的状态。实时计算的需求:适应流式数据、不间断查询;系统稳定可靠、可扩展性好、可维护性好等。

3)实时查询服务--hbase

全内存:直接提供数据读取服务,定期转存到磁盘或数据库进行持久化。

半内存:使用Redis、Memcache、MongoDB、BerkeleyDB等内存数据库提供数据实时查询服务,由这些系统进行持久化操作。

全磁盘:使用HBase等以分布式文件系统(HDFS)为基础的NoSQL数据库,对于KeyValue内存引擎,关键是设计好Key的分布。

 

 

 

 

 

猜你喜欢

转载自blog.csdn.net/weixin_44481878/article/details/88869979