失效链接处理 |
基于Storm的实时计算框架的研究与应用 PDF 下载
本站整理下载:
提取码:7re9
相关截图:
主要内容:
基于 Storm 的实时计算框架的研究与应用
李川,鄂海红,宋美娜
(北京邮电大学 计算机学院 北京 100876)
摘 要: 互联网数据的增长,催生了一大批新的数据处理技术,MapReduce,Hadoop 及相关技术使得我们能够处理的
数据量比以前要大得多,但这些技术的设计目的都不是为了实时计算。然而随着社交网络服务的流行,大规模的实时数据
处理已经越来越成为一种业务需求。Twitter Storm 的出现弥补了 Hadoop 在实时处理方面的不足。本文就 Storm 的组成、运
行机制以及计算模型进行研究,并设计与实现了基于 Storm 的社交网络中热门话题的实时计算问题。
关键词: 实时计算; Storm 框架; TopN 问题; 大数据
中图分类号: TP311 文献标识码: A DOI:10.3969/j.issn.1003-6970.2014.10.003
本文著录格式:李川,鄂海红,宋美娜. 基于 Storm 的实时计算框架的研究与应用[J]. 软件,2014,35(10):1620
Research & Application of real-time compute framework based on Storm
LI Chuan, E Hai-hong, SONG Mei-na
(Beijing University of Posts and Telecommunications, Beijing 100876, China) 【Abstract】: With the growth of Internet data, a large number of new data processing techniques born. MapReduce, Hadoop
and other related technologies enable us to handle much more data. But none of these technologies are designed to real-time
computing. However, with the popularity of social networking service, real-time big data processing has increasing become
a business needs. Twitter Storm’s appearance makes up for the lack of Hadoop in real-time processing. In this paper, we will
study Storm composition, operation mechanism and computational models. What is more, we will design and implement the
issue of real-time computing of the hottest topic in social network based on Storm.
【Key words】: real-time computing; Storm framework; TopN problem; big data
0 引言
随着互联网的迅速发展,互联网上的数据正以几何级的速度增长,对数据存储能力和大规模数据处理能力的
要求也越来越高[1]。在这种背景下,一系列新的数据处理技术陆续产生,其中最流行的莫过于 Apache 的开源
项目 Hadoop 分布式计算平台,Hadoop 专注于大规模数据存储和处理,在日志分析、网页索引等方面优势明
显,但在实时大数据处理方面,Hadoop 的 MapReduce 却显得力不从心。然而在现实业务需求中往往需要低延
迟的响应,并希望能够随着数据量的增大而拓展[2]。此时,Twitter 推出了开源分布式高容错实时计算系统 Storm,
使得持续不断的实时流计算变得更加容易,弥补了 Hadoop 批处理所不能满足的实时要求。
1 国内外研究现状
目前对于大数据的计算主要方式为 Hadoop。基于 MapReduce 与 HDFS 的 Hadoop 对大数据的计算提供了高
容错、高扩展、易扩展等特性。其在大数据存储和处理上有较大的优势。Hadoop 关注于批处理,即需要等待数
据积累到一定量级时再计算。但在面对需要处理来自高度动态来源实时信息的模型时就无能为力了。
为了解决实时数据处理模型,需要设计实现实时计算系统。实时计算系统需要满足低延迟、高性能、分布
式、可扩展、容错等特性。目前流行的一种解决方案为消息队列配合分布在各个机器上的工作进程。但这样一
个方案需要保证消息不丢失、消息严格有序、消息如何分发以保证各机器负载均衡等问题,使得开发人员在关
李川等:基于 Storm 的实时计算框架的研究与应用
17 欢迎推荐投稿:cosoft@163.com
注业务流程外还要处理更多其他问题,严重增大处理难度。
结合上文中提到的 Hadoop 处理模型不足以及实时流计算问题,本文将分析流计算框架 Storm 的在进行实
时数据处理事的运行机制,并结合社交网络中的 Top N 问题,应用 Storm 进行实时计算。
2 Storm 简介
Storm 是由 BackType 开发并被 Twitter 于 2011 年开源的分布式实时计算系统[3],Storm 能够很容易可靠地
处理无界持续的流数据,进行实时计算。其主要应用场景为实时分析、在线机器学习、持续计算、分布式 RPC、
ETL 等[4]。此外,Storm 支持水平扩展,具有高容错性,可以确保每个消息都被处理到,而且具有很高的处理
速度,在一个小的 Storm 集群中,每个结可以达到每秒数以百万计消息的速度。同时,Storm 的部署和运维都
很便捷,可以使用任意编程语言来开发应用。
2.1 Storm 基本组件
在 Storm 集群中主要包含两种类型的节点:控制节点(master node)和工作节点(worker node)。
控制节点上运行一个后台程序:Nimbus,它的作用类似于 Hadoop 中的 JobTracker。Nimbus 负责在集群中
分配代码和任务给工作节点,同时监视工作节点的工作状态。
每一个工作节点上运行一个后台程序:
Supervisor。Supervisor 会监听控制节点分配给它
的任务,根据需求启动或者关闭进程。一般来说,
每一个工作进程会执行一个 Topology 的一个子
集;而一个运行的 Topology 有运行在许多工作节
点上的工作进程组成。
Nimbus 与 Supervisor 之间的协调通过 Zookeeper 来实现。Nimbus 进程与 Supervisor 进程都
是快速失败或者无状态的[5],所有的状态都保存在
Zookeeper 中,因此当工作节点或者控制节点出现
故障时,重启即可,保证Storm具有很好的健壮性。
2.2 Storm 运行机制
一个实时计算应用程序的逻辑在 Storm 中被
封装到 Topology 中,即计算拓扑。Topology 类似
于 Hadoop 中的 MapReduce Job,但其显著不同为:
一个 MapReduce Job 最终会结束,而 Topology 会
一直运行。一个 Topology 是由 Worker,Executor,
Task 三个实体完成。
如图 1 所示,Worker 是运行具体处理组件逻
辑的进程。一个Worker执行一个Topology的子集。
一个 Worker 进程会启动一个或者多个 Executor 线
程来执行 Topology 中的一个组件(Spout 或者
Bolt)。Task 是最终运行 Spout 或 Bolt 的代码单元,
一个 Executor 执行一个或者多个 Task 实例。
如 图 2 所示,客户端定义并提交一个
Topology 到 Nimbus 上。Nimbus 根据该 Topology
建立本地目录并计算分配 Task,并在 Zookeeper
上建立 assignments 节点存储 Task 与 worker 之间
的对应关系。同时 Zookeeper 上创建 taskbeats 节
点来监控 Task 心跳。Supervisor 从 Zookeeper 上
获取分配的 Task,启动多个 Worker 同时执行,
|