20210131

大数据 | 大数据基础--系统之大数据实时计算框架

亲爱的读者朋友大家晚上好,前两次计划讲解的批处理框架Spark&Hyracks已经分析完了,从这一次开始我们来共同学习一下实时计算框架storm、spark streaming等。

什么是大数据的实时计算

  • 也称即时计算,是受到“实时约束”的计算机硬件和计算机软件系统
  • 实时约束是从事件发生到系统回应之间的最长时间限制。实时程序必须保证在严格的时间限制内响应。
  • 最重要的需求是能够实时响应计算结果,一般要求为秒级以内。
  • 实时计算可以分为以下两种应用场景:
    • 连续计算:主要用于流式数据处理。数据流是一系列数据记录的集合体。 常见的数据流如网站的访问 PV/UV、点击、搜索关键字。
    • 实时分析:用于特定场合下的数据分析处理。当数据量很大,将部分计算或全部计算过程推迟到查询阶段进行,但要求能够实时响应。

实时处理的对象--流数据

  • 流数据在Web应用、网络监控、传感监测等领域广泛存在
  • 数据以大量、快速、时变的流形式持续到达
  • 实例:PM2.5检测、电子商务网站用户点击流
  • 流数据具有如下特征:
    • 数据快速持续到达,潜在大小也许是无穷无尽的
    • 数据来源众多,格式复杂
    • 数据量大,但是不十分关注存储,一旦经过处理,要么被丢弃, 要么被归档存储
    • 注重数据的整体价值,不过分关注个别数据
    • 数据顺序颠倒,或者不完整,系统无法控制将要处理的新到达的数据元素的顺序

流计算以及流计算的特点

流计算:实时获取来自不同数据源的海量数据,经过实时分析处理,获得有价值的信息。Hadoop处理得太慢,所以不合适。

流计算特点

  • 流计算秉承一个基本理念,即数据的价值随着时间的流逝而降低,如用户点击流。因此,当事件出现时就应该立即进行处理,而不是缓存起来进行 批量处理。为了及时处理流数据,就需要一个低延迟、可扩展、高可靠的处理引擎
  • 对于一个流计算系统来说,它应达到如下需求:
    • 高性能:处理大数据的基本要求,如每秒处理几十万条数据
    • 海量式:支持TB级甚至是PB级的数据规模
    • 实时性:保证较低的延迟时间,达到秒级别,甚至是毫秒级别
    • 分布式:支持大数据的基本架构,必须能够平滑扩展
    • 易用性:能够快速进行开发和部署
    • 可靠性:能可靠地处理流数据

实时计算框架举例

Storm

简介

  • Storm是个实时的、分布式以及具备高容错的计算系统。
    • 分布式
      • 水平扩展:通过加机器、提高并发数就提高处理能力
      • 自动容错:自动处理进程、机器、网络异常 – 实时:数据不写磁盘,延迟低(毫秒级)
    • 流式:不断有数据流入、处理、流出
    • 开源:twitter开源,社区很活跃
  • 同Hadoop一样Storm也可以处理大批量的数据,然而 Storm在保证高可靠性的前提下还可以让处理进行的更 加实时;
  • Storm同样还具备容错和分布计算这些特性,这就让 Storm可以扩展到不同的机器上进行大批量的数据处理。

典型应用场景

1612105483636

抽象应用场景

  • 数据流处理--可用来实时处理新数据和更新数据库,兼具容错性和可扩展性。
  • 连续计算--可进行连续查询并把结果即时反馈给客户端。 例如:把Twitter上的热门话题发送到浏览器中。
  • 分布式远程程序调用可用来并行处理密集查询。其拓扑结构是一个等待调用信息的分布函数,当它收到一条调用信息后,会对查询进行计算,并返回查询结果。例如:可以做并行搜索或者处理大集合的数据。

Storm的特点

编程模型简单:类似于MapReduce降低了并行批处理复杂性,Storm降低了进行实时处理的复 杂性。

可以使用各种编程语言:可以在Storm之上使用各种编程语言。默认支持Clojure、Java、Ruby和Python。 要增加对其他语言的支持,只需实现一个简单的Storm通信协议即可。

容错性:Storm会管理工作进程和节点的故障。

水平扩展:计算是在多个线程、进程和服务器之间并行进行的。

可靠的消息处理:Storm保证每个消息至少能得到一次完整处理。任务失败时,它会负责从消息源重试消息。

快速:系统的设计保证了消息能得到快速的处理。

本地模式:可以在处理过程中完全模拟Storm集群,可以快速进行开发和单元测试。

Spark streaming

概括

  • Spark Streaming是Spark核心API的一个扩展,可以 实现高吞吐量的、具备容错机制的实时流数据的处理。
  • Spark Streaming支持从多种数据源获取数据,包括 Kafk、Flume、Twitter、ZeroMQ、Kinesis 以及 TCP sockets。
  • 从数据源获取数据之后,可以使用诸如map、 reduce、join等高级函数进行复杂算法的处理。
  • 最后还可以将处理结果存储到文件系统,数据库。

特点

Spark Streaming可整合多种输入数据源,如Kafka、Flume、 HDFS,甚至是普通的TCP套接字。经处理后的数据可存储至文件系统、数据库,或显示在仪表盘里。

1612106353368

总结

以上就是大数据实时计算框架的简介以及两个具体的实现的简介,下次我将会从对这个计算任务的抽象、计算框架的API等对这两个实现框架进行介绍,敬请期待~