`
wbj0110
  • 浏览: 1558664 次
  • 性别: Icon_minigender_1
  • 来自: 上海
文章分类
社区版块
存档分类
最新评论

Storm实时处理方案架构

阅读更多

1 文档说明

 

该文档描述的是以storm为主体的实时处理架构,该架构包括了数据收集部分,实时处理部分,及数据落地部分。

关于不同部分的技术选型与业务需求及个人对相关技术的熟悉度有关,会一一进行分析。

该架构是本人所掌握的一种架构,可能会与其他架构有相似的部分,个人会一一解释对其的理解。

 

2 实时处理架构

 

2.1 整体架构图



 

 

架构说明:

整个数据处理流程包括四部分,一部分是数据接入层,该部分从前端业务系统获取数据;中间部分是最重要的storm实时处理部分,数据从接入层接入,经过实时处理后传入数据落地层;第三部分为数据落地层,该部分指定了数据的落地方式;第四部分元数据管理器。

 

 

2.2 数据接入层

该部分有多种数据收集方式,包括使用消息队列(MetaQ),直接通过网络Socket传输数据,前端业务系统专有数据采集API,对Log问价定时监控。

2.2.1 MetaQ

为什么选择消息队列?

这或许是大家比较疑惑的地方,会疑惑为什么不把数据直接导入storm中。使用消息队列作为数据中间处理组件的原因是,在大批量数据处理时,前端业务数据产生速度可能会很快,而实时处理或者其他处理速度跟不上,会影响整个系统处理性能,引入消息队列之后,我们可以把数据临时存储在消息队列中,后端处理速度就不会影响前端业务数据的产生,比较专业的术语叫做解除耦合,增加系统扩展性,系统各组件异步运行。

为什么使用MetaQ

在消息队列选择上,kafka是一个比较通用的,开源时间较长的消息发布订阅系统,而MetaQ是基于kafka开发的,使用我们比较熟悉的Java开发,并且在此基础上作了一定的改进,如数据可靠及事务处理等。另一方面,这是国人开源的东西,各方面的文档比较完整,并且有相关的实例接口。所以使用MetaQ作为消息中间件,开发成本比较低,又有较好的性能。

2.2.2 Socket

部分人使用网络Socket编程实现Storm的数据接入。这是一种比较直接的数据采集方式,并且确实有些Storm相关的项目使用这种数据接入方式。

这种数据接入方式比较简单,维护成本较低,但数据量相对于使用消息中间件来说较小。

难点:

使用Socket采集数据比较麻烦的是,由于Storm的Spout的地址是不定的,无法确定其地址,则前端业务系统就无法将数据准确的发送的某个具体IP地址上的端口中。解决方法如下:

(1) 我们可以使用zookeeper作为传输站,Spout执行后,将本地有效的IP地址及可用正在监控的端口等信息写入zookeeper中,前端业务系统从zookeeper目录中获取该信息。

(2) 使用元数据指导前端业务系统数据发送,Spout将本地IP及端口信息存入元数据管理器中,前端业务系统从元数据管理器中获取该参数信息。

2.2.3 前端业务系统数据采集API

这种数据采集方式就不多说了,前端业务系统为Spout专门设计的数据采集API,Spout只需调用该API就能获取数据。

2.2.4 Log文件监控

有时候我们的数据源是已经保存下来的log文件,那Spout就必须监控Log文件的变化,及时将变化部分的数据提取写入Storm中,这很难做到完全实时性。

2.3 Storm实时处理系统

2.3.1 说明

前面部分数据接入层其实已经包含部分storm相关的内容,例如一些数据采集接口就是属于Storm的Spout部分,我把该部分单独拿出来的意思是把实时处理核心部分作为一个大章节,即实时处理部分(除数据接入及数据落地的接口)。

2.3.2 使用Storm原因

为何选择Storm作为实时处理的核心呢?Storm作为开源比较早的一款实时处理系统,其功能比较完善,其failover机制相当给力,无论是woker还是supervisor,甚至是task,只要挂掉都能自动重启;其性能经过测试还是相当不错的且目前网络相关资料较多,这就意味着开发代价会小很多;其扩展性非常好,能够横向扩展。Storm目前的短处在与nimbus单点,如果nimbus挂掉,整个系统会挂掉,这是Storm需要改进的地方,不过nimbus的系统压力不大,一般情况下也不会出现宕机。

2.3.3 实时处理业务接口

该部分需要提供一个实时业务处理的接口,即将用户的业务层需求转换为实时处理的具体模式。例如模仿Hive提供一个类Sql的业务接口,我们将一类数据在元数据管理器中描述是一个表,不同字段是表中不同字段

select ---------------------------固定数据查询(异常或者脏数据处理),

max/min/avg-------------------最大最小值

count/sum----------------------求和或次数统计(比如pv等)

count(distinct)------------------去重计数(典型的如UV)

order by------------------------排序(取近访问的用户)

group by + 聚类函数 + order by-----聚类后排序(如访问次数最多的topN商品)

这只是简单类比,我们可以将实时处理的业务需求转化为Sql相关语句,上层执行类Sql语句,底层将其翻译成具体Topology组成及节点参数等。

2.3.4 具体业务需求

(1) 条件过滤

这是Storm最基本的处理方式,对符合条件的数据进行实时过滤,将符合条件的数据保存下来,这种实时查询的业务需求在实际应用中是很常见的。

(2) 中间计算

我们需要改变数据中某一个字段(例如是数值),我们需要利用一个中间值经过计算(值比较、求和、求平均等等)后改变该值,然后将数据重新输出。

(3) 求TopN

相信大家对TopN类的业务需求也是比较熟悉的,在规定时间窗口内,统计数据出现的TopN,该类处理在购物及电商业务需求中,比较常见。

(4) 推荐系统

正如我架构图中画的那样,有时候在实时处理时会从mysql及hadoop中获取数据库中的信息,例如在电影推荐系统中,传入数据为用户当前点播电影信息,从数据库中获取的是该用户之前的一些点播电影信息统计,例如点播最多的电影类型、最近点播的电影类型,及其社交关系中点播信息,结合本次点击及从数据库中获取的信息,生成一条推荐数据,推荐给该用户。并且该次点击记录将会更新其数据库中的参考信息,这样就是实现了简单的智能推荐。

(5) 分布式RPC

Storm有对RPC进行专门的设计,分布式RPC用于对Storm上大量的函数调用进行并行计算,最后将结果返回给客户端。(这部分我也不是很懂)

(6) 批处理

所谓批处理就是数据攒积到一定触发条件,就批量输出,所谓的触发条件类似时间窗口到了,统计数量够了及检测到某种数据传入等等。

(7) 热度统计

热度统计实现依赖于TimeCacheMap数据结构,该结构能够在内存中保存近期活跃的对象。我们可以使用它来实现例如论坛中的热帖排行计算等。

2.4 数据落地层

2.4.1 MetaQ

如图架构所示,Storm与MetaQ是有一条虚线相连的,部分数据在经过实时处理之后需要写入MetaQ之中,因为后端业务系统需要从MetaQ中获取数据。这严格来说不算是数据落地,因为数据没有实实在在写入磁盘中持久化。

2.4.2 Mysql

此处列出Mysql代表传统数据库与Storm的接口差不多都相似。一般情况下,数据量不是非常大的情况下可以使用Mysql作为数据落地的存储对象。Mysql对数据后续处理也是比较方便的,且网络上对Mysql的操作也是比较多的,在开发上代价比较小,适合中小量数据存储。

2.4.3 HDFS

HDFS及基于Hadoop的分布式文件系统。许多日志分析系统都是基于HDFS搭建出来的,所以开发Storm与HDFS的数据落地接口将很有必要。例如将大批量数据实时处理之后存入Hive中,提供给后端业务系统进行处理,例如日志分析,数据挖掘等等。

2.4.4 Lustre

写这个数据落地方式,一方面是因为最近在研究Lustre,对其比较熟悉;另一方面也却是在某些应用上比较适用,例如Lustre作为数据落地的应用场景是,数据量很大,且处理后目的是作为归档处理。这种情形,Lustre能够为数据提供一个比较大(相当大)的数据目录,用于数据归档保存。

Lustre的架构可以采用Lustre+drbd+heartbeat的架构,这样既能为整个系统提供一个超大容量的归档统一命名目录空间,又能保证数据的安全(双机热备)。

2.5 元数据管理器

2.5.1 设计目的

元数据管理器的设计目的是,整个系统需要一个统一协调的组件,指导前端业务系统的数据写入,通知实时处理部分数据类型及其他数据描述,及指导数据如何落地。元数据管理器贯通整个系统,是比较重要的组成部分。

2.5.2 元数据设计

元数据设计可以使用mysql存储元数据信息,结合缓存机制开源软件设计而成。

 

3 相关说明

3.1 关于Storm和Hadoop对比

Storm关注的是数据多次处理一次写入,而hadoop关注的是数据一次写入,多次处理使用(查询)。Storm系统运行起来后是持续不断的,而hadoop往往只是在业务需要时调用数据。

两者关注及应用的方向不一样。

3.2 Storm的应用前景

就目前来说,越来越多的公司在用storm,像一些推荐系统啊,金融系统啊,在小一些的应用场景也有,例如预警系统,网站统计等等,其在数据处理方面有着天然的优势。

总体来看,在数据量越来越大,需要处理挖掘的数据需求越来越多的情况下,Storm还是有着很好的前景的。

转自新浪

  • 大小: 37.9 KB
分享到:
评论

相关推荐

    Storm实时处理方案架构.docx

    Storm实时处理方案架构.docx

    大数据-Storm实时数据处理

    此外,《大数据技术丛书:Storm实时数据处理》旨在围绕Storm技术促进DevOps实践,使读者能够开发Storm解决方案,同时可靠地交付有价值的产品。  《大数据技术丛书:Storm实时数据处理》适合想学习实时处理技术或者...

    使用TwitterStorm处理实时的大数据

    Storm、它的架构,以及批处理和流式处理解决方案的发展形势。Hadoop(大数据分析领域无可争辩的王者)专注于批处理。这种模型对许多情形(比如为网页建立索引)已经足够,但还存在其他一些使用模型,它们需要来自...

    大数据架构师的岗位职责.docx

    6、掌握实时流计算技术,有Spark、Storm开发经验者优先; 7、需要具备2年以上研发团队管理经验。 大数据架构师的岗位职责4 职责: 1)负责公司软件产品整体架构的设计和关键功能实现 2)负责公司架构长期看护以及优化; ...

    基于流式计算的电信实时营销系统设计与实现.caj

    该系统采用了实时数据处理与离线数据处理相结合的架构。其中离线数据处理系统通过采用Hadoop集群将用户数据进行标签。实时数据处理系统首先将实时数据以日志的形式存储在Flume中,然后再通过Strom和Spark Streaming...

    数据实时分析平台Heron.zip

    但一直以来,Twitter都在致力于开发替代方案Heron,因为Storm无法满足他们的实时处理需求。Twitter现在已经用Heron完全替换了Storm。前者现在每天处理“数10TB的数据,生成数10亿输出元组”,在一个标准的单词计数...

    3-5-美团大数据平台架构实践-谢语宸.pdf

    流处理使用Storm进行计算,结果输出到HBase或者数据库。批处理计算使用Hive进行分析计算,结果输出到查询系统和BI(商业智能)平台。 数据分析师可以通过BI产品平台进行交互式的数据查询访问,也可以通过可视化的...

    ApacheFlink:特性、概念、组件栈、架构及原理分析

    流处理一般需要支持低延迟、Exactly-once保证,而批处理需要支持高吞吐、高效处理,所以在实现的时候通常是分别给出两套实现方法,或者通过一个独立的开源框架来实现其中每一种处理方案。例如,实现批处理的开源方案...

    百度云盘 pdf《大数据架构和算法实现之路:电商系统的技术实战》百度云盘-带标签目录

    11.4.2 实时性数据分析之 Storm 简介………………·388 11.4.3 Flume 、 Kafka 和 Storm 的 XI 11.5.4 自主设计实战之 Flume、 HDFS 和 Hive 的整合........ 401 11.5.5 自主设计实战之 Flume、 整合方案…………...

    大数据分析一体机.pptx

    较常见的解决方案 大数据储存 大数据处理 数据分享 数据检索 数据分析 数据展现 分布式软件架构 并行计算框架 分布式存储 横向扩容(Scale-out) 架构 存储与运算合一 Big Data 运算与存储,单一架构解决 大数据分析...

    一种大数据智能分析平台的数据分析方法及实现技术.doc

    按数据采集频度分为非实时数据、准实时数据处理架 构;并提供数据中心平台与安全管理方案,为企业级用户建立一个通用数据处理和分析 中心。如图1所示。 2.2 在线数据 在线数据在线通过接口去获得的数据,一般要求为...

    小米流式平台架构演进与实践

    流式数据处理:指的是平台基于Flink、SparkStreaming和Storm等计算引擎对流式数据进行处理的过程。下图展示了流式平台的整体架构。从左到右第一列橙色部分是数据源,包含两部分,即User和Database。User指的是用户...

    轻松玩转Kafka消息中间件

    对于像Hadoop一样的日志数据和离线分析系统,但又要求实时处理的限制,这是一个可行的解决方案。Kafka的目的是通过Hadoop的并行加载机制来统一线上和离线的消息处理,也是为了通过集群来提供实时的消息。 课程大纲...

    数据分析方法与技术.pptx

    9 不同分析场景解决方案 根据响应时长可以将应用需求进行如下划分: 实时应用场景(0~5s): Storm、S4、Cloudera Impala,Apache Drill等; 交互式场景(5s~1m): 最好支持SQL,: Shark 、Cloudera Impala、Apache...

    电视用户数据分析.docx

    1 总体描述 4 1.1 建设目标 4 1.2 整体架构 4 2 功能实现 6 2.1 数据采集模块 6 2.1.1 数据收集 6 2.1.2 数据处理 6 2.2 数据分析 7 2.3 数据可视化 8 2.4 系统管理 9 3 初步方案 10 3.1 C平台接口日志分析 10 3.2 ...

    城市大数据平台.pptx

    民政 城管 教育 水利 … 业务数据库 主题应用库 数据中心 分析建模设计 可视化设计 HDFS Storm Spark Hive …… 数据服务器 Yarn HBase 业务 …… 业务1 主题1 Weka 监控 预警 主题 …… 数据采集处理 多源 异构 ...

    1城市大数据平台.pptx

    民政 城管 教育 水利 … 业务数据库 主题应用库 数据中心 分析建模设计 可视化设计 HDFS Storm Spark Hive …… 数据服务器 Yarn HBase 业务 …… 业务1 主题1 Weka 监控 预警 主题 …… 数据采集处理 多源 异构 ...

    新版Hadoop视频教程 段海涛老师Hadoop八天完全攻克Hadoop视频教程 Hadoop开发

    03-NN高可用方案的要点1.avi 04-hadoop-HA机制的配置文件.avi 05-hadoop分布式集群HA模式部署.avi 06-hdfs--HA测试.avi 07-hdfs--动态增加节点和副本数量管理.avi 08-HA的java api访问要点.avi 09-hive入门....

    软件技术《行业标准-人工智能》.doc

    目前,训练和推理通常都在云端实现,只有对实时 性要求很高的设备会交由设备端进行处理。 按技术架构来看,智能芯片可以分为通用类芯片(CPU、GPU、FPGA)、基于 FPGA的半定制化芯片、全定制化 ASIC 芯片、类脑计算...

    Python在Unix和Linux系统管理中的应用

    《Python在Unix和Linux系统管理中的应用》展示了Python语言如何提供一种更加高效的方式来处理Unix和Linux服务器管理工作中的各种任务。《Python在Unix和Linux系统管理中的应用(影印版)》的每一章都会提出一个特定的...

Global site tag (gtag.js) - Google Analytics