分布式流数据实时计算平台iprocess强琦搜索平台2011-6-30OutlineOutline业界的分布式计算产品•业界的分布式计算产品•实时计算的背景•当前产品的应用场景和局限性•当前产品的应用场景和局限性•搜索,广告业务实时计算的需求•分布式流数据实时计算平台iprocess简介分布式流数据实时计算平台p简介•iprocess的架构和计算模型•如何编写iprocess的job•应用和进展•实际例子未来规划•未来规划•Q&A业界的分布式计算产品业界的分布式计算产品•GFS2,Bigtable,Megastore,Spanner•MapreduceHadoopOnlineMapreduceMapreduce,HadoopOnline,Mapreducemerge•S4,Dryad,Pregel,Dremel•Cloudscale,perccolator,CaffeineCloudscale,perccolator,Caffeine•…方法论方法论•What?是什么?•Why?为什么?Why?为什么?•Whynot?为什么我没有想到这一点?•What?它有什么缺点?•Better?有没有更好的?•Better?有没有更好的?•会贯穿整个分享。MapreduceMapreduceMapreduceshuffleMapreduce-shuffleMapreduce接口Mapreduce-接口•Map•ReduceReduce•Combine•Partition•Group•GroupMapreduce特点和应用场景Mapreduce特点和应用场景特点•特点–LOCAL单jb内串行–单job内串行–高吞吐量模型简单–模型简单–。。。•应用场景•应用场景–“重”计算(批量计算)–Databalance=computationbalanceDatabalancecomputationbalance–非图运算–非迭代运算非迭代运算HadoopOnlineHadoopOnlineScheduleSchedule + LocationmapreducePipeline requestmapreducemapreduceHadooponlineHadooponline•: (k1, v1) Æ[(k2, v2)]reduce: (k2, [v2]) Æ[v3]••••Dryad is a general‐purposedistributed execution engine for coarse‐graindata‐parallel applications. A Dryad application combines computational “vertices” with communication “channels” to form a dataflow graph. Dryad runs the application by executing the vertices of this graph on a set of available computers, communicating gas appropriate through files, TCP pipes, and shared‐memory FIFOsyDryadDryadApplicationLanguageDryadLINQSawzallPig, HiveSQL≈SQLLINQ, SQLSawzallExecutionLanguageParallelMap‐ReduceDryadScopeHadoopExecutionParallelDatabasesGFSCosmosDryadHDFSStorageGFSBigTableAzureSQL ServerHDFSS3DryadSystemArchitectureDryadSystemArchitectureFiles,TCP,FIFO,Networkdata planeFiles, TCP, FIFO, Networkjob scheduleVVVNSPDPDPDcontrolplaneJblt16control planeJob managerclusterDryadDryadDryadDryad•select distinct p.objIDf htObjAll•from photoObjAllp•join neighbors n —call this join “X”•on p.objID= n.objIDpjj•and n.objID n.neighborObjID•and p.mode= 1•join photoObjAlll call this join “Y”•join photoObjAlll —call this join Y•on l.objid= n.neighborObjID•and l.mode= 1•and abs((p.u‐p.g)‐(l.u‐l.g))0.05•and abs((p.g‐p.r)‐(l.g‐l.r))0.05•and abs((pr‐pi)‐(lr‐li))005and abs((p.r‐p.i)‐(l.r‐l.i))0.05•and abs((p.i‐p.z)‐(l.i‐l.z))0.05•图算法以被写成是系列的链式作业•图算法可以被写成是一系列的链式mapreduce作业。•可用性和性能。Pregel将顶点和边在本地机器进行运算,而仅仅利用网络来传输信息而不是传输数据而仅仅利用网络来传输信息,而不是传输数据。•MapReduce本质上是面向函数的,所以将图算法用mapreduce来实现就需要将整个图的状态从一个阶段传输mapreduce来实现就需要将整个图的状态从一个阶段传输到另外一个阶段,这样就需要许多的通信和随之而来的序列化和反序列化的开销。列化和反序列化的开销•mapreduce作业中各阶段需要协同工作也给编程增加了难度,这样的情况能够在Pregel的各轮superstep的迭代中避gpp免。PregelPregelPregelPregelPregelPregel••应用场景只读,不会涉及到迁移等。DW。•完全的按列存储,没有附加字段,如果需完全的按列存储,没有附加字段,如果需要返回正行则时间比较多。嵌套结构展平为不太容易按列存储•嵌套结构,展平为row不太容易,按列存储需要恢复结构。近似值,因为可以早停。DremelDremelDremelDremel•SplittingRecordsintoColumns•RecordAssemblyRecordAssembly•Distributed•QUERYEXECUTION•mr可以从column获利•mr可以从column获利••Cloudscale•Perccolator•Caffeine•Caffeine实时计算的背景实时计算的背景•交互越来越频繁•利用用户反馈越来越模切•商业模式越来越实时(实时搜索、高频率交易、社交网络)社交网络)•用户需求越来越个性化,实时化海量流数据的产生•海量流数据的产生•Mapreduce应用于批量计算场景-强调吞吐量•实时计算则强调单个记录的latency(freshness)当前产品的不足和局限性当前产品的不足和局限性Md批处理高吞吐量LOCAL•Mapreduce:批处理,高吞吐量,LOCAL,DATA BALANCE !=COMPUTATION BALANCE,同构数据(join)无法实时,无法并行,etc构数据(join),无法实时,无法并行,etc…•mapreduceonline:取巧的方法•mapreducemerge将异构数据装入mr的框里•mapreducemerge:将异构数据装入mr的框里•S4:容错,业务逻辑复杂,checkpoin实现复杂杂•Dryad:使用复杂,模型不比mr强大•Pregel专款专用•Pregel:专款专用•Dremel:专款专用搜索广告业务实时计算的需求搜索,广告业务实时计算的需求•不同于网页搜索•付费用户,对实时性要求更高•实时状态•收益更依赖平台效果驱动小修改大动作•收益更依赖平台,效果驱动,小修改大动作•广告数据修改非常频繁务•网站特殊业务逻辑分布式流数据实时计算平台iprocess简介分布式流数据实时计算平台iprocess简介个分布式流数据实时计算引擎和平台基该引擎的应用系统以•一个分布式流数据实时计算引擎和平台。基于该引擎的应用系统可以建模为有向图(非DAG),其中“每个节点”为一个用户编写的插件,而”边“为插件定义的事件。•基于iprocess的服务为:一张流程图,以及对应的节点插件和注册事件。iprocess保证了上层系统的可扩展性,一致性和高可用性,并实现了实时计算,增量/批量,全量计算的并行和一致性。现了实时计算,增量/批量,全量计算的并行和致性。•服务化•目前可支持常驻任务,迭代任务等,支持多场景,多任务隔离,层级目录结构,每个目录结构都可以定制一致性策略和事务类型。可支持增量MAP/REDUCE,支持灵活的事务冲突管理机制,分布式跨行跨表事务。支持物化视图和二级索引,支持高效的增量JOIN。iprocess的内核实支持物视图级索支持高效p内核实现高度的插件化,后续的系统功能扩充只需编写系统级插件即可,例如:join功能,二级索引,迭代任务等,只需编写相应的内核级插件。Iprocess应用场景和特点Iprocess-应用场景和特点应用场景•应用场景–流数据实时计算–实时计算–离线计算•特点•特点–基于事件完全不同于MR的计算模型–完全不同于MR的计算模型–兼容MR的模型–兼容pregel模型兼容pregel模型–简单的说是s4,hadooponline,percolator,pregel,dryad的混合体简介基本事件简介-基本事件•Recordzaddrecord•Segmentzadd segmentzbatch add recordztimer recordzdel segmentzmodify segmentzfull recordzdel recordzoccupy segmentzmodify record简介基本接口简介-基本接口•intinit(Context context);•intprocess(DataItemdoc);intprocess(DataItemdoc);•intresolve(ListValue valueSet);•intuninit();•扩展接口扩展接口…iprocess的架构和计算模型StreamrealtimeStream realtimecomputingHadooponlines4iprocess主要角色iprocess主要角色总控任务载•Master:总控,任务加载配置•PN:实际的执行节点。PN:实际的执行节点。•松粒度lockservice与高性能lockservice•时钟服务•配管,监控配管,监控•IDE,模拟环境,调试环境iprocess实时iprocess-实时•MR为什么达不到实时?•iprocess如何做到实时?iprocess如何做到实时?z记录级流数据z流数据z事件触发z实时条件判断iprocess逻辑存储结构iprocess-逻辑存储结构为什么要有hierarchical的结构?iprocess的架构iprocess的架构bl•Memory table:s4,¾优点:快,¾缺点:容错,共享•Sheltertable:hadooponlineSheltertable:hado