精华内容
下载资源
问答
  • 流式计算框架

    2019-10-07 19:13:15
    流式计算框架,类似于 Storm。 常用的实时计算引擎(流式计算) 1、Apache Storm:真正的流式计算 2、Spark Streaming:严格上来说,不是真正的流式计算(实时计算) 把连续的流式数据,当成不连续的RDD来...

    流式计算框架,类似于 Storm。

    常用的实时计算引擎(流式计算)

        1、Apache Storm:真正的流式计算
        
        2、Spark Streaming:严格上来说,不是真正的流式计算(实时计算)
            把连续的流式数据,当成不连续的RDD来处理
            本质:是一个离散计算(不连续的数据)
            
        3、Apache Flink:真正的流式计算。和Spark Streaming相反。
            把离散的数据,当成流式数据来处理。

    展开全文
  • 实时流式计算,也就是RealTime,Streaming,Analyse,在不同的领域有不同的定义,这里我们说的是大数据领域的实时流式计算。 实时流式计算,或者是实时计算,流式计算,在大数据领域都是差不多的概念。那么,到底什么是实时...

    实时流式计算,也就是RealTime,Streaming,Analyse,在不同的领域有不同的定义,这里我们说的是大数据领域的实时流式计算。
    实时流式计算,或者是实时计算,流式计算,在大数据领域都是差不多的概念。那么,到底什么是实时流式计算呢?
    谷歌大神Tyler Akidau在《the-world-beyond-batch-streaming-101》一文中提到过实时流式计算的三个特征:
    1、无限数据
    2、无界数据处理
    3、低延迟

    无限数据指的是,一种不断增长的,基本上无限的数据集。这些通常被称为“流数据”,而与之相对的是有限的数据集。
    无界数据处理,一种持续的数据处理模式,能够通过处理引擎重复的去处理上面的无限数据,是能够突破有限数据处理引擎的瓶颈的。
    低延迟,延迟是多少并没有明确的定义。但我们都知道数据的价值将随着时间的流逝降低,时效性将是需要持续解决的问题。

    现在大数据应用比较火爆的领域,比如推荐系统在实践之初受技术所限,可能要一分钟,一小时,甚至更久对用户进行推荐,这远远不能满足需要,我们需要更快的完成对数据的处理,而不是进行离线的批处理。
    但是这种模型肯定会带来离线批处理所不存在的两个问题:正确性与时间。
    而这也正是实时流式计算的关键点:
    1、正确性 一旦正确性有了保证,可以匹敌批处理。
    2、时间推导工具 而一旦提供了时间推导的工具,变完全超过了批处理。

    总结来说,我们得到的会是一条条的,随着时间流逝不断增长的数据,我们需要进行实时的数据分析,我们要解决大数据量,灾备,时序,时间窗口,性能等等问题。
    而实时,流式其实是相对的概念,现在的很多技术更应该说是近实时,微批。但只要能不断的优化这些问题,实时流式的计算的价值就会越来越大。

    由于大数据兴起之初,Hadoop并没有给出实时计算解决方案,随后Storm,SparkStreaming,Flink等实时计算框架应运而生,而Kafka,ES的兴起使得实时计算领域的技术越来越完善,而随着物联网,机器学习等技术的推广,实时流式计算将在这些领域得到充分的应用。
    下面简单介绍目前常用的几种应用场景,未来将对Kafka,Storm,SparkStreaming,Flink等相关技术做具体介绍。

    主要应用

    1、日志分析
    比如对网站的用户访问日志进行实时的分析,计算访问量,用户画像,留存率等等,实时的进行数据分析,帮助企业进行决策。


    2、物联网
    比如对电力系统进行实时的数据检测,进行报警,实时的显示,或者根据历史数据进行实时的分析,预测。


    3、车联网
    如今的车联网已经不限于物联网,还包括对用户,交通等等进行分析的一个庞大的系统,改善用户出行。


    4、金融风控
    通过对交易等金融行为实时分析,预测出未知风险。

    展开全文
  • 流式处理框架的演变

    2021-04-12 15:43:44
    流式处理框架的演变 一、 传统数据处理的架构 1.1 事务处理 (1)简介:数据计算(compute)和数据存储分开(storage),实时与数据库进行交互并给用户response。 (2)优点:实时性高。 (3)缺点:能够同时处理的...

    流式处理框架的演变

    一、 传统数据处理的架构

    1.1 事务处理

    在这里插入图片描述
    (1)简介:数据计算(compute)和数据存储分开(storage),实时与数据库进行交互并给用户response。
    (2)优点:实时性高。
    (3)缺点:能够同时处理的数据量有限,不能应对高并发。

    1.2 分析处理

    在这里插入图片描述
    (1)简介:把数据从业务数据库进行ETL清洗、整合、提取出来,然后统一放到数据仓库中去,然后用数据分析的引擎进行查询分析处理,最后将结果生成报表或即席查询(注:即席查询(Ad Hoc)是用户根据自己的需求,灵活的选择查询条件,系统能够根据用户的选择生成相应的统计报表。)
    (2)优点:离线分析处理、高吞吐量、可应对高并发
    (3)缺点:实时性不高、延迟高

    二、 第一代流处理框架(有状态的流式处理)

    在这里插入图片描述

    (1) 简介

    思考怎样将高吞吐量和高并发以及实时性同时兼顾呢?
    首先要保持事务处理的原则,来一个处理一个,而传统事务处理的性能瓶颈在于于关系型数据库的实时交互(如做联表查询等)。所以有了如上图所示的第一代流式处理框架,在传统事务处理的基础上进行改进,将从关系型数据库获取相关数据改为将相关数据放到本地内存中,将其存成一个本地状态(local state),如果状态有更新,则将本地状态修改就好了,这样当客户端请求来了的时候直接从本地状态中获取相关数据然后返回response节省了大量的网络IO等操作,如果应对高并发,则可以做集群处理。应对服务器掉电导致存在内存中的本地状态丢失,可以做一个周期性检查点(periodic checkpoint),将periodic checkpoint放在远程的存储空间中,这样当节点故障之后进行恢复可以从远程存储空间将之前存盘的状态恢复就可以了。

    (2)优点

    可以应对高并发、有容错机制、实时性有保证。

    (3)缺点

    分布式架构下数据经过不同的分区任务进行处理之后到最后汇总可能存在时序混乱,造成结果不准确。

    三、 第二代流处理框架(lambda架构)

    在这里插入图片描述

    (1)简介

    lambda架构是第二代流处理架构,它同时运用了两套系统,两套架构,来同时保证了低延迟和结果准确。如果所示,lambda架构也是事件触发,分批处理层和流处理层两套处理,流处理会实时的很快速的让用户得到一个近似正确的结果存入Speed Table,批处理会将数据进行积攒,到了一定批量后执行计算得到一个精确的结果,并将其存入Batch Table,在Application应用程序上需要做出判断什么时候拿Speed Table表中的近似正确结果什么时候拿Batch Table中的精确结果。这样用户侧的感受是,发起request之后,会立即得到一个近似正确的结果,然后过一段时间后再看,会得到百分百正确的结果

    (2)缺点

    一个业务需求需要维护两套不同的系统,一旦需求做更改,则要同时改动两套系统,代价很高

    四、 第三代流处理框架

    在这里插入图片描述
    (1) 如上图所示Spark Streaming、Storm、Flink反映了这三种第三代流处理引擎的特点。

    五、Flink特点

    在这里插入图片描述

    (1)简介

    传统的事务处理如第一章1.1所示(本节不做概述),Flink流程与其很相似,Application将事件日志读取进来,跟第一代流处理器一样也是将例如关系型数据库等其他维度数据保存成内部State并且考虑到容错将其checkpoint定期的存盘放到远程的存储空间中,将数据进行处理之后写入到下游输出的事件中去,或者触发一个action操作。

    (2) 特点

    1. 支持事件时间(event-time)和处理时间(processing-time)语义。
    2. 精确一次(exactly-once)的状态一致性保证,即当出现故障时,也能保证数据都只会被消费一次,保证数据准确性。
    3. 低延迟,每秒处理数百万个事件、毫秒级延迟。
    4. 与众多常用存储系统的连接。
    5. 高可用、动态扩展、实现7*24小时全天候运行。
    展开全文
  • storm流式处理框架

    2016-03-18 23:39:41
    Hadoop的高吞吐,海量数据处理的能力使得人们可以方便地处理海量数据。但是,Hadoop的缺点也和它的优点同样鲜明——延迟大,响应缓慢,运维复杂。 ... Storm带着流式计算的标签华丽丽滴出场了,看
    Hadoop的高吞吐,海量数据处理的能力使得人们可以方便地处理海量数据。但是,Hadoop的缺点也和它的优点同样鲜明——延迟大,响应缓慢,运维复杂。
    

          有需求也就有创造,在Hadoop基本奠定了大数据霸主地位的时候,很多的开源项目都是以弥补Hadoop的实时性为目标而被创造出来。而在这个节骨眼上Storm横空出世了。

          Storm带着流式计算的标签华丽丽滴出场了,看看它的一些卖点:

    • 分布式系统:可横向拓展,现在的项目不带个分布式特性都不好意思开源。
    • 运维简单:Storm的部署的确简单。虽然没有Mongodb的解压即用那么简单,但是它也就是多安装两个依赖库而已。
    • 高度容错:模块都是无状态的,随时宕机重启。
    • 无数据丢失:Storm创新性提出的ack消息追踪框架和复杂的事务性处理,能够满足很多级别的数据处理需求。不过,越高的数据处理需求,性能下降越严重。
    • 多语言:实际上,Storm的多语言更像是临时添加上去似的。因为,你的提交部分还是要使用Java实现。

    一.Storm简介

        Storm是一个免费开源、分布式、高容错的实时计算系统。Storm令持续不断的流计算变得容易,弥补了Hadoop批处理所不能满足的实时要求。Storm经常用于在实时分析、在线机器学习、持续计算、分布式远程调用和ETL等领域。Storm的部署管理非常简单,而且,在同类的流式计算工具,Storm的性能也是非常出众的。

        Storm主要分为两种组件Nimbus和Supervisor。这两种组件都是快速失败的,没有状态。任务状态和心跳信息等都保存在Zookeeper上的,提交的代码资源都在本地机器的硬盘上。

    • Nimbus负责在集群里面发送代码,分配工作给机器,并且监控状态。全局只有一个。
    • Supervisor会监听分配给它那台机器的工作,根据需要启动/关闭工作进程Worker。每一个要运行Storm的机器上都要部署一个,并且,按照机器的配置设定上面分配的槽位数。
    • Zookeeper是Storm重点依赖的外部资源。Nimbus和Supervisor甚至实际运行的Worker都是把心跳保存在Zookeeper上的。Nimbus也是根据Zookeerper上的心跳和任务运行状况,进行调度和任务分配的。
    • Storm提交运行的程序称为Topology。
    • Topology处理的最小的消息单位是一个Tuple,也就是一个任意对象的数组。
    • Topology由Spout和Bolt构成。Spout是发出Tuple的结点。Bolt可以随意订阅某个Spout或者Bolt发出的Tuple。Spout和Bolt都统称为component。

    下图是一个Topology设计的逻辑图的例子。

    topology01

         下图是Topology的提交流程图。

    topology02

          下图是Storm的数据交互图。可以看出两个模块Nimbus和Supervisor之间没有直接交互。状态都是保存在Zookeeper上。Worker之间通过ZeroMQ传送数据。

    topology03

           虽然,有些地方做得还是不太好,例如,底层使用的ZeroMQ不能控制内存使用(下个release版本,引入了新的消息机制使用netty代替ZeroMQ),多语言支持更多是噱头,Nimbus还不支持HA。但是,就像当年的Hadoop那样,很多公司选择它是因为它是唯一的选择。而这些先期使用者,反过来促进了Storm的发展。

    二.Storm发展

    Storm已经发展到0.10.0版本了,看一下两年多来,它取得的成就:

    • 有50个大大小小的公司在使用Storm,相信更多的不留名的公司也在使用。这些公司中不乏淘宝,百度,Twitter,Groupon,雅虎等重量级公司。
    • 从开源时候的0.5.0版本,到现在的0.10.0,和即将到来的0.10.0+。先后添加了以下重大的新特性:
      • 使用kryo作为Tuple序列化的框架(0.6.0)
      • 添加了Transactional topologies(事务性拓扑)的支持(0.7.0)
      • 添加了Trident的支持(0.8.0)
      • 引入netty作为底层消息机制(0.9.0)

    Transactional topologies和Trident都是针对实际应用中遇到的重复计数问题和应用性问题的解决方案。可以看出,实际的商用给予了Storm很多良好的反馈。

    • 在GitHub上超过6000个项目负责人。Storm集成了许多库,支持包括Kestrel、Kafka、JMS、Cassandra、Memcached以及更多系统。随着支持的库越来越多,Storm更容易与现有的系统协作。Storm的拥有一个活跃的社区和一群热心的贡献者。过去两年,Storm的发展是成功的。
    三.Storm发展

          Storm被广泛应用于实时分析,在线机器学习,持续计算、分布式远程调用等领域。来看一些实际的应用:

    • 一淘-实时分析系统pora:实时分析用户的属性,并反馈给搜索引擎。最初,用户属性分析是通过每天在云梯上定时运行的MR job来完成的。为了满足实时性的要求,希望能够实时分析用户的行为日志,将最新的用户属性反馈给搜索引擎,能够为用户展现最贴近其当前需求的结果。
    • 携程-网站性能监控:实时分析系统监控携程网的网站性能。利用HTML5提供的performance标准获得可用的指标,并记录日志。Storm集群实时分析日志和入库。使用DRPC聚合成报表,通过历史数据对比等判断规则,触发预警事件。

      如果,业务场景中需要低延迟的响应,希望在秒级或者毫秒级完成分析、并得到响应,而且希望能够随着数据量的增大而拓展。那就可以考虑下,使用Storm了。

    • 试想下,如果,一个游戏新版本上线,有一个实时分析系统,收集游戏中的数据,运营或者开发者可以在上线后几秒钟得到持续不断更新的游戏监控报告和分析结果,然后马上针对游戏的参数和平衡性进行调整。这样就能够大大缩短游戏迭代周期,加强游戏的生命力(实际上,zynga就是这么干的!虽然使用的不是Storm……Zynga研发之道探秘:用数据说话)。
    • 除了低延迟,Storm的Topology灵活的编程方式分布式协调也会给我们带来方便。用户属性分析的项目,需要处理大量的数据。使用传统的MapReduce处理是个不错的选择。但是,处理过程中有个步骤需要根据分析结果,采集网页上的数据进行下一步的处理。这对于MapReduce来说就不太适用了。但是,Storm的Topology就能完美解决这个问题。基于这个问题,我们可以画出这样一个Storm的Topology的处理图。

    topology04

            我们只需要实现每个分析的过程,而Storm帮我们把消息的传送和接受都完成了。更加激动人心的是,你只需要增加某个Bolt的并行度就能够解决掉某个结点上的性能瓶颈。

    四.Storm的未来

          在流式处理领域里,Storm的直接对手是S4。不过,S4冷淡的社区、半成品的代码,在实际商用方面输给Storm不止一条街。

    如果把范围扩大到实时处理,Storm就一点都不寂寞了。

    • Puma:Facebook使用puma和Hbase相结合来处理实时数据,使批处理 计算平台具备一定实时能力。 不过这不算是一个开源的产品。只是内部使用。
    • HStreaming:尝试为Hadoop环境添加一个实时的组件HStreaming能让一个Hadoop平台在几天内转为一个实时系统。分商业版和免费版。也许HStreaming可以借Hadoop的东风,撼动Storm。
    • Spark Streaming:作为UC Berkeley云计算software stack的一部分,Spark Streaming是建立在Spark上的应用框架,利用Spark的底层框架作为其执行基础,并在其上构建了DStream的行为抽象。利用DStream所提供的api,用户可以在数据流上实时进行count,join,aggregate等操作。

          当然,Storm也有Yarn-Storm项目,能让Storm运行在Hadoop2.0的Yarn框架上,可以让Hadoop的MapReduce和Storm共享资源。

    五.小结

           知乎上有一个挺好的问答: 问:实时处理系统(类似s4, storm)对比直接用MQ来做好处在哪里?  答:好处是它帮你做了: 1) 集群控制。2) 任务分配。3) 任务分发 4) 监控 等等。

    需要知道Storm不是一个完整的解决方案。使用Storm你需要加入消息队列做数据入口,考虑如何在流中保存状态,考虑怎样将大问题用分布式去解决。解决这些问题的成本可能比增加一个服务器的成本还高。但是,一旦下定决定使用了Storm并解决了那些恼人的细节,你就能享受到Storm给你带来的简单,可拓展等优势了
    展开全文
  • 浅谈Storm流式处理框架

    万次阅读 2016-03-18 11:14:27
    Hadoop的高吞吐,海量数据处理的能力使得人们可以方便地处理海量数据。但是,Hadoop的缺点也和它的优点同样鲜明——延迟大,响应缓慢,运维复杂。 ... Storm带着流式计算的标签华丽丽滴出场了,看
  • lambda 表达式、连式编程、函数式接口、Stream 流式计算 四大函数式接口 即只有一个方法的接口,即类上有注解 @FunctionalInterface 的接口,比如Runnable接口、foreach()等等。在Java中有大量的函数式接口,它可以...
  • 实时流式计算,也就是RealTime,Streaming,Analyse,在不同的领域有不同的定义,这里我们说的是大数据领域的实时流式计算。 实时流式计算,或者是实时计算,流式计算,在大数据领域都是差不多的概念。那么,到底什么是实时...
  • 【Storm:最火的流式处理框架】 Storm是一个免费开源、分布式、高容错的实时计算系统。Storm令持续不断的流计算变得容易,弥补了Hadoop批处理所不能满足的实时要求。Storm经常用于在实时分析、在线机器学习、持续...
  • 实时流式计算,也就是RealTime,Streaming,Analyse,在不同的领域有不同的定义,这里我们说的是大数据领域的实时流式计算。 实时流式计算,或者是实时计算,流式计算,在大数据领域都是差不多的概念。那么,到底什么是...
  • 一、实时流式计算概述 下面主要通过如下4个问题来阐述什么是实时流式计算: 1.什么是实时流式计算? 实时计算:响应时间受到时间约束的计算 时间约束往往很短,已秒、毫秒为单位 软实时 vs. 硬实时 流式计算:在...
  • storm简介 storm与其他流式计算框架的对比 storm优缺点 storm入门案例
  • 流式计算--Kafka详解

    万次阅读 2018-03-24 16:08:02
    理解storm、spark streamming等流式计算的数据来源、理解JMS规范、理解Kafka核心组件、掌握Kakfa生产者API、掌握Kafka消费者API。对流式计算的生态环境有深入的了解,具备流式计算项目架构的能力。所以学习kafka要...
  • 目前我们所接触的比较流行的开源流式处理框架:Flink、Spark Streaming、Storm、Kafka Streams,我会对以上几个框架的应用场景、优势、劣势、局限性一一做说明,大家快来看看哪个流式处理的框架更适合你吧!
  • 流式计算之Storm简介

    千次阅读 2012-04-10 23:16:06
    流式计算之Storm简介 (2011-11-04 14:51:39) 转载▼ 标签: 杂谈 分类: 数据库 Storm是一个分布式的、容错的实时计算系统,遵循Eclipse Public License1.0,Storm可以方便地在一个...
  • 二、离线计算和流式计算2.1 离线计算2.2 流式计算2.3 Storm与Hadoop的区别三、Storm的体系结构四、Storm的运行机制五、Storm的安装配置六、启动和查看Storm七、Storm的常用命令八、Demo演示:WordCount及流程分析九...
  • 流式计算的理论与技术

    万次阅读 2015-11-04 20:15:05
    流式计算的理论与技术流式数据是大数据环境下的一种数据形态,其理论诞生于20世纪末,并在云计算和物联网发展下逐步成为当前的研究热点。流式数据与传统的数据是相对的。与静态、批处理和持久化的数据库相比,流式...
  • 本文系统地介绍和分析比较了业界主流的Yahoo! S4、StreamBase和Borealis三种流式计算系统,希望读者能从这些系统的设计中领悟到不同场景下流式计算所要解决的关键问题。...非实时计算几乎都基于MapReduce计算框架,但M
  • 摘要:Stream流式计算,本文讲解了Stream流式计算的概念,具体的使用步骤以及源码实现,最后讲解了使用Stream过程中需要注意的事项。Stream在公司项目中被频繁使用,在性能优化上具有广泛的使用场景,通过少量的代码...
  • Streaming101起源于在O'really上发表的两篇博客,原文如下:...其中对流式计算的设计理念做了非常透彻的介绍。现存的系统如...
  • 我们在上一篇文章中给...流式计算系统就是因为流式计算具有很强的实时性,需要对应用源源不断产生的数据实时进行处理,使数据不积压、不丢失,常用于处理电信、电力等行业应用以及互联网行业的访问日志等。在Facebo...
  • Flink是一个开源的流式处理框架,它具有如下特点: 分布式: Flink 程序可以运行在多台机器上。 高性能: 处理性能比较高。 高可用: 由于Flink 程序本身是稳定的,因此它支持高可用性(High Availability,HA)。 准确:...
  • Heron单节点环境为单机环境中的配置过程,高可用集群环境配置使用了Aurora+Mesos+Zookeeper+HDFS的真实可用的Heron流式计算环境。 基础过程 Ubuntu16.04 配置集群SSH无密码登录 Ubuntu16.04常用操作和命...
  • 常见计算框架算子层对比

    千次阅读 2014-09-05 09:05:05
    前段时间在为内部自研的计算框架设计算子层,参考对比了一些开源的计算框架的算子层,本文做一个粗粒度的梳理。 下面这张图是我对计算框架抽象层次的一个拆分,具体可以参考上周日杭州Spark meetup上我做的Spark SQL...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 12,075
精华内容 4,830
关键字:

常用的流式计算框架