奎克的藏经阁 · 原书印刷页

人工智能与大数据技术导论 · 第 84 页

PDF 物理页索引 100 · 第3章

书名
人工智能与大数据技术导论
作者
未记录
印刷页
84
PDF 物理页
100(从 0 开始)
章节
第3章
UUID
cd4f7678-cd9b-4971-bde0-e9ad46a6cc71
来源类型
original_book
页面 SHA-256
aa1e8d80fd676d1c1e0f453c7bed7c9fe8ff9edc188eda575b6a1ac25b958c75
  1. 系统特征

Storm系统的主要特征如下。

(1)简单编程模型。用户只需编写Spout和Bolt部分的实现,因此极大地降低了实时大数据流式计算的复杂性。

(2)支持多种编程语言。默认支持Clojure、Java、Ruby和Python,也可以通过添加相关协议实现对新增语言的支持。

(3)作业级容错性。可以保证每个数据流作业被完全执行。

(4)水平可扩展。计算可以在多个线程、进程和服务器之间并发执行。

(5)快速消息计算。通过ZeroMQ作为其底层消息队列,保证消息能够得到快速的计算。

Storm系统存在的不足主要包括:资源分配没有考虑任务拓扑的结构特征,无法适应数据负载的动态变化;采用集中式的作业级容错机制,在一定程度上限制了系统的可扩展性。

3.4.6 Kafka 系统

Kafka是Linkedin所支持的一款开源的、分布式的、高吞吐量的发布订阅消息系统,可以有效地处理互联网中活跃的流式数据,如网站的页面浏览量、用户访问频率、访问统计、好友动态等,开发语言是Scala,可以使用Java进行编写。Kafka系统在设计过程中主要考虑了以下需求特征。

(1)消息持久化是一种常态需求。

(2)吞吐量是系统需要满足的首要目标。

(3)消息的状态作为订阅者(consumer)存储信息的一部分,在订阅者服务器中进行存储。

(4)将发布者(producer)、代理(broker)和订阅者(consumer)显式地分布在多台机器上,构成显式的分布式系统。

形成了以下关键特性。

(1)在磁盘中实现消息持久化的时间复杂度为O(1),数据规模可以达到太字节(TB)级别。

(2)实现了数据的高吞吐量,可以满足每秒数十万条消息的处理需求。

(3)实现了在服务器集群中进行消息的分片和序列管理。

(4)实现了对Hadoop系统的兼容,可以将数据并行地加载到Hadoop集群中。

  1. 系统架构

Kafka消息系统的架构是由发布者、代理和订阅者共同构成的显式分布式架构,它们分别位于不同的节点上,如图3-13所示。各部分构成一个完整的逻辑组,并对外界提供服务,各部分间通过消息(message)进行数据传输。其中,发布者可以向一个主题(topic)推送相关消息,订阅者以组为单位可以关注并拉取自己感兴趣的消息,通过ZooKeeper实现对订阅者和代理的全局状态信息的管理及其负载均衡的实现。

人工智能与大数据技术导论

84