Java知识分享网 - 轻松学习从此开始!    

Java知识分享网

Java1234官方群25:java1234官方群17
Java1234官方群25:838462530
        
SpringBoot+SpringSecurity+Vue+ElementPlus权限系统实战课程 震撼发布        

最新Java全栈就业实战课程(免费)

springcloud分布式电商秒杀实战课程

IDEA永久激活

66套java实战课程无套路领取

锋哥开始收Java学员啦!

Python学习路线图

锋哥开始收Java学员啦!
当前位置: 主页 > Java文档 > 大数据云计算 >

Storm实现的应用模型研究 PDF 下载


分享到:
时间:2020-05-17 17:59来源:http://www.java1234.com 作者:小锋  侵权举报
Storm实现的应用模型研究 PDF 下载
失效链接处理
Storm实现的应用模型研究 PDF 下载

本站整理下载:
 
相关截图:
 
主要内容:

Storm 实现的应用模型研究
邓立龙1,徐海水1,2 ( 广东工业大学 1. 计算机学院; 2. 网络信息与现代教育技术中心,广东 广州 510006)
摘要: 通过对 Storm 的核心理念和编程模型进行探讨,分析了 Storm 的工作方式和应用方法,并对一个基于 Storm 实
现的数据分析处理系统进行了性能测试和水平扩展测试. 实验结果表明,Storm 实现的数据分析处理系统在性能和
可伸缩性上要优于传统的数据分析处理系统.
关键词: Storm ; 分布式并行计算; 大数据
中图分类号: TP391 文献标志码: A 文章编号: 1007-7162( 2014) 03-0114-05
Research on Applied Models Based on Storm
Deng Li-long1,Xu Hai-shui1,2 ( 1. School of Computers; 2. Center of Internet Information and Modern Education,
Guangdong University of Technology,Guangzhou 510006,China)
Abstract: It discussed the core ideas and programming model of Storm,and analyzed its working mode
and application method. Finally,it implemented the performance and horizontal scaling test of a data pro￾cessing system based on Storm. The experimental results show that the performance and scalability of
Storm is superior to that of the traditional data processing system.
Key words: Storm; distributed real-time parallel computing; big data
在当前这个信息爆炸的时代,互联网上的数据
正以几何级的速度增长. 截止 2012 年 1 月,新浪微
博注册用户数已超过 3 亿,用户日平均在线时长 60
min,平均每天发布超过 1 亿条微博[1]. 在这种背景
下,云计算( Cloud Computing) 的概念被正式提出,立
即引 起 了 学 术 界 和 产 业 界 的 广 泛 关 注 和 参 与.
Google 是云计算最早的倡导者,随后各类大型软件
公司都争先在“云计算”领域进行了一系列的研究
部署工作[2]. 目前最流行的莫过于 Apache 的开源项
目 Hadoop 分布式计算平台,Hadoop 专注于大规模
数据存储和处理. 这种模型对以往的许多情形虽已
足够,如系统日志分析、网页索引建立( 它们往往都
是把过去一段时间的数据进行集中处理) ,但在实
时大数据处理方面,Hadoop 的 MapReduce 却显得
力不从心. 业务场景中需要低延迟的响应,希望在秒
级或者毫秒级完成分析,得到响应,并希望能够随着
数据量的增大而拓展[3]. 此时,Twitter 公司推出开
源分布式、容错的实时流计算系统 Storm,它的出现
使得大规模数据实时处理成为可能,填补了该领域
的空白.
1 Storm 简介
Storm 是一个开源的分布式实时计算系统,可以
简单可靠地处理大量数据流[4]. 其主要应用场景为
实时分析、在线机器学习、持续计算、ETL、分布式
RPC 等[5]. 此外,Storm 支持水平扩展,具有高容错
性,可以确保每个消息都被处理到,而且具有很高的
处理速度,在一个小的 Storm 集群中,每个结可以达
到每秒数以百万计消息的速度.
与其他大数据解决方案相比,Storm 有着不同的
处理方式. 本质上来看 Hadoop[6 - 7]是一个批处理系
统,数据被引入 Hadoop HDFS,然后分发到各个节点
进行处理,当处理任务完成之后,数据结果会再次返
回到 HDFS 供始发者使用. Storm 通过创建拓扑结构
来处理没有终点的数据流,与 Hadoop 作业不同的
是,这些转换工作会一直进行,持续处理数据流中新
到达的数据[8].
1. 1 Storm 的工作机制
Storm 主要有两种类型的节点: 主节点( Master)
和工作节点( Worker) . 主节点通常会运行一个后台
程序,称为 Nimbus. 它负责发送代码到集群,分配工
作任务给每一个工作节点,并监控其运行状态,作用
类似于 Hadoop 中的 Job Tracker. 工作节点会运行一
个名为 Supervisor 的后台程序,Supervisor 负责监听
从 Nimbus 分配给它执行的任务,据此启动或停止执
行任务的工作进程[9]. 在集群系统中,一般一个节点
上运行一个或多个工作进程,每一个工作进程都会
执行一个 Topology 任务的子集. 一个 Topology 任务
往往需要分布在不同工作节点上的多个工作进程来
执行.
如图 1 所示,当一个 Topology 定义好后被提交,
首先会由 Storm 提供的方法把 jar 包上传到 Nimbus,
它会对 Storm 本身和 Topology 进行校验,主要检查
Storm 的状态是否为 Active 以及 Topology 是否有同
名的实例在运行. 接着,Nimbus 对每个 Topology 都
会做出详细的预算,如工作量( 多少个 Task) ,它会
根据 Topology 中定义的 parallelism hint 参数,来给
Spout /Bolt 设 定 Task 数 目,并且分配与其对应的
Task-id,再把分配好 Task 的信息写入 Zookeeper[10] 上的/task 目录下. 然后 Nimbus 会给 Supervisor 分配
工作,方法是把任务信息写在 Zookeeper 的/assign￾ments. Supervisor 每 隔 一 定 时 间 都 会 查 看/assign￾ments 目录,检查 Nimbus 是否有新任务分配,当有新
提交的任务时,它会先下载代码,然后根据任务信息
安排 Worker 执行这些任务. 图 1 Topology 提交的流程图
Fig. 1 The flow chart of Topology
如图 2 所示,在 Storm 集群中 Nimbus 和 Super￾visor 都是无状态的,并且两个模块之间没有直接的
数据交互,所有的状态都是保存在 Zookeeper,Nim￾bus 通过写入 Zookeeper 来发布指令. 而 Supervisor
则通过读取 Zookeeper 节点信息来执行这些指令. 同 时 Supervisor 和 Task 会定时发送心跳信息到 Zoo￾keeper,使得 Nimbus 可以监控整个 Storm 集群的状
态. 当有 Task 节点挂掉时 Nimbus 能够快速使之重
启. 这种工作方式使得整个 Storm 集群十分健壮,任
何一台工作机器突然失效都不会影响到整个系统的
正常运行,只需重启失效节点后再从 Zookeeper 上面
重新获取状态信息即可. 图 2 Storm 数据交互图
Fig. 2 The data interaction diagram of Storm
1. 2 Storm 分布式并行计算编程模型
Storm 是 Twitter 开源的一个实时数据处理框
架,Twitter 每天约 3. 4 亿条的推文正是用 Storm 进
行实时分析处理. Storm 实现了一种流式处理模型,
流是一组有顺序并连续到达的数据序列[11]. 在
Storm 设计思想中,把流中的事件抽象为 Tuple 即元
组,把源头处理抽象为 Spout,把流的处理抽象为
Bolt. 这种思想大大简化了分布式实时并行处理程
序的开发难度. 在 Storm 计算模型中,主要有两种类计算过程,
源头处理过程 Spout 和中间处理过程 Bolt. 因此需要
用户去实现 ISpout 和 IBolt 这两种类型的接口. 作为
Storm 中的消息源,Spout 用于 Topology 生产消息,一
般会不断地从外部数据源( 如 Message Queue、No￾SQL、RDBMS、Log File) 读取然后发送消息给( Tuple
元组) Topology. 之后消息会以某种方式传给 Bolt,
作为 Storm 的消息处理者,Bolt 可以执行过滤、聚合、
数据库查询等操作或与外部实体通信,可以根据情
况选择储存数据,或是把数据传给下一级 Bolt.
Bolt 既可实现传统 MapReduce 之类的功能,也
可实现更复杂的操作,如过滤、聚合等. 如果对两个
组件数据发送有特殊要求,例如在应用场景中需要
把相同 key 值的元组发送到同一个 Bolt 下进行统
计,可使用 Storm 提供的数据流分发( Stream Group￾ing) 策略来解决这一问题. 为提高处理效率,可以在
一个流上加入多个 Spout 和多个 Bolt. 典型的 Storm
拓扑结构会实现多个转换,因此需要多个具有独立
元组流的 Spout. 如图 3 所示,Storm 集群是由许多
Bolt 组件组成的链式处理结构,每个 Bolt 对 Spout 发 第 3 期 邓立龙,等: Storm 实现的应用模型研究 511
射出的数据进行各种转换操作. 图 3 Storm 数据流网络图
Fig. 3 The data flow network diagram of Storm
使 用 Storm 可以轻松地实现 MapReduce 功 能[12]. 如图 4 所示,Spout 生成文本数据流,Bolt 实现
Map 功能( 令牌化一个流中的各个单词) . 来自“map”
Bolt 的流然后流入一个实现 Reduce 功能的 Bolt 中. 图 4 Storm 实现 MapReduce 功能
Fig. 4 Implementation of the function of MapReduce with
Storm
2 实时微博热词分析统计系统
作为一个新生的网络社交平台,微博成功吸引了
数以万计的粉丝进行互动交流. Bernard J. Jansen,
Mimi Zhang 等对 150 000 条微博进行分析,发 现
19% 的微博会提及某个品牌,其中大约 20% 的微博
会包含一些观点,因此快速并准确地掌握民众实时
关注的热点信息对企业在未来的市场竞争中占领先
机具有重要作用[13 - 14]. 以下为微博热词分析统计系
统的设计,通过系统日志实时分析出当前热门词汇.
2. 1 算法实现流程
用一个 Bolt 对流进行全局分组,并在内存中维

 

------分隔线----------------------------

锋哥公众号


锋哥微信


关注公众号
【Java资料站】
回复 666
获取 
66套java
从菜鸡到大神
项目实战课程

锋哥推荐