您好,欢迎访问三七文档
当前位置:首页 > IT计算机/网络 > 数据挖掘与识别 > 阿里巴巴分布式流数据实时与持续计算(强琦)
分布式流数据实时与持续计算分布式流数据实时与持续计算强琦hic2011 2011.12.3提纲提纲•背景背景•目标传统方案与业界进展•传统方案与业界进展•设计理念(重点)•技术架构•要点•要点•例子•系统边界•计划计划背景背景•应用背景应用背景–数据量急剧增加–Web 1.0Æweb 2.0, publicÆegonet–电子商务、移动互联网、移动支付–电子商务、移动互联网、移动支付–欺诈、风控对海量交易实时性–用户体验的个性化和实时性由点到面–由点到面•实时搜索、个人实时信息服务、SNS等背景背景•技术背景–MapReduce、Dryad等全量/增量计算平台MapReduce、Dryad等全量/增量计算平台–S4、Storm等流计算框架–CEP以及EDA模型–Pregel等图计算模型Pregel等图计算模型传统方案与业界进展传统方案与业界进展•传统方案–MAPREDUCE:HDFS加载,存储LOCALITY(容错性),MAPREDUCE:HDFS加载,存储LOCALITY(容错性),顺序IO,存储HDFS,单输入,单输出输入输入计算过程独立数据DiLatency(i)下载Mapshuffle输出独立数据DnlatencyLatency(n)shufflereduce独立数据DnLatency(n)MapreduceJobIProcessJobHadoop之于实时Hadoop之于实时问题(hd本质是为全量而生)•问题(hadoop本质是为全量而生)–任务内串行–重吞吐量,响应时间完全没有保证–中间结果不可见,不可共享中间结果不可见,不可共享–单输入单输出,链式浪费严重–链式MR不能并行链式MR不能并行–粗粒度容错,可能会造成陷阱图计算不友好–图计算不友好–迭代计算不友好图计算图计算为什么不适合图计算•MapReduce为什么不适合图计算?–迭代–边的量级远大于节点•图计算特点图计算特点–适应于事件机制,规模大(边),但单条数据不大很难分布式(locality、partition,一直都是难点)–很难分布式(locality、partition,一直都是难点)–容错性GlPl–Google Pregel•本质上还是全量中间结果不可见•中间结果不可见•超步过多(IProcess)PregelvsIProcess图计算Pregel vs. IProcess图计算•IProcess9乱序执行,避免了不必要的超步9实时图计算,图计算注定慢,但是效果的可以渐显。实时图计算,图计算注定慢,但是效果的可以渐显。迭代计算迭代计算特点•特点–结构固定结构固定•本质Ud–Update•方案–传统MR模型,hadoop效率太低Haloop–Haloop–Iprocess0.4实时计算业界进展实时计算业界进展•S4–2010年底,Yahoo,0.3,window todo年底,,,业界进展业界进展•Storm:2011.9,twitter,0.5.2业界进展Storm业界进展‐Storm系统边界系统边界、•S4、Storm–只能处理“独立”的流数据只能处理“独立的流数据–无法处理“复杂”事件(condition),需要用户handle复杂的条件handle复杂的条件–不能很好的适用于大部分需要相关数据集执行计算和流数据保序的实时场景计算和流数据保序的实时场景–容错性较差–集群无法动态扩展业界进展业界进展其它•其它–StreamBase–Borealis–StreamInsightg–Percolator–HbasecoprocessorHbasecoprocessor–Pregeldremel–dremel–…设计理念设计理念负责任•负责任(Condition)–MapReduce本质上保证了Reduce触发的条件,p本质保证了触发的条件,即所有map都结束(但这点很容易被忽视)。–实时计算Condition很容易被忽略。很多只是考实时计算Condition很容易被忽略。很多只是考虑了streaming,而没有考虑Condition。实时(Sti)•实时(Streaming)•成本(Throughput)(gp)•有所为有所不为通用计算框架用户组件只需关心业务逻辑–通用计算框架,用户组件只需关心业务逻辑。–涉及到业务逻辑统统不做。设计理念设计理念举例•举例–实时JOIN(后面有具体代码)实时(后面有具体代码)在storm(不考虑Condition)框架下,实现join,需要用户代码自己hold条件,判断条件,进而需要用户代码自己hold条件,判断条件,进而触发join后的逻辑处理。但在我们的设计理念下,这些condition完全可以抽象为复杂完备事件模这些condition完全可以抽象为复杂完备事件模型,所以作为通用系统应该提供condition的通用功能用户只需进行配置而不是编码就可以用功能,用户只需进行配置而不是编码就可以完成condition,那么实时join在iprocess体系下,用户无需编码处理condition,而只需处理join后用户无需编码处理condition,而只需处理join后的逻辑。IProcessIProcess通用的分布式流数据实时与持续计算平台•通用的分布式流数据实时与持续计算平台–有向图模型节点为用户编写的组件、边为事件•节点为用户编写的组件、边为事件–触发器模式完备事件驱动的架构,定制复杂完备事件条件–完备事件驱动的架构,定制复杂完备事件条件–支持相关集计算和Reduce时数据集生成(k‐mean)树存储模型,支持不同级别定制不同一致性模型和事–树存储模型,支持不同级别定制不同一致性模型和事务模型可扩展的编程模型–可扩展的编程模型•提出并支持树型实时MR和增量/定时MRIProcessIProcess通用的分布式流数据实时与持续计算平台•通用的分布式流数据实时与持续计算平台–持续与AdHoc计算(endpoint)(p)–微内核+组件系统(系统级组件+用户组件)–多任务服务化,任务沙箱,优先级,任务调度多任务服务化,任务沙箱,优先级,任务调度–两级容错:应用级和系统级,运算时动态扩容–系统级组件系统:实时join、二级索引、倒排表、物化系统级组件系统:实时jo、二级索引、倒排表、物化视图、counter…–分布式系统的容错,自动扩展,通讯,调度–保序…IProcessIProcess基础的运行系统•基础的运行系统–引入CEP规则引擎模块(RPM),类似hive与MR引入数据集控制(用于机器学习),–引入数据集控制(用于机器学习),BI–引入类SQL语言,DSL引擎–引入图计算模型逻辑模型逻辑模型持续计算持续计算•Ad‐Hoc Query–不可枚举不可枚举–用户搜索(online),DB SQL持续计算•持续计算–计算相对固定、可枚举–数据流动–SQL、MRSQL、MRIProcess整体架构整体拓扑运行过程运行过程三个步骤•三个步骤–简单事件发射(分布式)简单事件发射(分布式)–复杂事件完备性判断(集中式、分布式)•分布式事务•分布式事务–尽量避免(机制保证)–强事务(MVCC)、逻辑事务、弱事务强事务()、逻辑事务、弱事务–触发下一个环节IProcess的存储IProcess的存储•树结构的存储树结构的存储–不同的一致性和事务模型•区分实时数据与其它数据的存储•区分实时数据与其它数据的存储•两级容错–应用级和系统级•运算时动态扩容运算时动态扩容•保序Lt、thht、可靠性•Latency、throughput、可靠性–动态tradeoffIProcess的存储IProcess的存储MR模型的本质Reduce(key,valueList,context)实现STCacheStrategy接口实现STCacheStrategy接口QStore:持久化存储。IProcess的存储amberIProcess的存储‐amber与MR容错性的区别:应用级体现在amber,系统级体现在st与gtIProcess的存储GlobalTableIProcess的存储‐GlobalTable维护分支•Hbase维护分支–Segment分裂策略g分裂策略–Coprocessor沙箱类Redis接口–类Redis接口–容量规划–剥离行事务•Yahoo OmidIProcess要点回顾IProcess要点回顾完备事件模型•完备事件模型–基础模型:触发器模式基础模型:触发器模式•可扩展的编程模型(类似于HIVE与hadoop的关系)关系)–Spark(类似storm,完全的流处理,无condition)–Dumbo(实时MapReduce框架)–Graphcomputing(实时pregel)Graph computing(实时pregel)–SQL: HiveIProcess要点回顾IProcess要点回顾树状存储•树状存储•事务模型事务模型–逻辑事务弱事务–弱事务–强事务•运行时扩容•系统,应用量级容错•系统,应用量级容错•保序应用场景特点应用场景特点响应时间实时•响应时间:实时–毫秒级别(子图)–秒级别–分钟级别分钟级别•图复杂度节点简单且重、图复杂–节点简单且重、图复杂–节点简单但轻、图复杂节点复杂但轻、图简单–节点复杂但轻、图简单–节点复杂且重、图简单应用场景特点应用场景特点•语言–C++、Java、ShellC、Java、Shell–SQL规则–规则–DSL•模型–触发器、简单事件、实时MR、图计算触发器、简单事件、实时MR、图计算–…应用架构应用架构Howtouse?How to use?使用需要准备什么?•使用IProcess需要准备什么?–组件集组件集–配置(有向图,事件)拓扑–拓扑Howtouse?AdemoHow to use? A demo•简化的资讯实时搜索实时搜索实时搜索用户API简介用户API简介系统级(高级接口)•系统级(高级接口)–STCacheStrategySTCacheStrategy–LogicalConflictResolverLCflitRl–LazyConflictResovler–IUserDefinedCondition–ISeedGenerator–IPartitioner用户API简介用户API简介•应用级应用级–IProcess原生•IProcessModule(JobContext)•IProcessModule(JobContext)–Spark•EventProcessor(EventContext)•EventProcessor(EventContext)–Dumbo(实时Mapreduce)M•Mapper•Preparer•Reducer•Reducer•Merger–使用MapperContext、ReducerContext等使用pp、等系统API简介系统API简介重要接口和类•重要接口和类–TableStrategy–StorageStrategy–Segment–NameMappingSegment。–SequencedSegment–TimedSegment–NameMappingRecordDumbo例子Dumbo例子代码直接复用,效果大不一样•代码直接复用,效果大不一样•例子(实时,中间结果可见)–wordCount(与全量mapreduce区别在于:dumbo下的wordcount,实时reduce结果是可见的,即整个计算结果中间可被用户访问)计算结果中间可被用户访问)–访问记录一次、多次d•一次map、多次reduce–SQL执行K聚类–K‐mean聚类–实时join•代码见下页•代码见下页Dumbo例子Dumbo例子实时代码(join好一条输出一条)•实时join代码(join好一条输出一条)class MemberMapper: public Mapper{public:id(i&kRdPlMCP)void map(const string& key, const RecordPtrvalue, MapperContextPtrcon
本文标题:阿里巴巴分布式流数据实时与持续计算(强琦)
链接地址:https://www.777doc.com/doc-6220321 .html