【8A文】Storm专题介绍报告

上传人:Jerm****014 文档编号:70834204 上传时间:2019-01-18 格式:PPT 页数:31 大小:941KB
返回 下载 相关 举报
【8A文】Storm专题介绍报告_第1页
第1页 / 共31页
【8A文】Storm专题介绍报告_第2页
第2页 / 共31页
【8A文】Storm专题介绍报告_第3页
第3页 / 共31页
【8A文】Storm专题介绍报告_第4页
第4页 / 共31页
【8A文】Storm专题介绍报告_第5页
第5页 / 共31页
点击查看更多>>
资源描述

《【8A文】Storm专题介绍报告》由会员分享,可在线阅读,更多相关《【8A文】Storm专题介绍报告(31页珍藏版)》请在金锄头文库上搜索。

1、Storm及 交通实时数据处理,报告人:汪杰宇,绪论知识 Storm架构 一个简单的Storm例子 Storm在交通数据处理中的应用,目录,背景:大数据的产生,数据量的增长: 在2006 年,个人用户才刚刚迈进TB时代,全球一共新产生了约180EB的数据; 在2011 年,这个数字达到了1.8ZB。 有市场研究机构预测(2009年): 到2020 年,整个世界的数据总量将会增长44 倍,达到35.2ZB(1ZB=10 亿TB)!,1GB = 230字节 1TB = 240字节 1PB = 250字节 1EB = 260字节 1ZB = 270字节,背景:大数据处理模式,主要的处理模式可以分为流

2、处理(stream processing)和批处理(batch processing)两种。批处理是先存储后处理(store-process),而流处理则是直接处理(straight-through process)。(有时也分为在线、离线、近线三种),batch processing,stream processing,背景:多种数据处理技术的出现,过去的十年是数据处理变革的十年, MapReduce、 Hadoop以及一些相关的技术使得我们能处理的数据量比以前要大得多得多。但是这些数据处理技术都不是实时的系统 它们设计的目的也不是为了实时计算。 然而大规模的实时数据处理已经越来越成为一种业

3、务需求了, 而缺少一个“实时版本的hadoop”已经成为数据处理整个生态系统的一个巨大缺失。 Storm填补了这个缺失。Storm出现之前,需要自己手动维护一个由消息队列(Queues)和消息处理者(Workers)所组成的实时处理网络,消息处理者从消息队列取出一个消息进行处理,更新数据库,发送消息给其它队列进行进一步处理,但是这种计算方式的局限性太大:复杂、不健壮且扩展性差。,大数据实时流计算系统(一),Yahoo的S4 S4是一个通用的、分布式的、可扩展的、分区容错的、可插拔的流式系统,Yahoo!开发S4系统,主要是为了解决:搜索广告的展现、处理用户的点击反馈。 在流式处理领域里,Sto

4、rm的直接对手是S4。不过,S4冷淡的社区、半成品的代码,在实际商用方面输给Storm不止一条街。,大数据实时流计算系统(二),Facebook 的Puma Facebook使用puma和Hbase相结合来处理实时数据,使批处理计算平台具备一定实时计算能力。 不过这不算是一个开源的产品。只是内部使用。 相关论文:Apache Hadoop Goes Realtime at Facebook。,Why Storm?,Storm:“Hadoop of realtime”、Distributed and fault-tolerant realtime computation Storm定义了一批实时

5、计算的原语。如同hadoop大大简化了并行批量数据处理,storm的这些原语大大简化了并行实时数据处理。storm的一些关键特性如下: 分布式系统/运维简单/高度容错/无数据丢失/支持多种编程语言,Storm发展现状,最新版本:0.9.1 在GitHub上超过4000个项目负责人,全球共有29名代码贡献者。(12年) 很多公司在使用Storm,这些公司中不乏淘宝,百度,Twitter,Groupon,雅虎等重量级公司。,绪论知识 Storm架构 一个简单的Storm例子 Storm在交通数据处理中的应用,目录,Storm集群:物理的,Storm集群主要由一个主节点(master node)和一

6、群工作节点(worker nodes)组成,通过 Zookeeper集群进行协调。 主节点通常运行一个后台程序 Nimbus,用于响应分布在集群中的节点,分配任务和监测故障。工作节点同样会运行一个后台程序 Supervisor,用于收听工作指派并基于要求运行工作进程。每个工作节点都是topology中一个子集的实现。,Storm集群,master,Topology:逻辑的,在Storm中,应用程序实现实时处理的逻辑被封装进Storm中的topology中。 一个topology是由一组Spout组件(数据源)和Bolt组件(数据操作)通过Stream Groupings进行连接的图。,Topo

7、logy:逻辑的,Spout:在一个topology中产生源数据流的组件,从来源处读取数据并放入topology。 Bolt:在一个topology中接受数据然后执行处理的组件。,Topology:逻辑的,流(Stream) Stream是Storm中的一个核心概念,Storm将输入的数据看成流,它是以tuple为单位组成的一条有向无界的数据流。,tuple,tuple,tuple,tuple,tuple,tuple,Topology:逻辑的,Stream Groupings:消息的分组方法。 Storm提供了六种分组方法: 1. 随机分组(Shuffle grouping):随机分发tupl

8、e到Bolt的任务,保证每个任务获得相等数量的tuple。,tuple,tuple,bolt3,bolt2,bolt1,A,B,A,Topology:逻辑的,2. 字段分组(Fields grouping):根据指定字段分割数据流,并分组。例如,根据“user-id”字段,相同“user-id”的元组总是分发到同一个任务,不同“user-id”的元组可能分发到不同的任务。,tuple,tuple,bolt3,bolt2,bolt1,A,B,A,B,Topology:逻辑的,3. 全部分组(All grouping):tuple被复制到bolt的所有任务。这种类型需要谨慎使用。,tuple,tu

9、ple,bolt3,bolt2,bolt1,A,B,A,B,Topology:逻辑的,4. 全局分组(Global grouping):全部流都分配到bolt的同一个任务。明确地说,是分配给ID最小的那个task。 5. 无分组(None grouping) 6. 直接分组(Direct grouping),Storm应用程序执行过程,总结:名词解释,Nimbus:负责资源分配和任务调度. Supervisor:负责接受nimbus分配的任务,启动和停止属于自己管理的worker进程. Topology:storm中运行的一个实时应用程序. Task:worker中每一个spout/bolt的

10、线程称为一个task. Spout:在一个topology中产生源数据流的组件. Bolt:在一个topology中接受数据然后执行处理的组件. Tuple:一次消息传递的基本单元. Stream grouping:消息的分组方法,绪论知识 Storm架构 一个简单的Storm例子 Storm在交通数据处理中的应用,目录,一个具体的例子:Count words,在这个例子中,我们会实现一个简单的topology来统计一个文件中的每个单词出现的次数。我们可以把这个例子认为是storm中的“hello world”。 为了实现这个topology,我们将使用一个spout来负责读取单词,第一个bo

11、lt来标准化单词,第二个bolt来为单词计数,如下图所示:,项目结构,该实例的项目结构如下,其中TopologyMain.java是整个项目的入口。,Spout:WordReader,public class WordReader implements IRichSpout public void open(Map conf, TopologyContext context, SpoutOutputCollector collector) try this.context = context; this.fileReader = new FileReader(conf.get(“wordsFi

12、le“).toString(); catch (FileNotFoundException e) throw new RuntimeException(“Error reading file “+conf.get(“wordFile“)+“); this.collector = collector; ,Spout:WordReader(续),public void nextTuple() if(completed) try Thread.sleep(1); catch (InterruptedException e) /Do nothing return; String str; Buffer

13、edReader reader = new BufferedReader(fileReader); try while(str = reader.readLine() != null) this.collector.emit(new Values(str); catch(Exception e) throw new RuntimeException(“Error reading tuple“,e); finally completed = true; ,Bolt实现,WordNormalizer 负责获取行并且标准化行。它会将行分隔成单词,将单词转化成小写并且trim单词,发送给下一个Bolt

14、. WordCounter 负责为单词计数。,项目入口:TopologyMain,public static void main(String args) throws InterruptedException /Topology definition TopologyBuilder builder = new TopologyBuilder(); builder.setSpout(“word-reader“,new WordReader(); builder.setBolt(“word-normalizer“, new WordNormalizer().shuffleGrouping(“wo

15、rd-reader“); builder.setBolt(“word-counter“, new WordCounter(),2).fieldsGrouping(“word-normalizer“, new Fields(“word“); /Configuration Config conf = new Config(); conf.put(“wordsFile“, args0); conf.setDebug(false); /Topology run conf.put(Config.TOPOLOGY_MAX_SPOUT_PENDING, 1); Creating Our First Topo

16、logy | 17 LocalCluster cluster = new LocalCluster(); cluster.submitTopology(“Getting-Started-Toplogie“, conf,builder.createTopology(); Thread.sleep(1000); cluster.shutdown(); ,绪论知识 Storm架构 一个简单的Storm例子 Storm在交通数据处理中的应用,目录,Storm在交通数据处理中的应用,大数据处理技术在智能交通中的应用-周为钢 选自第八届中国智能交通年会优秀论文集 基于storm的实时GPS数据客流特征分析系统 来自新浪博客,Thats all,thank you!,

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 办公文档 > PPT模板库 > 总结/计划/报告

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号