基于storm的实时计算架构


实时流计算应用开发框架-天罡 关于 □ 孔令西 • 阿里巴巴数据平台部 • 游泳,海鲜,金花,儿子 • 专注数据平台基础平台产品化及流计算 • lingxi.konglx@alibaba-inc.com • weibo.com:http://weibo.com/kennyccp 提纲 •1.背景 •2.业界 •3.产品介绍 •4.架构设计 •5.squirrel QL •6.实践经验 1.1 业务背景 • Big data数据量膨胀 • 业务快速变化,商业模式的创新 • SNS,移动互联网 • 用户体验个性化,实时化 •… 1.2 离线计算 vs. 流计算 From 1.3 数据分析演进趋势 2.1 业界流计算引擎 Engine state storage 2.2 storm介绍 Engine state storage •最新版本storm 0.74 •主要特性: -适用场景广泛 -可伸缩性高 -保证无数据丢失 -异常健壮 -容错性好 •一些问题: -编程门槛对普通用户较高 -框架无持久化存储 -框架不提供消息接入模块 -storm ui功能简单 -跨topology的bolt复用 -nimbus单点 -topology不支持动态部署 2.3 storm架构 Engine state storage 3.1 阿里巴巴业务需求特征 目前需求归类 统计业务关键指标,客观反映当前的业绩 现状,比如网站活动监控 需求特征 1 跟踪业务指标的变化趋势,出现异常波动, 能智能报警 2 分钟级延迟;丌能漏算;丌能错算;统计 时长为当天; 分钟级延迟;丌能漏算;丌能错算;统计 时长为当天; 业务闭环运营中的实时数据应用,比如事 件营销,触发式服务 3 秒级延迟;允许漏算;丌能错算;计算过 程复杂(规则多); 实时推荐 4 秒级延迟;允许漏算;丌能错算;不推荐 系统交互频繁; 实时数据信息服务 5 秒级延迟;丌允许漏算;丌能错算;计算 过程复杂(指标定义复杂,指标个数多); 部分指标统计时长跨天; 3.2天罡-产品定位 天罡:实时流计算应用开发框架 Engine state storage 深刻理解实时业务需求,提供实时计算的完整应用开发框架 1. 屏蔽系统复杂性,可配置方式即可完成消息源接入 2. 类SQL工具,封装引擎系统,降低实时计算任务的开发难度 3. 完整的任务管理系统,提供任务配置、发布、管控一条龙服务 4. 强大的运维管理系统,监控系统、任务、数据的状态,适时报警 3.3天罡Features Engine state storage •简单统计计算(包括时间窗口) •多流join计算(动态) •容错,事务 •中间状态持久化 •统一消息接入 •支持类SQL •支持数据类型:int/long/string/double… •支持schema •支持join,distinct,group by,count, top N •支持常规函数 -to_char ,substr… 3.4天罡-核心概念 数据采集 数据接入 流式计算 数据输出 处理流程 Job 信息 processing Extract job Message source Message topic Message topic Message Message Data Message Processing job 由message extract service 提供 功能凼数 由类SQL组件实现业务逻辑 天罡系统里的相关概念说明: 1. 一个message source(相当亍 database)包括1个以上的message topic(相当亍 table),一个message topic由1条以上的 message(相当亍 record)组成。 2. 天罡系统有二类Job,分别称为extract job和processing job。一个extract job负责一个message topic的消息接入,一个 processing job由1个以上的message topic参不计算。一个message topic可以被多个processing job引用。Processing job的输 入内容称为message,计算的结果输出,称为data。 4.1天罡-技术方案 Engine state storage erosa 精卫 实时log Stream processing engine(storm) HBASE table join distinct arg … Squrriel QL 消息处理流向 SQL解析组件 SQL执行计划组件 元数据管理 算子组件 supervisor bolt nimbus zookeper spout Local buffer cache Persistence storage Data output service HBASE DB message connector message adaptor Message extract service meta MSC manager Message storage center file … 4.2天罡-功能模块划分 Message extract service Message store center Stream processing engine Engine state storage Data output service Data subscriber service Command Line Client Job Configure Assistant Job Control Center Monitor & Alarm Metadata Center Global Control System Log squirrel QL 4.3天罡-功能模块关系 应用开发 系统模块 运维管控 报警 Message extract service Message store center Log Stream processing engine Engine state storage Processing operator interface Job control center Job Configure Assistant Data output service Monitor(system,service,job,data) Alarm Metadata 4.4 Message extract service • Extract job – message连接器,能够接入db、log、file、mq – message适配器,提供字段选择、格式转换功能 – 实现Job的配置和管理接口 • 服务 – 分布式调度控制管理 – 负载管理 – Job启动,停止 • 规则配置 – Keyword search Message Extract Service Zookeeper Rainbow Majordomo Majordomo …… 1023 103 179 123 …… Job 4.5 Message store center • 统一消息存储方式 – 基于Metamorphosis:淘宝一款类似Kafka 强大的 通用消息中间件 – Pull模式的MQ – 高吞吐量 – Meta spout – 支持消息顺序 • Message read interface • Message write interface • MSC manager 4.6 Engine state storage • 中间状态持久化需求场景 – join – 聚合 – 原始消息存储 – 容错,事务 消重 聚吅 Join Distinct Bolt 存储策略层 Local Buffer HBase Redis …… 4.7 Global Control System • 系统、任务等配置信息的统一存 储管理中心 • 提供用户体验良好的任务研发和 配置服务 • 任务管理中心,直观反应当前任 务执行状态,能够中止、暂时、 重设任务 • 监控:系统(内存,cpu,网络, io等),功能(redis,meta, storm等),任务,数据质量 • storm集群管理 5.1 storm topology开发效率 过滤 中间状 态存储 容错 输出 … 聚合 简单统计场景(中文站UV,PV统计): select a,b,count(c),count(distinct d) from x where a=1 group by to_char(a,'yyyymmdd'),b TopologyBuilder builder = newTopologyBuilder(); builder.setSpout(1, cbuuvpvSpout(), 10); builder.setBolt(2, cbupvuvBolt(), 3).shuffleGrouping(1); …… 5.2 squirrel QL架构 CLI websql SQL解析 SQL执行计划 metadata 数据源 select select join 数据源 数据源 count(*) 输出 IDE table join distinct arg … … 输出 算子 5.3 squirrel QL 解析流程 SQL DsComponent JoinComponment stormDs stormJoin stormOpt spout bolt AGG Dist Proj Sele OptComponment 5.4 squirrel QL聚合 • SELECT uid,COUNT(order) FROM table GROUP by uid table COUNTAGG Ds: Projection(uid,order) Opt: Goup by uid Schema(uid,count) 5.5 squirrel QL JOIN • SELECT c.country, COUNT(o.order) FROM custormer c join order o on c.uid= o.uid GROUP BY c.country CUSTOMER ORDER CUSTOMER_ORDER COUNTAGG Ds: Projection:uid,country Ds: Projection:uid ,order Join Opt: Schema(co untry,order) Countagg Operation: Grouby country Schema(country ,count) 5.6 squrriel QL&Hive QL Hive QL Squrriel QL 数据存储 HDFS HBASE 数据格式 用户自定义 用户自定义 数据更新 不支持 不支持 索引 有(0.8版之后增加) 无 执行 MapReduce Topology 可扩展性 高(UDF,UDAF,UDTF) 高 6.1 实践经验 • 中间状态读写策略 – 缓存,超时6秒 – LRU – 命中率 6.2实践经验(Cont.) • 消息顺序如何保证? – 全序,偏序 – 设置保序key – 消息中间件meta存储顺 序 – 保证在同一个task( fields grouping,自定义 hash grouping) Bolt A Spout Task Bolt B MetaQ 消息分区 Stream Grouping 相同key 的消息 hash分区 6.3 实践经验(Cont.) • 时效与准确性间平衡 – 纯流计算(时序不严格,注重时效性,准确性可 通过批量计算补偿) – 精确计算(牺牲一定时效,接近准确) • 消息保序 • transactional topolgoy (transaction id) • 消息重发 • 应用去重 • 幂等 应用场景@阿里巴巴 业务监控 推荐 卖家360 效果监控中心 实时GMV 效果监控 日志异常实时报警 恶意点击 实时报警 网站实时推荐 首页实时推荐 店铺实时推荐 404页面实时推荐 攻击实时监控报警 买家实时活动 实时搜索动态 实时反馈动态 实时点击动态 实时询盘动态 实时订阅动态 实时访问动态 实时流量 效果监控 贸易通实时推荐 热卖产品实时推 荐 偏好产品实时推 荐 实时活动 效果监控 实时营销 效果监控 广告实时推荐 实时意愿判断 Top likes/trends 异常监控中心 Q&A Thanks 会场用餐自理,以下用餐场所供大家参考 海外海皇冠假日酒店.主楼 名人名家餐厅:二楼(包厢)、三楼(大厅) 西餐厅:四楼 海外海酒店马路对面有各色小吃店 出酒店左拐直走10分钟左右,胜利河美食街 祝您用餐愉快!
还剩31页未读

继续阅读

下载pdf到电脑,查找使用更方便

pdf的实际排版效果,会与网站的显示效果略有不同!!

需要 8 金币 [ 分享pdf获得金币 ] 0 人已下载

下载pdf

pdf贡献者

wsgxy986

贡献于2013-12-10

下载需要 8 金币 [金币充值 ]
亲,您也可以通过 分享原创pdf 来获得金币奖励!
下载pdf