基于zookeeper和storm的车载流式计算框架.pptx

上传人:小小飞 文档编号:3675787 上传时间:2019-09-20 格式:PPTX 页数:41 大小:3.74MB
返回 下载 相关 举报
基于zookeeper和storm的车载流式计算框架.pptx_第1页
第1页 / 共41页
基于zookeeper和storm的车载流式计算框架.pptx_第2页
第2页 / 共41页
基于zookeeper和storm的车载流式计算框架.pptx_第3页
第3页 / 共41页
基于zookeeper和storm的车载流式计算框架.pptx_第4页
第4页 / 共41页
基于zookeeper和storm的车载流式计算框架.pptx_第5页
第5页 / 共41页
点击查看更多>>
资源描述

《基于zookeeper和storm的车载流式计算框架.pptx》由会员分享,可在线阅读,更多相关《基于zookeeper和storm的车载流式计算框架.pptx(41页珍藏版)》请在三一文库上搜索。

1、揭示研发管理白金定律,分享那些激动人心的创新与变革,使得团队获得过多源动力与更大的推动力! 基于zookeeper和storm的车载 流式计算框架 邵贤军 开发工程师 南京富士通南大软件技术有限公司 揭示研发管理白金定律,分享那些激动人心的创新与变革,使得团队获得过多源动力与更大的推动力! 摘要 n 案例背景 n 日本第一车载SAAS平台 n 案例需求 n 数据量剧增,吞吐量剧增 n 车载机数量剧增+数据库连接数剧增 n 任务分布不均导致实时性无法满足 n 案例技术方案 n 案例技术方案概览 n 数据存储平台MongoDB n 实时计算平台Storm n 集群协调ZooKeeper n 最佳实

2、践 n MongoDB介绍及最佳实践 n Storm介绍及最佳实践 n ZooKeeper介绍及最佳实践 n 架构不足及经验分享 揭示研发管理白金定律,分享那些激动人心的创新与变革,使得团队获得过多源动力与更大的推动力! 案例背景1业务背景 n 业务场景 物流公司 校车安全 油气公司 n 主要功能 运行数据记录 监视驾驶 违规警告 绩效考评 报表输出 危险地带 实时监控 日本市场占有率第一,积极拓展国内业务 揭示研发管理白金定律,分享那些激动人心的创新与变革,使得团队获得过多源动力与更大的推动力! WebAPP中间件层硬件层 通信层分析计算层1 分析计算层2 Web Server Write

3、Write Write Read Write Polling Read RMDB PrimitiveLog 基本 Bs_WorkShee t Bs_TimeChart Bs_FreqData Bs_DigiData 集計 Master 設定 動態管 理 RMDB PrimitiveLo g 基本 Bs_WorkShee t Bs_TimeChart Bs_FreqData Bs_DigiData 集計 Master 設定 動態管理 RMDB PrimitiveLog 基本 Bs_WorkSheet Bs_TimeChart Bs_FreqData Bs_DigiData 集計 Master 設

4、定 動態管理 案例背景2技术背景 市场竞争激烈,维持第一的保证PAAS 揭示研发管理白金定律,分享那些激动人心的创新与变革,使得团队获得过多源动力与更大的推动力! 一 数据量剧增+吞吐量剧增 2013年 车辆数:10000台 数据量:3000w/天 吞吐量:80M/S () 車両数:10000 Commn Server Analysis Server Stastic Server 分時日月年 bs_primitiveLogWRW-62,3403,722,15729,763,261654,722,3977,856,6448,198 bs_WorkSheet-RWRW8,422504,8754,0

5、32,87488,704,7821,064,448,769 bs_TimeChart-RWRW10,873600,8744,804,430105,600,1001,267,200,296 bs_FreqData-WR45027,0964216,7846,480,54077,760,054 bs_DegitachoData-W-1,01060,079480,10010,560,006126,720,190 数据特性 Heavy Write Heavy Read Past Useless 2015年 车辆数:100000台 数据量:30000w/天 吞吐量:800M/S :车载机发送数据最高频率2

6、次/秒,每次发送4KB数据。10000台车载机的峰值为10000*2*4KB =80000KB=80M/S :从这个数据可以算出实际平均吞吐量是62340*4KB/60 = 4M/s, 但是固定时间点车载机会同时向云端发送运行数据 () 此表抽出 揭示研发管理白金定律,分享那些激动人心的创新与变革,使得团队获得过多源动力与更大的推动力! 通信中间件分析集计中间件DB bs_primitiveLog bs_WorkSheet bs_TimeChart bs_FreqData bs_DegitachoData 设置信息 写原始日志表车载机数据 二 连接数剧增+客户剧增 DB1 DB2 DB3 DB

7、n 通信服务器与各个业 务DB建立长连接 目前的SAAS平台已经 有600租户 每个通信服务器要与 600个DB建立数据库连 接 归一化迫在眉睫 NoSQL 10W车辆时: 1.需要17台通信服务器 2.峰值:10W*8KB/S=800MB/S 数据量 长尾来袭 现在有600个客 户公司,未来? ? 揭示研发管理白金定律,分享那些激动人心的创新与变革,使得团队获得过多源动力与更大的推动力! 三 分析计算程序任务不均匀+实时性不够 DB1 DB2 DB3 DBn Analysis Process Analysis Process Analysis Process Analysis Process

8、 n 现状 同一公司的车辆数据分布在同一数据库 分析计算进程与DB一对一地分析数据 n 问题 若一个公司有很多辆车,那么一个分析计算进程应付不过来,无法分散计算 若一个公司车辆很少,那么该公司对应的分析进程将没有任务,浪费服务器资源 因为分析进程的缓慢执行,车辆的实时运行数据无法反映到客户端 揭示研发管理白金定律,分享那些激动人心的创新与变革,使得团队获得过多源动力与更大的推动力! 案例技术方案概览 揭示研发管理白金定律,分享那些激动人心的创新与变革,使得团队获得过多源动力与更大的推动力! 案例技术方案概览 通信集群消息队列+存储计算集群数据库集群协调集群应用集群 接受连接 负载均衡 通信直连

9、 事件网络 消息发布 消息订阅 数据库操作 存储消息 负载均衡 - 数据分片 主从备份 负载均衡 无模式 数据分解 数据分析 数据统计 日志分析 数据存储 模式隔离 私有仓库 节点管理 任务分配 状态维护 Open API Browser ipad Phone LibeventKafka MongoDB StormSQL ServerZooKeeperIIS、WCF 揭示研发管理白金定律,分享那些激动人心的创新与变革,使得团队获得过多源动力与更大的推动力! 数据存储平台MongoDB MongoDB是一个介于关系数据库和非关系数据库之间的产品,是非关系数据库当中功能最 丰富,最像关系数据库的。

10、他支持的数据结构非常松散,是类似json的bjson格式,因此可 以存储比较复杂的数据类型。Mongo最大的特点是他支持的查询语言非常强大,其语法有 点类似于面向对象的查询语言,几乎可以实现类似关系数据库单表查询的绝大部分功能,而 且还支持对数据建立索引。 它的特点是高性能、易部署、易使用,存储数据非常方便。主要功能特性有: 面向集合存储,易存储对象类型的数据 模式自由 支持动态查询 支持完全索引,包含内部对象 支持查询 支持复制和故障恢复 使用高效的二进制数据存储,包括大型对象(如视频等) 自动处理分片,以支持云计算层次的扩展性 支持RUBY,PYTHON,JAVA,C+,PHP等多种语言。

11、 文件存储格式为BSON(一种JSON的扩展) 可通过网络访问 揭示研发管理白金定律,分享那些激动人心的创新与变革,使得团队获得过多源动力与更大的推动力! 数据量剧增和连接数剧增的解决办法 n 高频读写表抽出 n 1公司:1DB模式N公司:1DB DB1 DB2 DB3 DBn DB1 DB1 DB2 DB3 DBn 揭示研发管理白金定律,分享那些激动人心的创新与变革,使得团队获得过多源动力与更大的推动力! 选择MongoDB的原因 n 增删改查操作最接近SQL,迁移容易,并可为其他业务使用 n 支持数据的自动和手动分片,横向扩展容易 n 性能测试结果接近预期,够用即可,不用追求完美 n 支持

12、数据复制、故障转移、横向扩展,基本符合RAS需求 CAP定理性能 关系 不大 2个mongos,3个分片,非安全插入: 单独执行时: 写线程10个并发时,每秒37000次写入 读线程4个并发时,每秒43000次读取 同时执行时: 写线程10个并发时,每秒达25000次写入 读线程4个并发时,每秒达36000次读取 :CPU 3.2GHz MEM 16G 千兆网卡 揭示研发管理白金定律,分享那些激动人心的创新与变革,使得团队获得过多源动力与更大的推动力! MongoDB最佳实践 n 逻辑部署和物理部署 n 存储结构设计 n 定期数据清除 揭示研发管理白金定律,分享那些激动人心的创新与变革,使得团

13、队获得过多源动力与更大的推动力! Shards Load Balance Config server Replica sets mongosmongosmongos mongod mongod mongod mongod mongod mongod mongod mongod mongod mongod mongod mongod C 2mongod C1 mongod C3 mongod client MongoDB的部署逻辑架构 client 揭示研发管理白金定律,分享那些激动人心的创新与变革,使得团队获得过多源动力与更大的推动力! 192.168.0.2192.168.0.3192.16

14、8.0.4192.168.0.5192.168.0.6 Shard1(master) Shard2(master)Shard3(master)Shard1(slave)Shard1(arbiter) Shard2(slave) Shard3(slave)Shard1(slave)Shard3(slave)Shard2(arbiter) Shard3(arbiter) Shard1(arbiter)Shard2(arbiter)Shard2(slave)Shard3 (arbiter) Config server1Config server2mongosmongosmongos Shard1:1

15、92.168.0.2,192.168.0.5,192.168.0.4,192.168.0.3,192.168.0.6(arbiter) Shard2:192.168.0.3,192.168.0.5,192.168.0.2,192.168.0.4,192.168.0.6(arbiter) Shard3:192.168.0.4,192.168.0.5,192.168.0.3,192.168.0.2,192.168.0.6(arbiter) Config Server1:192.168.0.2 Config Server2:192.168.0.3 Mongos:192.168.0.4,192.168

16、.0.5,192.168.0.6 MongoDB部署物理架构 揭示研发管理白金定律,分享那些激动人心的创新与变革,使得团队获得过多源动力与更大的推动力! 存储数据结构设计 “v”: “DTS19982221” “r”: “t” : “2013-11-14T08:17:00.016Z“ “d” : ”xxxxxxxxxxxxxxxxxx” “o” : “yyyyyyyyyyyyyyyyyy” , “t” : “2013-11-14T08:19:38.342Z“ “d” : ”xxxxxxxxxxxxxxxxxx” “o” : “yyyyyyyyyyyyyyyyyy” “s”: “zzzzz” 名

17、字段要短 db.vehicle.save(“v”:” DTS19982221 ”, “r“: “t“: 201399988772, “d”:”xxxxxxxxxxxxxxxx”,”o”:”yyyyyyyyyyy” db.vehicle.find(“v”:” DTS19982221 ”, “r“: “$elemMatch“: “t“:“$gte“: 201309898876251728 揭示研发管理白金定律,分享那些激动人心的创新与变革,使得团队获得过多源动力与更大的推动力! 定期数据清除 n 清理程序(MonDC)运行在ZooKeeper集群上,自身无状态 n 清理程序(MonDC)监视Mon

18、goDB内存使用量 n 清理程序(MonDC)检测删除过期数据 揭示研发管理白金定律,分享那些激动人心的创新与变革,使得团队获得过多源动力与更大的推动力! 实时计算平台Storm 与Hadoop类似,Storm为分布式实时计算提供了一组通用原语。可被用于“流处理”之 中,实时处理消息并更新数据库。这是管理队列及工作者集群的另一种方式。Storm也可 被用于“连续计算”, 对数据流做连续查询,在计算时就将结果以流的形式输出给用户。 它还可被用于“分布式RPC”,以并行的方式运行昂贵的运算。 Storm的主工程师Nathan Marz表示:Storm可以方便地在一个计算机集群中编写与扩展 复杂的实

19、时计算,Storm之于实时处理,就好比Hadoop之于批处理。Storm保证每个消 息都会得到处理,而且它很快在一个小集群中,每秒可以处理数以百万计的消息。更 棒的是你可以使用任意编程语言来做开发。 Storm的主要特点如下: 简单的编程模型 可以使用各种编程语言 容错性 水平扩展 可靠的消息处理 快速 揭示研发管理白金定律,分享那些激动人心的创新与变革,使得团队获得过多源动力与更大的推动力! Storm为什么号称实时计算系统? n 计算基于内存,较之磁盘有数量级之差 n 使用消息队列做数据传输,速度比数据库快很多 n 使用流式计算思想,数据可以源源不断的被处理 n 任何一个节点都可以将中间计

20、算结果反馈给用户 为什么选择Storm? n 无需维护消息队列(Topic、LB、Broker),专注Producer&Consumer n 满足业务需求,适合业务场景 n 社区活跃,版本更新快 n 性能卓越,易扩展 揭示研发管理白金定律,分享那些激动人心的创新与变革,使得团队获得过多源动力与更大的推动力! Storm里的核心概念 n Tuple&Stream TupleTuple Stream n Topology&Spout&Bolt SpoutBoltBolt Bolt Bolt Bolt 揭示研发管理白金定律,分享那些激动人心的创新与变革,使得团队获得过多源动力与更大的推动力! Clu

21、ster Storm里的核心概念 n Nimbus&Supervisor&Worker&Task Nimbus ZooKeeper Supervisor ZooKeeper ZooKeeper Supervisor Supervisor Supervisor Supervisor Worker Task:SpoutTask:BoltTask:Bolt 提交代码,分配任务,监 视Supervisor 运行业务拓扑 线程 进程 揭示研发管理白金定律,分享那些激动人心的创新与变革,使得团队获得过多源动力与更大的推动力! Storm里的核心概念 n Stream Grouping SpoutBoltA

22、Bolt BoltBBolt BoltC I know who am I I Know:1 who am I:1 I know I:1 who:1 am:1 NOT PASS 问题:如何保证tuple按照予定的路径发送到指定Bolt呢? 揭示研发管理白金定律,分享那些激动人心的创新与变革,使得团队获得过多源动力与更大的推动力! Storm里的核心概念 n Stream Grouping Shuffle Grouping 随机分组, 随机派发stream里面的tuple. Fields Grouping 按字段分组,具有同样字段的tuple会被分到相同的 Task。 All Grouping 广

23、播发送, 对于每一个tuple, 所有的Bolts都会收 到。 Global Grouping 全局分组, 这个tuple被分配到storm中的一个bolt的 其中一个task。再具体一点就是分配给id值最低的那个 task。 Non Grouping 不分组, 这个分组的意思是说stream不关心到底谁会 收到它的tuple。 Direct Grouping 直接分组, 这是一种比较特别的分组方法,用这种分组 意味着消息的发送者指定由消息接收者的哪个task处理 这个消息。 揭示研发管理白金定律,分享那些激动人心的创新与变革,使得团队获得过多源动力与更大的推动力! Storm里的核心概念 n

24、 Stream Grouping BoltABoltB BoltABoltB BoltABoltB BoltABoltB All Fields Shuffle Global 揭示研发管理白金定律,分享那些激动人心的创新与变革,使得团队获得过多源动力与更大的推动力! Storm最佳实践 n 计算拓扑设计 n 数据顺序性保证 n 基于统计的Worker和Task数值设置 揭示研发管理白金定律,分享那些激动人心的创新与变革,使得团队获得过多源动力与更大的推动力! 计算拓扑设计 n 数据输入 FetchSpout MongoDB中读取车辆运行数据 n 分析处理 AnalysisBolt 解码运行数据,

25、如经纬度、违反等 n 数据准备 DataPreBolt 为集计所需要的数据作准备,会与数据库交互 n 集计处理 StasticBolt 统计一段时间或一天的运行数据 n 数据库写 DBWBolt 所有涉及写数据库的操作由此BOLT完成 揭示研发管理白金定律,分享那些激动人心的创新与变革,使得团队获得过多源动力与更大的推动力! 计算拓扑设计 MongoDB FetchSpoutAnalysisBolt AnalysisBolt AnalysisBolt DataPreBolt DataPreBolt DBWBolt DBWBolt Company 1Company 2 Company 3Comp

26、any 4 DBMLayer StasticBolt StasticBolt FetchSpout FetchSpout 揭示研发管理白金定律,分享那些激动人心的创新与变革,使得团队获得过多源动力与更大的推动力! AnalysisBolt AnalysisBolt Spout DataCollBolt DataCollBolt StasticBolt StasticBolt Fileds Grouping Fileds Grouping Fileds Grouping DTS0002, XXXXXX DTS0001, XXXXXX DTS0001, YYYYY DTS0002, YYYYY D

27、TS0001, ZZZZZZZ DTS0002, ZZZZZZZ Fields Grouping 按字段分组, 比如按VehicleId的模n结果来分组, 具有同样VehicleId的tuple会被分到相同的 Bolts, 而不同的userid则会被分配到不同的Bolts。 计算拓扑设计 顺序性如何保证 揭示研发管理白金定律,分享那些激动人心的创新与变革,使得团队获得过多源动力与更大的推动力! 最大效率化基于统计的计算量均匀化 最佳参数设置 通过反复的测试,得到一个接近能够处理完数据的比例设置,这里是2:10. 按照一个最佳数值设置建议:Worker个数是机器的整数倍,Task是Worker的

28、整数倍。我们有7台机 器作为Supervisor,所以Worker数设置为7,Task数值为14,于是得到FetchSpout个数为2, AnalysisBolt个数为12. 以上设置后,计算延时降低到1.3s左右 Storm Cluster Number: 8 揭示研发管理白金定律,分享那些激动人心的创新与变革,使得团队获得过多源动力与更大的推动力! Zookeeper简介 Zookeeper是Google的Chubby一个开源实现,是高有效和可靠的协同工作系 统。 Zookeeper能够用来leader选举,配置信息维护等,在一个分布式的环境中, 需要一个Master实例或存储一些配置信息

29、,确保文件写入的一致性等。 ZooKeeper是一个分布式的,开放源码的分布式应用程序协调服务,包含一个 简单的原语集,是Hadoop和Hbase的重要组件。 目前提供Java和C的接口。 n 谁在用ZooKeeper n ZooKeeper是什么 揭示研发管理白金定律,分享那些激动人心的创新与变革,使得团队获得过多源动力与更大的推动力! lZooKeeper软件维护的是一个树形的数据结构 l从任一个ZooKeeper节点看,树视图都一样 /root /dataNode1 /dataNode2 /dataNode3 /dataNode4 /dataNode5 /subDataNode1 /su

30、bDataNode2 /subDataNode1 lZooKeeper集群维护的是一个树形的数据结构 /root /dataNode1 /dataNode2 /dataNode3 /dataNode4 /dataNode5 /subDataNode1 /subDataNode2 /subDataNode1 /root /dataNode1 /dataNode2 /dataNode3 /dataNode4 /dataNode5 /subDataNode1 /subDataNode2 /subDataNode1 /root /dataNode1 /dataNode2 /dataNode3 /dat

31、aNode4 /dataNode5 /subDataNode1 /subDataNode2 /subDataNode1 /root /dataNode1 /dataNode2 /dataNode3 /dataNode4 /dataNode5 /subDataNode1 /subDataNode2 /subDataNode1 /root /dataNode1 /dataNode2 /dataNode3 /dataNode4 /dataNode5 /subDataNode1 /subDataNode2 /subDataNode1 写操作 lZooKeeper各节点之间的数据结构是同步的 /root

32、 /dataNode1 /dataNode2 /dataNode3 /dataNode4 /dataNode5 /subDataNode1 Zookeeper核心概念数据结构 揭示研发管理白金定律,分享那些激动人心的创新与变革,使得团队获得过多源动力与更大的推动力! Zookeeper核心概念节点类型 节点特点功能 PERSISTENT持久化目录节点,节点数据 不会丢失 保存配置文件,小量数据存 储 PERSISTENT_SEQUENTIAL顺序自动编号目录节点队列,共享锁等 EPHEMERAL临时目录节点,客户端断开 即消失 作为客户端连接状态的监控 节点 EPHEMERAL_SEQUENT

33、IAL临时自动编号目录节点同上,但可作为队列 /root /dataNode1 /dataNode2 /dataNode3 /dataNode4 /dataNode5 /subDataNode1 /subDataNode2 /subDataNode1 揭示研发管理白金定律,分享那些激动人心的创新与变革,使得团队获得过多源动力与更大的推动力! n 统一命名服务(Name Service) n 配置管理(Configuration Management) n 集群管理(Group Membership) n 共享锁(Locks) n 队列管理 (Queue Management) Zookeepe

34、r的应用场景 揭示研发管理白金定律,分享那些激动人心的创新与变革,使得团队获得过多源动力与更大的推动力! ZooKeeper的使用 n 协调数据清理( MonDC ) n 协调任务分配(TaskDistribute) n 协调Spout对MongoDB的数据访问 n 集群节点监控 揭示研发管理白金定律,分享那些激动人心的创新与变革,使得团队获得过多源动力与更大的推动力! 数据清理程序( MonDC ) 开始 MongoDB 轮询清理警戒 是 否 /shardProcTime /shard1:2013000912 /shard2:2013000523 /shard3:2013000943 /sh

35、ard4:2013000125 /shard5:2013000229 mongostat 揭示研发管理白金定律,分享那些激动人心的创新与变革,使得团队获得过多源动力与更大的推动力! 任务分配程序(TaskDistribute) spoutTasks | TASK365B33D23BC | TASK945C3DB33CD | TASK76C46D1267B shards | shard001 | shard002 | shard003 spout_shard shard001 : TASK365B33D23BC shard002 : TASK945C3DB33CD shard003 : TASK

36、76C46D1267B spoutTasks | TASK365B33D23BC | TASK875E3FB5361 | TASK76C46D1267B shards | shard001 | shard002 | shard003 spout_shard shard001 : TASK365B33D23BC shard002 : TASK875E3FB5361 shard003 : TASK76C46D1267B 订阅获取新Task迁移任务 揭示研发管理白金定律,分享那些激动人心的创新与变革,使得团队获得过多源动力与更大的推动力! Spout放置时间戳 首次运行 spoutTasks | T

37、ASK365B33D23BC | TASK945C3DB33CD | TASK76C46D1267B shards | shard001 | shard002 | shard003 shardsTime shard001:2013-11-14T08:16:05.197Z shard002:2013-11-14T08:17:22.699Z shard003:2013-11-14T08:19:33.293Z 获取任务表获取时间戳取数据 MongoDB 发送数据设置时间戳 揭示研发管理白金定律,分享那些激动人心的创新与变革,使得团队获得过多源动力与更大的推动力! 集群节点监控 n 通信转发服务器状态

38、监控 n 数据库服务器状态监控 n 应用服务器状态监控 节点功能 PERSISTENT保存配置文件,小量数据存 储 PERSISTENT_SEQUENTIAL队列,共享锁等 EPHEMERAL作为客户端连接状态的监控 节点 EPHEMERAL_SEQUENTIAL同上,但可作为队列 揭示研发管理白金定律,分享那些激动人心的创新与变革,使得团队获得过多源动力与更大的推动力! 架构不足点 n MongoDB造成延时 n 对MongoDB和Storm的监控不够 n Topology必须停止才能升级 n 弹性不够 揭示研发管理白金定律,分享那些激动人心的创新与变革,使得团队获得过多源动力与更大的推动力! 经验分享 n 多参与社区的讨论 n 给设计人员制定目标 n 为架构培养人才队伍 n 反复的测试 揭示研发管理白金定律,分享那些激动人心的创新与变革,使得团队获得过多源动力与更大的推动力!

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 建筑/环境 > 装饰装潢


经营许可证编号:宁ICP备18001539号-1