Location via proxy:   [ UP ]  
[Report a bug]   [Manage cookies]                
SlideShare a Scribd company logo
分布式流数据实时计算平台
    iprocess
              强琦
          搜索平台
         2011-6-30
Outline
•   业界的分布式计算产品
•   实时计算的背景
•   当前产品的应用场景和局限性
•   搜索,广告业务实时计算的需求
•   分布式流数据实时计算平台 p
    分布式流数据实时计算平台iprocess简介
                        简介
•   iprocess的架构和计算模型
•   如何编写iprocess的job
•   应用和进展
•   实际例子
•   未来规划
•   Q&A
• 说明
 – 内部分享。仓促间准备(今天凌晨1点开始,写
   到凌晨三点。今天晚上就要分享)
 – 比较凌乱 内容比较多 尽量说清楚
   比较凌乱,内容比较多,尽量说清楚。
 – 有问题随时打断,线下交流
业界的分布式计算产品

• GFS2,Bigtable,Megastore,Spanner
• Mapreduce Hadoop Online Mapreduce
  Mapreduce,Hadoop Online,Mapreduce
  merge
• S4,Dryad,Pregel,Dremel,hbase(coproces
                              (
  sor)
• Cloudscale, perccolator, Caffeine
• …
方法论

•   What?是什么?
•   Why?为什么?
•   Why not?为什么我没有想到这一点?
•   What?它有什么缺点?
•   Better?有没有更好的?
•   WWWWB会贯穿整个分享。
Mapreduce
Mapreduce-shuffle
Mapreduce shuffle
Mapreduce-接口
                Mapreduce 接口

•   Map
•   Reduce
•   Combine
•   Partition
•   Group
Mapreduce特点和应用场景
• 特点
 –   LOCAL
 –   单job内串行
     单j b内串行
 –   高吞吐量
 –   模型简单
 –   。。。
• 应用场景
 –   “重”计算(批量计算)
 –   Data balance = computation balance
 –   非图运算
 –   非迭代运算
Hadoop Online



Schedule                 Schedule + Location


map                           reduce

      Pipeline request

map                           reduce
Hadoop online

• WWWWB?
Mapreduce merge


                       map: (k1, v1)  [(k2, v2)]
                       reduce: (k2, [v2])  [v3]




• WWWWB?
S4
S4




• WWWWB?
Dryad &&DryadLINQ
• Dryad is a general‐purpose di ib d
       di            l         distributed 
  execution engine for coarse‐grain data‐
  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   g
  as appropriate through files, TCP pipes, and 
  shared‐memory FIFOs
                  y
Dryad

Application
                 SQL        Sawzall      ≈SQL      LINQ, SQL
                            Sawzall    Pig, Hive   DryadLINQ
Language
                                                     Scope

                          Map‐Reduce   Hadoop
Execution     Parallel                               Dryad
              Databases

                                                    Cosmos
Storage                      GFS        HDFS
                                                     Azure
                           BigTable      S3
                                                   SQL Server
Dryad System Architecture

                                    data plane
                        Files, TCP, FIFO, Network
                        Files, TCP, FIFO, Network
job schedule


                                V             V    V

                     NS         PD            PD   PD

  Job manager
  J b           control plane
                control plane       cluster
                                     l t

                                                        17
Dryad
Dryad
•   select distinct p.objID
•   from photoObjAll p
    f       h t ObjAll
•   join neighbors n — call this join “X”
•   on p.objID = n.objID
        p j            j
•   and n.objID < n.neighborObjID
•   and p.mode = 1
•   join photoObjAll l  call this join “Y”
                      l — 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((p.r‐p.i)‐(l.r‐l.i))<0.05
    and abs((p r‐p i)‐(l r‐l i))<0 05
•   and abs((p.i‐p.z)‐(l.i‐l.z))<0.05

• WWWWB?
Pregel
• 图算法 以被写成是 系列的链式
  图算法可以被写成是一系列的链式mapreduce作业。 作业
• 可用性和性能。Pregel将顶点和边在本地机器进行运算,
  而仅仅利用网络来传输信息,而不是传输数据。
  而仅仅利用网络来传输信息 而不是传输数据
• MapReduce本质上是面向函数的,所以将图算法用
  mapreduce来实现就需要将整个图的状态从一个阶段传输
  到另外一个阶段,这样就需要许多的通信和随之而来的序
  列化和反序列化的开销
  列化和反序列化的开销。
• mapreduce作业中各阶段需要协同工作也给编程增加了难
  度,这样的情况能够在Pregel的各轮superstep的迭代中避
                  g    p     p
  免。
Pregel
Pregel
Pregel




• WWWWB?
Dremel

• 应用场景只读,不会涉及到迁移等。DW。
• 完全的按列存储,没有附加字段,如果需
  要返回正行则时间比较多。
• 嵌套结构 展平为
  嵌套结构,展平为row不太容易,按列存储
             不太容易 按列存储
  需要恢复结构。近似值,因为可以早停。
Dremel
Dremel

•   Splitting Records into Columns
•   Record Assembly
•   Distributed
•   QUERY EXECUTION
•   mr可以从column获利


                         • WWWWB?
Hbase-coprocessor
      Hbase coprocessor

• 官方0.92.0新版正在开发中的新功能
• 区别
 – Iprocess侧重中量级运算,cp侧重轻量级
 – Iprocess可以全局访问,cp全部局部(region
           可以全局访问      全部局部(
   server)
 – Iprocess模型支持图,cp不能
 – Iprocess支持扩展mapreduce模型
    p      支持扩展 p       模型
others

• Cloudscale

• Perccolator

• Caffeine
实时计算的背景
• 交互越来越频繁
• 利用用户反馈越来越模切
• 商业模式越来越实时(实时搜索、高频率交易、
  社交网络,移动支付的风险控制)
• 用户需求越来越个性化,实时化
• 海量流数据的产生
• Mapreduce应用于批量计算场景-强调吞吐量
• 实时计算则强调单个记录的latency(freshness)
当前产品的不足和局限性
• M          批处理 高吞吐量 LOCAL
  Mapreduce:批处理,高吞吐量,LOCAL,
        d
  DATA BALANCE !=COMPUTATION BALANCE,同
  构数据(join),无法实时,无法并行,etc…
  构数据(join) 无法实时,无法并行,etc
• mapreduce online:取巧的方法
• mapreduce merge 将异构数据装入mr的框里
            merge:将异构数据装入mr的框里
• S4:容错,业务逻辑复杂,checkpoin实现复
  杂
• Dryad:使用复杂,模型不比mr强大
• Pregel 专款专用
  Pregel:专款专用
• Dremel:专款专用
MapReduce与IProcess

 • 传统方案
     – MAPREDUCE:HDFS加载,存储LOCALITY(容错性),
       顺序IO,存储HDFS
                                          独立数据Di          Latency(i)
输入
                                        输入 计算
                                           过程
     下载                                        输出
                              latency
     Map
           shuffle                        独立数据Dn          Latency(n)
                     reduce


 Mapreduce Job
                                                    IProcess Job
S4,Storm的不足

• S4,Storm处理“独立”流数据的处理。
 – 无法处理“复杂”事件,需要用户handle复杂
   的条件
 – 不能很好的适用于大部分需要相关数据集执行
   计算和流数据保序的实时场景。
 – 容错性较差
 – 集群无法动态扩展
 – 只能处理“流数据”
搜索,广告业务实时计算的需求
    搜索 广告业务实时计算的需求
•   不同于网页搜索
•   付费用户,对实时性要求更高
•   实时状态
•   收益更依赖平台,效果驱动,小修改大动作
    收益更依赖平台 效果驱动 小修改大动作
•   广告数据修改非常频繁
•   网站特殊业务逻辑
         务
•   实时搜索,报价等
分布式流数据实时计算平台iprocess简介
•   一个分布式流数据实时计算引擎和平台。基于该引擎的应用系统可以
    建模为有向图(非DAG),其中 每个节点 为 个用户编写的插件,
    建模为有向图(非DAG) 其中“每个节点”为一个用户编写的插件
    该节点为逻辑节点,被称为PN,会被系统调度到多台物理机器形成逻
    辑集群,也就是说一个逻辑节点实际上可能会有百台的物理机同时服
    务,但不同PN根据其计算负载被调度形成不同的逻辑集群。而”边
    务 但不同PN根据其计算负载被调度形成不同的逻辑集群 而”边
    “为插件定义的完备事件。
•   基于iprocess的服务为:一张流程图,以及对应的节点插件和注册事
       p
    件。iprocess保证了上层系统的可扩展性,一致性和高可用性,并实
    现了实时计算,增量/批量,全量计算的并行和一致性。
•   服务化
•   持续计算
•   目前可支持常驻任务,迭代任务等,支持多场景,多任务隔离,层级
    目录结构,每个目录结构都可以定制一致性策略和事务类型。可支持
    增量MAP/REDUCE,支持灵活的事务冲突管理机制,分布式跨行跨表事务。
    支持物化视图和 级索引,支持高效的增量 O
    支持物化视图和二级索引,支持高效的增量JOIN。iprocess的内核实
                                po  的内核实
    现高度的插件化,后续的系统功能扩充只需编写系统级插件即可,例
    如:join功能,二级索引,迭代任务等,只需编写相应的内核级插件。
IProcess
• 通用的分布式流数据实时与持续计算平台
 – 有向图模型,节点为用户插件,边为事件
 – 子图优化,支持跨机器,同物理机多进程,线程池,
   单线程,保序
 – 同时支持流模式(S4,STORM)和触发器模式
 – 完备事件驱动的架构,定制复杂完备事件条件
 – 树存储模型,支持不同级别定制不同一致性模型和事
   务模型
 – 提出并支持树型MapReduce(1次MAP,多次Reduce)和
   增量/定时MR
 – 支持相关集计算和Reduce时数据集生成(kmean)
 – 提升迭代计算性能(机器学习)
IProcess
 – 持续与AD-HOC计算(endpoint)
 – 多任务服务化,任务沙箱,优先级,任务调度
 – 两级容错:应用级和系统级,运算时动态扩容
 – 微内核+插件系统(系统级插件+用户模块)
 – 系统级插件系统:实时join,二级索引,到排表,
   物化视图(cc),counter…
 – 早停,删除
• 基础的运行系统
      行 统
 – 引入CEP规则引擎模块(RPM),类似hive,mr
 – 引入数据集控制(用于机器学习),BI
 – 引入类SQL语言
Iprocess-应用场景和特点
         Iprocess 应用场景和特点
•   应用场景
    – 流数据
    – 实时计算
    – 离线计算
•   特点
    – Iprocess是一个微内核和插件系统,很多系统功能都是插件完成的。其
      目标也是打造技术生态系统(hadoop),在此之上构架不能的插件系统,
      完成特定场景下的功能和优化。类比如hive和hadoop,iprocess+规则引
      擎(DSL)=风控CEP系统;iprocess+sql执行插件=数据仓库olap,等等。
    – 基于事件,只处理变化部分
    – 完全
      完全不同于MR的计算模型
                的计算模型
    – 兼容MR的模型
    – 兼容pregel模型
    – 简单的说是 4 h d
      简单的说是s4,hadoop online,percolator,pregel,dryad的混合体
                       li        l          l d   d的混合体
iprocess应用和进展
• 搜索数据中心
 – 搜索需要宽表
 – DB, dump,实时join,很多预处理,切分,准备
   build索引
 – 实时 增量 全量不同逻辑 不能并行
   实时,增量,全量不同逻辑,不能并行
 – 晚上发布运维
 – 解决并行问
   解决并行问题,实时,增量,全量统一逻辑。
             实时 增量 全量统    辑
 – 对于小修改大变化自动响应
 – 删除,修改自动响应
     除 修 自
 – 运营更加方便
iprocess应用和进展

• 风险控制与欺诈检测
 – CASE1,信用卡盗卡:当某刷卡瞬间,进入实时
   系统,根据建模后的规则(同卡三个月内消费
   类型,消费平均金额,消费地域等特征),判
   断此次刷卡的风险度,然后给出actions。毫秒
   级。
 – CASE2,搜索广告的点击欺诈。
 – CASE3 某用户修改收货地址时触发风控规则评
   CASE3,某用户修改收货地址时触发风控规则评
   估。。。
iprocess应用和进展
• SNS
  – CASE1:用户修改profile中companyName,那么应该
    推荐的好友应该有所变化。
  – CASE2:某个用户增加新的好友,则自己的二度关        关
    系推荐发生变化;影响到他朋友的二度关系也发生
    变化。这些都属于相关集。
  – CASE3:原有二度关系,推荐关系都是定时hadoop
    跑,现在可根据需要实时或者增量iprocess处理。
    例如:自己的好友变化10个以上或者5秒进行该用
    户二度关系变化部分的增量计算。
iprocess应用和进展
• 算法
 – 聚类算法:原来需要hadoop每天晚上跑一次。浪费,
   因为变化的量有限,但是每天都是全量重新运算;实
   时性太差,因为聚类算法需要相关集,而且相关集是
   runtime计算(map时无法算)。所以,传统方法无法
   处理。Iprocess轻松解决实时聚类或者增量聚类。
 – 推荐算法:实时的cf推荐算法。相关集计算。
 – Ctr预测:做到ctr实时预测,增加广告,搜索结果的
   ctr和用户体验。
      和用户体验
 – Pagerank:利用iprocess,pr计算插件可以订阅:当
   节点入度或者出度有 以上变化,则触发该节点的
   节点入度或者出度有5%以上变化,则触发该节点的
   reduce事件。
 – Iprocess将算法重复运算量降到最低。
iprocess应用和进展

• 资讯搜索
 – 复杂的流程实时处理
 – 运营人员修改某个模块效果时,例如正文提取
   有问题,运营人员手动修改正文内容。那么只
   有问题 运营人员手动修改正文内容 那么只
   需消重插件订阅”修改正文”这个事件,那么
   就会触发操作正文消重;同时建索引插件可以
   订阅”消重中心变化”事件,就会触发老的中
   心删除,新的中心建立索引。节约大量业务逻
   心删除 新的中心建立索引 节约大量业务逻
   辑处理。
iprocess应用和进展

• 数据仓库与OLAP
 – 数据频繁变化,分析相对稳定-OLAP
   数据频繁变化,分析相对稳定 OLAP
   • Query较稳定,变量较少
     – Iprocess持续计算
        p      持续计算
   • Q相对稳定,有一定变量
     – Iprocess的endpoint功能(类似于taobao的prom),本质
       上就是:倒排+本地化+容忍一定错误+10s以下响应
 – 数据频繁变化或相对稳定,分析频繁变化-OLTP
   • 传统rdbms
简介-基本事件
              简介 基本事件
• Record               • Segment
    add record            add segment
    batch add record      del segment
    timer record          modify segment
    full record           occupy segment
    del record            reduce
    modify record
简介-基本接口
                简介 基本接口
•   int init(Context context);
•   int process(DataItem doc);
•   int resolve(List<Value> valueSet);
•   int uninit();
•   扩展接口…
    扩展接口
iprocess的架构和计算模型




                   Stream realtime
                   Stream realtime
                   computing
                   Hadoop online


                   s4
IProcess




整体架构              整体拓扑
IProcess




实时计算架构              重要模块
iprocess主要角色
•          总控 任务 载
    Master:总控,任务加载配置
•   PN:实际的执行节点。
•   松粒度lockservice与高性能lockservice
•   时钟服务
•   配管,监控
•   IDE,模拟环境,调试环境
iprocess-实时
        iprocess 实时

• MR为什么达不到实时?
• iprocess如何做到实时?
  记录级
  流数据
  完备事件触发
  实时条件判断
IProcess的存储
• 树结构的存储(mr,表关系,相关集,不同
  的一致性模型和事务模型等)
• 区分实时数据与其它数据的存储
• 两级容错:应用级和系统级
• 运算时动态扩容
• 流模式和触发器模式
• 流数据的保序
• 流计算(latency)和块计算(throughput)动
  态tradeoff
iprocess-逻辑存储结构
        iprocess 逻辑存储结构
为什么要有hierarchical的结构?
iprocess的架构
• Memory table:s4,
           bl
   优点:快,
   缺点:容错,共享
• Shelter table:hadoop online
   优点:吞吐量,容错
   缺点:实时性
• Global table:stream realtime computing
   优点:全局共享,realtime,容错
   优点 全 共享          容错
   缺点:吞吐量
Iprocess模式
• 事件模式
 – 单记录模式
 – Segment模式(相关集)
• 用户开发模式
 –   流模式:类似S4,STORM
 –   触发器模式:传统数据库
 –   混合模式
 –   树 模式 本质 是 种 g
     树MR模式,本质上是一种segment模式
                        模式
 –   增量/实时MR模式,本质上是一种segment模式
 –   定时 模式,本质上是 种 g
     定时MR模式,本质上是一种segment模式
                         模式
iprocess平滑
• 三者之间平滑过度
• 可以根据业务逻辑,数据特点制定参数
• 可以根据SLA来在一套系统下同时运行
  只有mt时,蜕变为s4
  只有 时 蜕变为
  只有st时,蜕变为mr
  只有gt时,类似咖啡因后台系统
  三者可以任意组合,加以不同权重则显示出不同特
  点:1.响应时间;2.吞吐量;3.容错  的组合
• 开发者可定制st,gt比例从而根据不同任务定制不同
  开发者可定制 ,g 比例从而根据不同任务定制不同
  吞吐量和可靠性策略。
Iprocess-主要过程
            Iprocess 主要过程
• 插入数据
• 判断条件是否满足
• 满足条件,则触发相应事件

•   响应事件
•   查询注册processor
•   调度相应slots
•   任务隔离模块加载
•   执行

• 死锁检测
• 异常检测
• 异常数据清理
iprocess扩展接口

• Map
• Reduce:同构数据ok,异构数据?Join例子
  Reduce(key, list<v>) Reduce(key, tree<v>)
• Combine
• Partition:1对1,多对1,1对多
• No group

• 均为基础接口扩展而来
如何编写iprocess的job-输入
         如何编写iprocess的job 输入
输入
• Table类:
  Table::open();
  Table::addSegment(Segment* pParent, string name, segInfo* );
  ScanStream*  Table::startScan(schema);
              * bl             ( h    )
  int32_t Table::endScan();
• Segment类
  Row* Segment::get(key, schema);
           g       g
  int32_t Segment::set(key, row);
  ScanStream* Segment ::startScan(schema);
  int32_t Segment ::endScan();
  Segment  Segment::getParent();
  Segment* Segment::getParent();
• Row类:
  Row::get(column);
  Row::set(column, pValue);
• ScanStream类
  ScanStream类:
  Row* ScanStream::Next();
如何编写iprocess的job响应
• 响应事件
  响应事件:
 – int process(DataItem doc);
       p       (              );
 – int resolve(list<Value> valueSet);
 – vector<VM> Partition(doc);
 – 扩展接口都是process函数的再定制
   • Reduce(key, list<v>)
   • Reduce(key, tree<v>)
   • Reduce(key, tree<v>)
Iprocess-locality
         Iprocess locality
• Mt
• St,gt与pn部署在相同物理机器
• 数据的局部性由master来监控st,gt的
        或者l k       i 的
  master或者lockservice的metainfo,根据策
                               i f 根据策
  略进行动态的processor迁移或者暂时组织
  数据的迁移或者容忍数据的迁移
• Push computation to the data
计算能力

• Join是搜索广告应用最重头的离线计算
• 以前的join都是批量,大大制约搜索的实
  时性
• 接下来会主要以
  接下来会主要以join为例,说明mapreduce
             为例 说明
  为代表的批量计算和iprocess的计算区
  别。。。
Job-join
               Job join

• Two-way Joins; Multi-way Joins

• 星形;链式;混合
• 执行计划,优化
Job-join
              Job join

• Hadoop玩法
 – Reduce-Side Join,注意group
   Reduce Side
Job-join
Job join
Job-join
                          j
• Hadoop玩法
       p
    – Map‐Side Join
•   All datasets must be sorted
•   All datasets must be partitioned
•   The number of partitions in
•   the datasets must be identical.
    the datasets m st be identical
•   A given key has to be in the same partition in 
      g        y                      p
    each dataset
Job-join
                    Job join
• Hadoop 玩法
 – Broadcast Join
 – Hash join
 – Part join
 – Etc…
iprocess-join
                     iprocess join
• 物化 i
  物化view. A.2=B.1 AND B.2=C.1
          A B  AND B C
  View
  {
    table a;
    view
    {
               table b;
               table c;
               t bl  
               joinFiled b.2, c.1;
      }bc
      joinFiled a.2, bc.1;
  }
iprocess-实时join
                              iprocess 实时join
•      店主表join产品表,join key为memberid。注意这里的member数据和offer数据是并行并且没有顺序的即时(实时)插入
       店主表join产品表 join key为memberid 注意这里的member数据和offer数据是并行并且没有顺序的即时(实时)插入
       系统的(mr需要两张表所有数据都ready才能开始,而iprocess是数据随时插进来就开始计算‐想想那张图)。Join是实
       时join,即join完一条记录就输出。这是和mapreduce的本质区别。 代码虽然和MR实现类似,但实时输出是系统来支
       持的,即条件的完备性(同memberid的member数据和offer数据都插入了)开发者无需考虑。
    class MemberMapper : public Mapper
       {
       public:
          bli
         void map(string key, v value, MapperContextPtr context)
         {
           context‐>write(value‐>get("member_id").toString(),value,"member");
         }
       }
      class OfferMapper : public Mapper
      {
      public:
          void map(string key, v value, MapperContextPtr context)
          {
             context‐>write(value‐>get(“member_id").toString(), value, "offer");
          }
      }
Reduce(key, tree<v> values, ReducerContext context)
  {
    Iterator<v> members = values.get("member");
    Iterator<v> offers = values.get("offer");
    while(members.hasNext())   {
      v member= members.next();
        while(offers.hasNext())  {
               (o               ()) {
            v offer = offers.next();
            context.write(offer.get("offer_id"), member‐>merger(offer));
        }
    }
  }笛卡尔积
iprocess-join
         iprocess join
• 多路
  多路join,迭代进行
          迭代进行
• 已经实现缺省的JOIN,例如ADD,LIST,笛卡
  尔积(Cartesian)。
• 类似的
  类似的wordcount,简单倒排索引,join直
          d      简单倒排索引 j i 直
  接制定EVENT.BIND(Cartesian);无需编写代
  码。
Table join
Table* table = Open(“/qstore/jointable”);
While(1){
Record_a  readRecord(A)
Record a = readRecord(A);
If(record_a == NULL)
Break;
Row* r1 = new Row(T, getJoinKey(Record_a));
r1‐>set(“content”, “table_a”, record_a);
r1 >set(“content”  “table a”  record a);
}
//读取表B
Table* table = Open(“/qstore/jointable”);
While(1){
Record_b = readRecord(B);
If(record_b == NULL)
Break;
Row* r1 = new Row(T, getJoinKey(Record_b));
Row* r1   new Row(T  getJoinKey(Record b));
r1‐>set(“content”, “table_b”, record_b);
}

Int32_t process(key, v doc)
Int32 t process(key  v doc)
{
  Return buildIndex(doc);
}
iprocess-join
             iprocess join
• Reduce‐side,map‐side,hash‐side,bc‐side,etc
• Partition: 1:1;1:1,1:n, part
iprocess join特点
         iprocess-join特点
• 实时join即join好一条记录则产出一条
  实时join即join好 条记录则产出 条
• 同时支持实时,增量,全量join
• 保持原表关系 例如:假设member表修改某些字段 则系
  保持原表关系,例如:假设member表修改某些字段,则系
  统会自动维持一致性,而无需重新build join。
  Mapreduce无法做到。
• Hadoop join分为:原始数据上传hdfs,hdfs下载为本地
  (locality),切块,map,sort,combine,传输,sort,
  merge,reduce,上传至hdfs,使用则还需要下载。以上
  过程虽有部分优化但本质上这些步骤都是串行。
• iprocess的join过程,从原始数据从客户端插入iprocess
          的    过程 从原始数据从客户端插入
  (通讯),运算,结果存储。这些都是并行。试验结果表
  明,join的时间就是插入到存储的时间。
  明 join的时间就是插入到存储的时间
iprocess-mr模型优势
         iprocess mr模型优势
•   完全兼容MR模型
    完全兼容 模型
•   可以做到实时,增量,定时的MR
•   对于图计算可加速迭代过程(并且支持聚类等需要global信息的操作)
•   对于图运算无数据反复拷贝
•   对于图运算不同迭代之间可以并行运算
•   对于mr比较难受的异构数据reduce,有着天然的理论基础
•   可早停,对于某些数据挖掘算法(频繁项)有优势
•   大规模矩阵运算和机器学习(有待试验)
•   可支持并行(分支),汇聚
•   对主表,附表顺序无任何要求。克服hadoop广播方法处理不了两个大
    表的情况
iprocess-mr模型优势
     iprocess mr模型优势
           启动    任务
• Reduce可尽早启动,短任务及早完成对于完成
  整个集群利用率有好处
• 高优先级任务粒度可以到segment级别。
• 这意味这更 d i 的负载策略和调度策略
  这意味这更adaptive的负载策略和调度策略。
• 更容易检测和处理“straggler” 任务。
  更容易检测和处理      gg    任务
• 抢占更有效。
• 可以天然的利用columnar优势。想想
    以 然的利用        优势 想想
  dremel
iprocess-mr模型缺点
      iprocess mr模型缺点
•   过于复杂
•   依赖组件多
•   任务调度更复杂
•   容错精细化到记录,所以控制更复杂
    容错精细化到记录 所以控制更复杂
•   。。。
输入                                    计算过
                                      程
                              输入



     下载
      载
     Map
                                             输出


           shuffle




 Mapreduce Job       reduce

                              IProcess J b
                              IP       Job
iprocess-事务
•   多版本
    –   经典的多版本事务
    –   分布式跨行跨表
    –   代价带大
    –   Segment内部直接锁
          g
    –   跨segment两阶段提交
    –   tradeoff




•   Lazy resolve
    –   应用场景
    –   事务冲突时不是回滚,而是
    –   调用resolve,让用户自己
    –   解决
iprocess实现pagerank
int32_t process(Table(PageID ,double) curr ,Table(PageID ,double) next ,Table(PageID ,[ PageID ]) graph_partition )
{
     for page , outlinks in get_iterator (my_partition()) {
              rank = curr[page]
              update = PropagationFactor * rank / len(outlinks)
              for target in outlinks:
                              next.write(target , update)
                                                                  Iprocess将任务内的调度开放给开发者(如不
     }                                                            制定,iprocess会用缺省实现的调度,本例开
}                                                                 发者自己实现了迭代的任务调度)。Iprocess
                                                                   负责任务间的调度。
int32_t PRControl(Config conf )
{
     graph = Table(PageID ,[ PageID ]). init("/dfs/graph")
     curr = Table(PageID , double ). init(graph. numPartitions (),DefaultSumProccessor, BATCH);
     next = Table(PageID , double ). init(graph. numPartitions (),DefaultSumProccessor, BATCH);
     GroupTables (
               bl (curr , next , graph);
                                     h)
     last_iter = 0;

     for i in range(last_iter , 50) {
                launch(PRProcess ,instances=curr_pr. numPartitions (),locality= LOC_REQUIRED (curr),args =(curr , next , 
     graph ),SUM);
                Synchronized ();
                 swap(curr ,next);
     }
}
iprocess-主要特性
• Segment级别一致性和事务
• 任务隔离系统
  任务隔离系统,MPM类似apache但是引入
              类似    但是引入
  了关联事件。
• 引入物化视图的概念
• 搜索的宽表
• 维护原始表最终一致性
    护    表
• 维护内核稳定性,插件分级
iprocess-features
      iprocess features
v0.1 100% d
 0 1      done
  1.支持有向图的插件系统
  2.支持实时计算,全量计算并行,支持常驻型任务
  2 支持实时计算 全量计算并行 支持常驻型任务
  3.支持多场景
  4.数据补偿
     数据补偿
  5.每个场景下支持多任务
  6.支持插件隔离,优先级,进程,线程,混合模型
  7.支持trigger/触发功能
  8.支持场景,任务,目录动态创建
  9.事件池动态创建,自动迁移
  9 事件池动态创建 自动迁移
iprocess-features
            iprocess features
v0.2 80% d
 0 2      done
   1.可定制事件保序
   2.支持层级目录 支持物化view
   3 支持join和增量join
   3.支持join和增量join
   4.单事件触发优化
   5.immune cache支持,优化access
   6.memtable支持,与table 致性,写优化。兼容S4
   6.memtable支持,与table一致性,写优化。兼容S4
   7.分离系统级插件与应用插件接口和管理方式
   8.支持定义在任意目录上的事件触发
   9 增加
   9.增加occupy事件,支持多优先级,支持增量事件和时间触发事件
               py事件,支持多优先级,支持增量事件和时间触发事件
   10.local preference第一次优化
   11.跨行跨表事务,目录级事务定制,transaction conflict managment
   12.二级索引
   13.增加column多版本触发事件,支持增量mapreduce,增加merge函数。
   (兼容mapreduce模型,增强型mapreduce‐增量reduce)
iprocess-features
v0.3 部分预研和开发
     1.local preference第二次优化
     2.支持迭代任务
        目录级别 致性定制
     3.目录级别一致性定制
     4.引入master(chubby,paoxs),支持任务调度,任务内关键路径调度
     5.3种服务即big lock service, lightweight lock service, Oscillator service的优化和稳定性,可用性
     6.插件迁移,负载均衡
     7.full scan优化(无需字典序)
     8.compact optimization
     9.增加synchronized功能。
     10.增加iteratorVersion支持
     11.增加processor新的触发类型,即主动触发,查询状态。想
     12.完整的监控以及任务分析
        增加 h k i t点支持 增加用户 h k i t函数
     13.增加checkpoint点支持。增加用户checkpoint函数。
     14.本地化第三次优化
     15.sql表达式支持和优化
     16.graph computing支持
     17.virtual table支持
     18.各层级的任务调度,即多场景调度,多任务调度,图的关键路径调度等。
     19.死锁检测以及生命期维护
     20.插件管理以及部署系统
     21.引入虚拟机
     22.引入完全的扩展接口
iprocess-features
           iprocess features
• v0.4
  – 服务化建设
  – 完善多场景,多任务,多segment,图关键路径调
    度
  – 性能调优
• v0.5
  –   完善监控系统
  –   完善运维系统
  –   支持ad-hoc sql优化
  –   系统完全的流动化
iprocess应用和进展

• Clipper
  – 分布式网页处理平台。前端用户标注,后台分
    析。
clipper
•   <result>
•     <url>http://www.taobeng.com/htab/215438_845504.html</url>
•     <time>2011/04/27 11:46:48 Wednesday </time>
•     <root>
•       <产品名称>产品名称:星三角启动控制柜/星三角水泵控制柜/星三角启动控制柜/水泵控</产品名称>
•       <产品分类>产品分类:泵 -&gt; 控制柜 -&gt; 星三角启动控制柜</产品分类>
•       <所在地>所 在 地:上海-上海</所在地>
•       <发布公司>发布公司:上海奥力泵阀制造有限公司</发布公司>
•       <联合节点1>
•         <data>
•           <型号>ALK-2X</型号>
•           <进口口径 (mm)>18.5</进口口径 (mm)>
•           <出口口径 (mm)>2</出口口径 (mm)>
•           <流量 (m3/h)>星三角</流量 (m3/h)>
•           <最大供气压 (MPa)>2240元</最大供气压 (MPa)>
•         </data>
•         <data>
•           <型号>ALK-2X</型号>
•           <进口口径 (mm)>22</进口口径 (mm)>
•           <出口口径 (mm)>2</出口口径 (mm)>
•           <流量 (m3/h)>星三角</流量 (m3/h)>
•           <最大供气压 (MPa)>2415元</最大供气压 (MPa)>
                        (   )>    元</最大供气压 (         )>
•         </data>
•         <data>
•           <型号>ALK-2X</型号>
•           <进口口径 (mm)>30</进口口径 (mm)>
•           <出口口径 (mm)>2</出口口径 (mm)>
•           <流量 (m3/h)>星三角</流量 (m3/h)>
•           <最大供气压 (MPa)>2700元</最大供气压 (MPa)>
             最大供气压 (        )     元 /最大供气压 (         )
•         </data>
•   …
clipper
clipper
clipper

Offer众包   Combo search          SPU      垂直搜索




中间处理层      页面聚类            去除噪音       结构提取




互联网                      数据抓取
clipper
parker
iprocess应用和进展

• isearch新架构


               频繁变化
iprocess应用和进展
• 搜索数据中心
 – 搜索需要宽表
 – DB, dump,实时join,很多预处理,切分,准备
   build索引
 – 实时 增量 全量不同逻辑 不能并行
   实时,增量,全量不同逻辑,不能并行
 – 晚上发布运维
 – 解决并行问
   解决并行问题,实时,增量,全量统一逻辑。
             实时 增量 全量统    辑
 – 对于小修改大变化自动响应
 – 删除,修改自动响应
     除 修 自
 – 运营更加方便
iprocess应用和进展

• 风险控制与欺诈检测
 – CASE1,信用卡盗卡:当某刷卡瞬间,进入实时
   系统,根据建模后的规则(同卡三个月内消费
   类型,消费平均金额,消费地域等特征),判
   断此次刷卡的风险度,然后给出actions。毫秒
   级。
 – CASE2,搜索广告的点击欺诈。
 – CASE3 个用户修改收货地址时触发风控规则
   CASE3,一个用户修改收货地址时触发风控规则
   评估。。。
iprocess应用和进展
• SNS
  – CASE1:用户修改profile中companyName,那么应该
    推荐的好友应该有所变化。
  – CASE2:某个用户增加新的好友,则自己的二度关
                 频繁变化               关
    系推荐发生变化;影响到他的朋友的二度关系也发
    生变化。这些都属于相关集。
  – CASE3:原有二度关系,推荐关系都是定时hadoop
    跑,现在可根据需要实时或者增量iprocess处理。
    例如:自己的好友变化10个以上或者5秒进行该用
    户二度关系变化部分的增量计算。
iprocess应用和进展

• 数据仓库与OLAP
 – 数据频繁变化,分析相对稳定-OLAP
   数据频繁变化,分析相对稳定 OLAP
   • Query较稳定,变量较少
     – Iprocess持续计算
        p      持续计算
   • Q相对稳定,有一定变量
     – Iprocess的endpoint功能(类似于taobao的prom),本质
       上就是:倒排+本地化+容忍一定错误+10s以下响应
 – 数据频繁变化或相对稳定,分析频繁变化-OLTP
   • 传统rdbms
iprocess应用和进展
• 算法
 – 聚类算法:原来需要hadoop每天晚上跑一次。浪费,
   因为变化的量有限,但是每天都是全量重新运算;实
   时性太差,因为聚类算法需要相关集,而且相关集是
   runtime计算(map时无法算)。所以,传统方法无法
   处理。Iprocess轻松解决实时聚类或者增量聚类。
 – 推荐算法:实时的cf推荐算法。相关集计算。
 – Ctr预测:做到ctr实时预测,增加广告,搜索结果的
   ctr和用户体验。
      和用户体验
 – Pagerank:利用iprocess,pr计算插件可以订阅:当
   节点入度或者出度有 以上变化,则触发该节点
   节点入度或者出度有5%以上变化,则触发该节点
   reduce事件。
 – Iprocess将算法重复运算降低到最少。
iprocess应用和进展

• 资讯搜索
实际例子

• 实时资讯搜索
iprocess应用和进展

• 资讯搜索
 – 复杂的流程实时处理
 – 运营人员修改某个模块效果时,例如正文提取
   有问题,运营人员手动修改正文内容。那么只
   有问题 运营人员手动修改正文内容 那么只
   需消重插件订阅”修改正文”这个事件,那么
   就会触发操作正文消重;同时建索引插件可以
   订阅”消重中心变化”事件,就会触发老的中
   心删除,新的中心建立索引。节约大量业务逻
   心删除 新的中心建立索引 节约大量业务逻
   辑处理。
Iprocess应用--网盘
Iprocess应用 网盘
目标

• 通用的分布式流数据实时与持续计算平台
 – 主要解决latency的问题,以“节省”取胜
   throughput
 – 实时的计算
 – 发生时运算而不是需要时运算,从而实现实时,
   增量,全量结合起来实现持续的计算
 – 重,中,轻量级运算的支持
 – 服务化
目标
• 构建技术生态体系
 – IPROCESS与风控计算平台CEP
 – IPROCESS与SNS的计算平台
 – IPROCESS与搜索数据中心,提供实时搜索及其它实时数据服
   务
 – IPROCESS的BI组件
 – IPROCESS的SQL执行组件=数据仓库OLAP
• 全面提升业务的实时处理能力
 –   交易,用户行为的实时数据挖掘
 –   交易,欺诈,风险实时预警和响应
 –   用户关系数据实时反馈和计算
 –   大量减少数据报表服务的全量计算
 –   实时搜索与网站数据实时处理和应用
目标

• 业界有影响力的技术产品
• 具有原创技术并发表高质量,影响力论文
• 开源技术产品线
 – Hive架设在IPROCESS
 – Nutch架设IPROCESS提供整套实时搜索方案
 – 开源CEP,RPM产品
 – 部分开放分布式存储
iprocess未来规划
• 高性能 高响应时间 高容错 动态扩展的实时计
  高性能,高响应时间,高容错,动态扩展的实时计
  算平台
• 提高吞吐量(locality)
• 持续计算
• 与全量/批量计算整合
• 服务化
• 流动计算
• 虚拟化
• 易用性提升
• 推广:(实时)搜索,计算广告,数据挖掘,机器
  学习,图计算,任何离线实时计算。。。
iprocess

•   刚刚走出第一步
•   期待大家能提出批评,建议
•   共同建设
•   0.3
•   奇数开发版本,偶数发布版本
    奇数开发版本 偶数发布版本
Thanks!
         Q&A
 qi.qiangq@alibaba-inc.com
 qi qiangq@alibaba inc com
http://www.weibo.com/carnec

More Related Content

分布式流数据实时计算平台 Iprocess

  • 1. 分布式流数据实时计算平台 iprocess 强琦 搜索平台 2011-6-30
  • 2. Outline • 业界的分布式计算产品 • 实时计算的背景 • 当前产品的应用场景和局限性 • 搜索,广告业务实时计算的需求 • 分布式流数据实时计算平台 p 分布式流数据实时计算平台iprocess简介 简介 • iprocess的架构和计算模型 • 如何编写iprocess的job • 应用和进展 • 实际例子 • 未来规划 • Q&A
  • 3. • 说明 – 内部分享。仓促间准备(今天凌晨1点开始,写 到凌晨三点。今天晚上就要分享) – 比较凌乱 内容比较多 尽量说清楚 比较凌乱,内容比较多,尽量说清楚。 – 有问题随时打断,线下交流
  • 4. 业界的分布式计算产品 • GFS2,Bigtable,Megastore,Spanner • Mapreduce Hadoop Online Mapreduce Mapreduce,Hadoop Online,Mapreduce merge • S4,Dryad,Pregel,Dremel,hbase(coproces ( sor) • Cloudscale, perccolator, Caffeine • …
  • 5. 方法论 • What?是什么? • Why?为什么? • Why not?为什么我没有想到这一点? • What?它有什么缺点? • Better?有没有更好的? • WWWWB会贯穿整个分享。
  • 8. Mapreduce-接口 Mapreduce 接口 • Map • Reduce • Combine • Partition • Group
  • 9. Mapreduce特点和应用场景 • 特点 – LOCAL – 单job内串行 单j b内串行 – 高吞吐量 – 模型简单 – 。。。 • 应用场景 – “重”计算(批量计算) – Data balance = computation balance – 非图运算 – 非迭代运算
  • 10. Hadoop Online Schedule Schedule + Location map reduce Pipeline request map reduce
  • 12. Mapreduce merge map: (k1, v1)  [(k2, v2)] reduce: (k2, [v2])  [v3] • WWWWB?
  • 13. S4
  • 15. Dryad &&DryadLINQ • Dryad is a general‐purpose di ib d di l distributed  execution engine for coarse‐grain data‐ 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  g as appropriate through files, TCP pipes, and  shared‐memory FIFOs y
  • 16. Dryad Application SQL Sawzall ≈SQL LINQ, SQL Sawzall Pig, Hive DryadLINQ Language Scope Map‐Reduce Hadoop Execution Parallel Dryad Databases Cosmos Storage GFS HDFS Azure BigTable S3 SQL Server
  • 17. Dryad System Architecture data plane Files, TCP, FIFO, Network Files, TCP, FIFO, Network job schedule V V V NS PD PD PD Job manager J b control plane control plane cluster l t 17
  • 18. Dryad
  • 19. Dryad • select distinct p.objID • from photoObjAll p f   h t ObjAll • join neighbors n — call this join “X” • on p.objID = n.objID p j j • and n.objID < n.neighborObjID • and p.mode = 1 • join photoObjAll l  call this join “Y” l — 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((p.r‐p.i)‐(l.r‐l.i))<0.05 and abs((p r‐p i)‐(l r‐l i))<0 05 • and abs((p.i‐p.z)‐(l.i‐l.z))<0.05 • WWWWB?
  • 20. Pregel • 图算法 以被写成是 系列的链式 图算法可以被写成是一系列的链式mapreduce作业。 作业 • 可用性和性能。Pregel将顶点和边在本地机器进行运算, 而仅仅利用网络来传输信息,而不是传输数据。 而仅仅利用网络来传输信息 而不是传输数据 • MapReduce本质上是面向函数的,所以将图算法用 mapreduce来实现就需要将整个图的状态从一个阶段传输 到另外一个阶段,这样就需要许多的通信和随之而来的序 列化和反序列化的开销 列化和反序列化的开销。 • mapreduce作业中各阶段需要协同工作也给编程增加了难 度,这样的情况能够在Pregel的各轮superstep的迭代中避 g p p 免。
  • 24. Dremel • 应用场景只读,不会涉及到迁移等。DW。 • 完全的按列存储,没有附加字段,如果需 要返回正行则时间比较多。 • 嵌套结构 展平为 嵌套结构,展平为row不太容易,按列存储 不太容易 按列存储 需要恢复结构。近似值,因为可以早停。
  • 26. Dremel • Splitting Records into Columns • Record Assembly • Distributed • QUERY EXECUTION • mr可以从column获利 • WWWWB?
  • 27. Hbase-coprocessor Hbase coprocessor • 官方0.92.0新版正在开发中的新功能 • 区别 – Iprocess侧重中量级运算,cp侧重轻量级 – Iprocess可以全局访问,cp全部局部(region 可以全局访问 全部局部( server) – Iprocess模型支持图,cp不能 – Iprocess支持扩展mapreduce模型 p 支持扩展 p 模型
  • 29. 实时计算的背景 • 交互越来越频繁 • 利用用户反馈越来越模切 • 商业模式越来越实时(实时搜索、高频率交易、 社交网络,移动支付的风险控制) • 用户需求越来越个性化,实时化 • 海量流数据的产生 • Mapreduce应用于批量计算场景-强调吞吐量 • 实时计算则强调单个记录的latency(freshness)
  • 30. 当前产品的不足和局限性 • M 批处理 高吞吐量 LOCAL Mapreduce:批处理,高吞吐量,LOCAL, d DATA BALANCE !=COMPUTATION BALANCE,同 构数据(join),无法实时,无法并行,etc… 构数据(join) 无法实时,无法并行,etc • mapreduce online:取巧的方法 • mapreduce merge 将异构数据装入mr的框里 merge:将异构数据装入mr的框里 • S4:容错,业务逻辑复杂,checkpoin实现复 杂 • Dryad:使用复杂,模型不比mr强大 • Pregel 专款专用 Pregel:专款专用 • Dremel:专款专用
  • 31. MapReduce与IProcess • 传统方案 – MAPREDUCE:HDFS加载,存储LOCALITY(容错性), 顺序IO,存储HDFS 独立数据Di Latency(i) 输入 输入 计算 过程 下载 输出 latency Map shuffle 独立数据Dn Latency(n) reduce Mapreduce Job IProcess Job
  • 32. S4,Storm的不足 • S4,Storm处理“独立”流数据的处理。 – 无法处理“复杂”事件,需要用户handle复杂 的条件 – 不能很好的适用于大部分需要相关数据集执行 计算和流数据保序的实时场景。 – 容错性较差 – 集群无法动态扩展 – 只能处理“流数据”
  • 33. 搜索,广告业务实时计算的需求 搜索 广告业务实时计算的需求 • 不同于网页搜索 • 付费用户,对实时性要求更高 • 实时状态 • 收益更依赖平台,效果驱动,小修改大动作 收益更依赖平台 效果驱动 小修改大动作 • 广告数据修改非常频繁 • 网站特殊业务逻辑 务 • 实时搜索,报价等
  • 34. 分布式流数据实时计算平台iprocess简介 • 一个分布式流数据实时计算引擎和平台。基于该引擎的应用系统可以 建模为有向图(非DAG),其中 每个节点 为 个用户编写的插件, 建模为有向图(非DAG) 其中“每个节点”为一个用户编写的插件 该节点为逻辑节点,被称为PN,会被系统调度到多台物理机器形成逻 辑集群,也就是说一个逻辑节点实际上可能会有百台的物理机同时服 务,但不同PN根据其计算负载被调度形成不同的逻辑集群。而”边 务 但不同PN根据其计算负载被调度形成不同的逻辑集群 而”边 “为插件定义的完备事件。 • 基于iprocess的服务为:一张流程图,以及对应的节点插件和注册事 p 件。iprocess保证了上层系统的可扩展性,一致性和高可用性,并实 现了实时计算,增量/批量,全量计算的并行和一致性。 • 服务化 • 持续计算 • 目前可支持常驻任务,迭代任务等,支持多场景,多任务隔离,层级 目录结构,每个目录结构都可以定制一致性策略和事务类型。可支持 增量MAP/REDUCE,支持灵活的事务冲突管理机制,分布式跨行跨表事务。 支持物化视图和 级索引,支持高效的增量 O 支持物化视图和二级索引,支持高效的增量JOIN。iprocess的内核实 po 的内核实 现高度的插件化,后续的系统功能扩充只需编写系统级插件即可,例 如:join功能,二级索引,迭代任务等,只需编写相应的内核级插件。
  • 35. IProcess • 通用的分布式流数据实时与持续计算平台 – 有向图模型,节点为用户插件,边为事件 – 子图优化,支持跨机器,同物理机多进程,线程池, 单线程,保序 – 同时支持流模式(S4,STORM)和触发器模式 – 完备事件驱动的架构,定制复杂完备事件条件 – 树存储模型,支持不同级别定制不同一致性模型和事 务模型 – 提出并支持树型MapReduce(1次MAP,多次Reduce)和 增量/定时MR – 支持相关集计算和Reduce时数据集生成(kmean) – 提升迭代计算性能(机器学习)
  • 36. IProcess – 持续与AD-HOC计算(endpoint) – 多任务服务化,任务沙箱,优先级,任务调度 – 两级容错:应用级和系统级,运算时动态扩容 – 微内核+插件系统(系统级插件+用户模块) – 系统级插件系统:实时join,二级索引,到排表, 物化视图(cc),counter… – 早停,删除 • 基础的运行系统 行 统 – 引入CEP规则引擎模块(RPM),类似hive,mr – 引入数据集控制(用于机器学习),BI – 引入类SQL语言
  • 37. Iprocess-应用场景和特点 Iprocess 应用场景和特点 • 应用场景 – 流数据 – 实时计算 – 离线计算 • 特点 – Iprocess是一个微内核和插件系统,很多系统功能都是插件完成的。其 目标也是打造技术生态系统(hadoop),在此之上构架不能的插件系统, 完成特定场景下的功能和优化。类比如hive和hadoop,iprocess+规则引 擎(DSL)=风控CEP系统;iprocess+sql执行插件=数据仓库olap,等等。 – 基于事件,只处理变化部分 – 完全 完全不同于MR的计算模型 的计算模型 – 兼容MR的模型 – 兼容pregel模型 – 简单的说是 4 h d 简单的说是s4,hadoop online,percolator,pregel,dryad的混合体 li l l d d的混合体
  • 38. iprocess应用和进展 • 搜索数据中心 – 搜索需要宽表 – DB, dump,实时join,很多预处理,切分,准备 build索引 – 实时 增量 全量不同逻辑 不能并行 实时,增量,全量不同逻辑,不能并行 – 晚上发布运维 – 解决并行问 解决并行问题,实时,增量,全量统一逻辑。 实时 增量 全量统 辑 – 对于小修改大变化自动响应 – 删除,修改自动响应 除 修 自 – 运营更加方便
  • 39. iprocess应用和进展 • 风险控制与欺诈检测 – CASE1,信用卡盗卡:当某刷卡瞬间,进入实时 系统,根据建模后的规则(同卡三个月内消费 类型,消费平均金额,消费地域等特征),判 断此次刷卡的风险度,然后给出actions。毫秒 级。 – CASE2,搜索广告的点击欺诈。 – CASE3 某用户修改收货地址时触发风控规则评 CASE3,某用户修改收货地址时触发风控规则评 估。。。
  • 40. iprocess应用和进展 • SNS – CASE1:用户修改profile中companyName,那么应该 推荐的好友应该有所变化。 – CASE2:某个用户增加新的好友,则自己的二度关 关 系推荐发生变化;影响到他朋友的二度关系也发生 变化。这些都属于相关集。 – CASE3:原有二度关系,推荐关系都是定时hadoop 跑,现在可根据需要实时或者增量iprocess处理。 例如:自己的好友变化10个以上或者5秒进行该用 户二度关系变化部分的增量计算。
  • 41. iprocess应用和进展 • 算法 – 聚类算法:原来需要hadoop每天晚上跑一次。浪费, 因为变化的量有限,但是每天都是全量重新运算;实 时性太差,因为聚类算法需要相关集,而且相关集是 runtime计算(map时无法算)。所以,传统方法无法 处理。Iprocess轻松解决实时聚类或者增量聚类。 – 推荐算法:实时的cf推荐算法。相关集计算。 – Ctr预测:做到ctr实时预测,增加广告,搜索结果的 ctr和用户体验。 和用户体验 – Pagerank:利用iprocess,pr计算插件可以订阅:当 节点入度或者出度有 以上变化,则触发该节点的 节点入度或者出度有5%以上变化,则触发该节点的 reduce事件。 – Iprocess将算法重复运算量降到最低。
  • 42. iprocess应用和进展 • 资讯搜索 – 复杂的流程实时处理 – 运营人员修改某个模块效果时,例如正文提取 有问题,运营人员手动修改正文内容。那么只 有问题 运营人员手动修改正文内容 那么只 需消重插件订阅”修改正文”这个事件,那么 就会触发操作正文消重;同时建索引插件可以 订阅”消重中心变化”事件,就会触发老的中 心删除,新的中心建立索引。节约大量业务逻 心删除 新的中心建立索引 节约大量业务逻 辑处理。
  • 43. iprocess应用和进展 • 数据仓库与OLAP – 数据频繁变化,分析相对稳定-OLAP 数据频繁变化,分析相对稳定 OLAP • Query较稳定,变量较少 – Iprocess持续计算 p 持续计算 • Q相对稳定,有一定变量 – Iprocess的endpoint功能(类似于taobao的prom),本质 上就是:倒排+本地化+容忍一定错误+10s以下响应 – 数据频繁变化或相对稳定,分析频繁变化-OLTP • 传统rdbms
  • 44. 简介-基本事件 简介 基本事件 • Record • Segment add record add segment batch add record del segment timer record modify segment full record occupy segment del record reduce modify record
  • 45. 简介-基本接口 简介 基本接口 • int init(Context context); • int process(DataItem doc); • int resolve(List<Value> valueSet); • int uninit(); • 扩展接口… 扩展接口
  • 46. iprocess的架构和计算模型 Stream realtime Stream realtime computing Hadoop online s4
  • 47. IProcess 整体架构 整体拓扑
  • 49. iprocess主要角色 • 总控 任务 载 Master:总控,任务加载配置 • PN:实际的执行节点。 • 松粒度lockservice与高性能lockservice • 时钟服务 • 配管,监控 • IDE,模拟环境,调试环境
  • 50. iprocess-实时 iprocess 实时 • MR为什么达不到实时? • iprocess如何做到实时? 记录级 流数据 完备事件触发 实时条件判断
  • 51. IProcess的存储 • 树结构的存储(mr,表关系,相关集,不同 的一致性模型和事务模型等) • 区分实时数据与其它数据的存储 • 两级容错:应用级和系统级 • 运算时动态扩容 • 流模式和触发器模式 • 流数据的保序 • 流计算(latency)和块计算(throughput)动 态tradeoff
  • 52. iprocess-逻辑存储结构 iprocess 逻辑存储结构 为什么要有hierarchical的结构?
  • 53. iprocess的架构 • Memory table:s4, bl 优点:快, 缺点:容错,共享 • Shelter table:hadoop online 优点:吞吐量,容错 缺点:实时性 • Global table:stream realtime computing 优点:全局共享,realtime,容错 优点 全 共享 容错 缺点:吞吐量
  • 54. Iprocess模式 • 事件模式 – 单记录模式 – Segment模式(相关集) • 用户开发模式 – 流模式:类似S4,STORM – 触发器模式:传统数据库 – 混合模式 – 树 模式 本质 是 种 g 树MR模式,本质上是一种segment模式 模式 – 增量/实时MR模式,本质上是一种segment模式 – 定时 模式,本质上是 种 g 定时MR模式,本质上是一种segment模式 模式
  • 55. iprocess平滑 • 三者之间平滑过度 • 可以根据业务逻辑,数据特点制定参数 • 可以根据SLA来在一套系统下同时运行 只有mt时,蜕变为s4 只有 时 蜕变为 只有st时,蜕变为mr 只有gt时,类似咖啡因后台系统 三者可以任意组合,加以不同权重则显示出不同特 点:1.响应时间;2.吞吐量;3.容错 的组合 • 开发者可定制st,gt比例从而根据不同任务定制不同 开发者可定制 ,g 比例从而根据不同任务定制不同 吞吐量和可靠性策略。
  • 56. Iprocess-主要过程 Iprocess 主要过程 • 插入数据 • 判断条件是否满足 • 满足条件,则触发相应事件 • 响应事件 • 查询注册processor • 调度相应slots • 任务隔离模块加载 • 执行 • 死锁检测 • 异常检测 • 异常数据清理
  • 57. iprocess扩展接口 • Map • Reduce:同构数据ok,异构数据?Join例子 Reduce(key, list<v>) Reduce(key, tree<v>) • Combine • Partition:1对1,多对1,1对多 • No group • 均为基础接口扩展而来
  • 58. 如何编写iprocess的job-输入 如何编写iprocess的job 输入 输入 • Table类: Table::open(); Table::addSegment(Segment* pParent, string name, segInfo* ); ScanStream*  Table::startScan(schema); * bl ( h ) int32_t Table::endScan(); • Segment类 Row* Segment::get(key, schema); g g int32_t Segment::set(key, row); ScanStream* Segment ::startScan(schema); int32_t Segment ::endScan(); Segment  Segment::getParent(); Segment* Segment::getParent(); • Row类: Row::get(column); Row::set(column, pValue); • ScanStream类 ScanStream类: Row* ScanStream::Next();
  • 59. 如何编写iprocess的job响应 • 响应事件 响应事件: – int process(DataItem doc); p ( ); – int resolve(list<Value> valueSet); – vector<VM> Partition(doc); – 扩展接口都是process函数的再定制 • Reduce(key, list<v>) • Reduce(key, tree<v>) • Reduce(key, tree<v>)
  • 60. Iprocess-locality Iprocess locality • Mt • St,gt与pn部署在相同物理机器 • 数据的局部性由master来监控st,gt的 或者l k i 的 master或者lockservice的metainfo,根据策 i f 根据策 略进行动态的processor迁移或者暂时组织 数据的迁移或者容忍数据的迁移 • Push computation to the data
  • 61. 计算能力 • Join是搜索广告应用最重头的离线计算 • 以前的join都是批量,大大制约搜索的实 时性 • 接下来会主要以 接下来会主要以join为例,说明mapreduce 为例 说明 为代表的批量计算和iprocess的计算区 别。。。
  • 62. Job-join Job join • Two-way Joins; Multi-way Joins • 星形;链式;混合 • 执行计划,优化
  • 63. Job-join Job join • Hadoop玩法 – Reduce-Side Join,注意group Reduce Side
  • 65. Job-join j • Hadoop玩法 p – Map‐Side Join • All datasets must be sorted • All datasets must be partitioned • The number of partitions in • the datasets must be identical. the datasets m st be identical • A given key has to be in the same partition in  g y p each dataset
  • 66. Job-join Job join • Hadoop 玩法 – Broadcast Join – Hash join – Part join – Etc…
  • 67. iprocess-join iprocess join • 物化 i 物化view. A.2=B.1 AND B.2=C.1  A B  AND B C View { table a; view { table b; table c; t bl   joinFiled b.2, c.1; }bc joinFiled a.2, bc.1; }
  • 68. iprocess-实时join iprocess 实时join • 店主表join产品表,join key为memberid。注意这里的member数据和offer数据是并行并且没有顺序的即时(实时)插入 店主表join产品表 join key为memberid 注意这里的member数据和offer数据是并行并且没有顺序的即时(实时)插入 系统的(mr需要两张表所有数据都ready才能开始,而iprocess是数据随时插进来就开始计算‐想想那张图)。Join是实 时join,即join完一条记录就输出。这是和mapreduce的本质区别。 代码虽然和MR实现类似,但实时输出是系统来支 持的,即条件的完备性(同memberid的member数据和offer数据都插入了)开发者无需考虑。 class MemberMapper : public Mapper { public: bli void map(string key, v value, MapperContextPtr context) { context‐>write(value‐>get("member_id").toString(),value,"member"); } } class OfferMapper : public Mapper { public: void map(string key, v value, MapperContextPtr context) { context‐>write(value‐>get(“member_id").toString(), value, "offer"); } } Reduce(key, tree<v> values, ReducerContext context) { Iterator<v> members = values.get("member"); Iterator<v> offers = values.get("offer"); while(members.hasNext())   { v member= members.next(); while(offers.hasNext())  { (o ()) { v offer = offers.next(); context.write(offer.get("offer_id"), member‐>merger(offer)); } } }笛卡尔积
  • 69. iprocess-join iprocess join • 多路 多路join,迭代进行 迭代进行 • 已经实现缺省的JOIN,例如ADD,LIST,笛卡 尔积(Cartesian)。 • 类似的 类似的wordcount,简单倒排索引,join直 d 简单倒排索引 j i 直 接制定EVENT.BIND(Cartesian);无需编写代 码。
  • 70. Table join Table* table = Open(“/qstore/jointable”); While(1){ Record_a  readRecord(A) Record a = readRecord(A); If(record_a == NULL) Break; Row* r1 = new Row(T, getJoinKey(Record_a)); r1‐>set(“content”, “table_a”, record_a); r1 >set(“content”  “table a”  record a); } //读取表B Table* table = Open(“/qstore/jointable”); While(1){ Record_b = readRecord(B); If(record_b == NULL) Break; Row* r1 = new Row(T, getJoinKey(Record_b)); Row* r1   new Row(T  getJoinKey(Record b)); r1‐>set(“content”, “table_b”, record_b); } Int32_t process(key, v doc) Int32 t process(key  v doc) { Return buildIndex(doc); }
  • 71. iprocess-join iprocess join • Reduce‐side,map‐side,hash‐side,bc‐side,etc • Partition: 1:1;1:1,1:n, part
  • 72. iprocess join特点 iprocess-join特点 • 实时join即join好一条记录则产出一条 实时join即join好 条记录则产出 条 • 同时支持实时,增量,全量join • 保持原表关系 例如:假设member表修改某些字段 则系 保持原表关系,例如:假设member表修改某些字段,则系 统会自动维持一致性,而无需重新build join。 Mapreduce无法做到。 • Hadoop join分为:原始数据上传hdfs,hdfs下载为本地 (locality),切块,map,sort,combine,传输,sort, merge,reduce,上传至hdfs,使用则还需要下载。以上 过程虽有部分优化但本质上这些步骤都是串行。 • iprocess的join过程,从原始数据从客户端插入iprocess 的 过程 从原始数据从客户端插入 (通讯),运算,结果存储。这些都是并行。试验结果表 明,join的时间就是插入到存储的时间。 明 join的时间就是插入到存储的时间
  • 73. iprocess-mr模型优势 iprocess mr模型优势 • 完全兼容MR模型 完全兼容 模型 • 可以做到实时,增量,定时的MR • 对于图计算可加速迭代过程(并且支持聚类等需要global信息的操作) • 对于图运算无数据反复拷贝 • 对于图运算不同迭代之间可以并行运算 • 对于mr比较难受的异构数据reduce,有着天然的理论基础 • 可早停,对于某些数据挖掘算法(频繁项)有优势 • 大规模矩阵运算和机器学习(有待试验) • 可支持并行(分支),汇聚 • 对主表,附表顺序无任何要求。克服hadoop广播方法处理不了两个大 表的情况
  • 74. iprocess-mr模型优势 iprocess mr模型优势 启动 任务 • Reduce可尽早启动,短任务及早完成对于完成 整个集群利用率有好处 • 高优先级任务粒度可以到segment级别。 • 这意味这更 d i 的负载策略和调度策略 这意味这更adaptive的负载策略和调度策略。 • 更容易检测和处理“straggler” 任务。 更容易检测和处理 gg 任务 • 抢占更有效。 • 可以天然的利用columnar优势。想想 以 然的利用 优势 想想 dremel
  • 75. iprocess-mr模型缺点 iprocess mr模型缺点 • 过于复杂 • 依赖组件多 • 任务调度更复杂 • 容错精细化到记录,所以控制更复杂 容错精细化到记录 所以控制更复杂 • 。。。
  • 76. 输入 计算过 程 输入 下载 载 Map 输出 shuffle Mapreduce Job reduce IProcess J b IP Job
  • 77. iprocess-事务 • 多版本 – 经典的多版本事务 – 分布式跨行跨表 – 代价带大 – Segment内部直接锁 g – 跨segment两阶段提交 – tradeoff • Lazy resolve – 应用场景 – 事务冲突时不是回滚,而是 – 调用resolve,让用户自己 – 解决
  • 78. iprocess实现pagerank int32_t process(Table(PageID ,double) curr ,Table(PageID ,double) next ,Table(PageID ,[ PageID ]) graph_partition ) { for page , outlinks in get_iterator (my_partition()) { rank = curr[page] update = PropagationFactor * rank / len(outlinks) for target in outlinks: next.write(target , update) Iprocess将任务内的调度开放给开发者(如不 } 制定,iprocess会用缺省实现的调度,本例开 } 发者自己实现了迭代的任务调度)。Iprocess 负责任务间的调度。 int32_t PRControl(Config conf ) { graph = Table(PageID ,[ PageID ]). init("/dfs/graph") curr = Table(PageID , double ). init(graph. numPartitions (),DefaultSumProccessor, BATCH); next = Table(PageID , double ). init(graph. numPartitions (),DefaultSumProccessor, BATCH); GroupTables ( bl (curr , next , graph); h) last_iter = 0; for i in range(last_iter , 50) { launch(PRProcess ,instances=curr_pr. numPartitions (),locality= LOC_REQUIRED (curr),args =(curr , next ,  graph ),SUM); Synchronized (); swap(curr ,next); } }
  • 79. iprocess-主要特性 • Segment级别一致性和事务 • 任务隔离系统 任务隔离系统,MPM类似apache但是引入 类似 但是引入 了关联事件。 • 引入物化视图的概念 • 搜索的宽表 • 维护原始表最终一致性 护 表 • 维护内核稳定性,插件分级
  • 80. iprocess-features iprocess features v0.1 100% d 0 1 done 1.支持有向图的插件系统 2.支持实时计算,全量计算并行,支持常驻型任务 2 支持实时计算 全量计算并行 支持常驻型任务 3.支持多场景 4.数据补偿 数据补偿 5.每个场景下支持多任务 6.支持插件隔离,优先级,进程,线程,混合模型 7.支持trigger/触发功能 8.支持场景,任务,目录动态创建 9.事件池动态创建,自动迁移 9 事件池动态创建 自动迁移
  • 81. iprocess-features iprocess features v0.2 80% d 0 2 done 1.可定制事件保序 2.支持层级目录 支持物化view 3 支持join和增量join 3.支持join和增量join 4.单事件触发优化 5.immune cache支持,优化access 6.memtable支持,与table 致性,写优化。兼容S4 6.memtable支持,与table一致性,写优化。兼容S4 7.分离系统级插件与应用插件接口和管理方式 8.支持定义在任意目录上的事件触发 9 增加 9.增加occupy事件,支持多优先级,支持增量事件和时间触发事件 py事件,支持多优先级,支持增量事件和时间触发事件 10.local preference第一次优化 11.跨行跨表事务,目录级事务定制,transaction conflict managment 12.二级索引 13.增加column多版本触发事件,支持增量mapreduce,增加merge函数。 (兼容mapreduce模型,增强型mapreduce‐增量reduce)
  • 82. iprocess-features v0.3 部分预研和开发 1.local preference第二次优化 2.支持迭代任务 目录级别 致性定制 3.目录级别一致性定制 4.引入master(chubby,paoxs),支持任务调度,任务内关键路径调度 5.3种服务即big lock service, lightweight lock service, Oscillator service的优化和稳定性,可用性 6.插件迁移,负载均衡 7.full scan优化(无需字典序) 8.compact optimization 9.增加synchronized功能。 10.增加iteratorVersion支持 11.增加processor新的触发类型,即主动触发,查询状态。想 12.完整的监控以及任务分析 增加 h k i t点支持 增加用户 h k i t函数 13.增加checkpoint点支持。增加用户checkpoint函数。 14.本地化第三次优化 15.sql表达式支持和优化 16.graph computing支持 17.virtual table支持 18.各层级的任务调度,即多场景调度,多任务调度,图的关键路径调度等。 19.死锁检测以及生命期维护 20.插件管理以及部署系统 21.引入虚拟机 22.引入完全的扩展接口
  • 83. iprocess-features iprocess features • v0.4 – 服务化建设 – 完善多场景,多任务,多segment,图关键路径调 度 – 性能调优 • v0.5 – 完善监控系统 – 完善运维系统 – 支持ad-hoc sql优化 – 系统完全的流动化
  • 84. iprocess应用和进展 • Clipper – 分布式网页处理平台。前端用户标注,后台分 析。
  • 85. clipper • <result> • <url>http://www.taobeng.com/htab/215438_845504.html</url> • <time>2011/04/27 11:46:48 Wednesday </time> • <root> • <产品名称>产品名称:星三角启动控制柜/星三角水泵控制柜/星三角启动控制柜/水泵控</产品名称> • <产品分类>产品分类:泵 -&gt; 控制柜 -&gt; 星三角启动控制柜</产品分类> • <所在地>所 在 地:上海-上海</所在地> • <发布公司>发布公司:上海奥力泵阀制造有限公司</发布公司> • <联合节点1> • <data> • <型号>ALK-2X</型号> • <进口口径 (mm)>18.5</进口口径 (mm)> • <出口口径 (mm)>2</出口口径 (mm)> • <流量 (m3/h)>星三角</流量 (m3/h)> • <最大供气压 (MPa)>2240元</最大供气压 (MPa)> • </data> • <data> • <型号>ALK-2X</型号> • <进口口径 (mm)>22</进口口径 (mm)> • <出口口径 (mm)>2</出口口径 (mm)> • <流量 (m3/h)>星三角</流量 (m3/h)> • <最大供气压 (MPa)>2415元</最大供气压 (MPa)> ( )> 元</最大供气压 ( )> • </data> • <data> • <型号>ALK-2X</型号> • <进口口径 (mm)>30</进口口径 (mm)> • <出口口径 (mm)>2</出口口径 (mm)> • <流量 (m3/h)>星三角</流量 (m3/h)> • <最大供气压 (MPa)>2700元</最大供气压 (MPa)> 最大供气压 ( ) 元 /最大供气压 ( ) • </data> • …
  • 88. clipper Offer众包 Combo search SPU 垂直搜索 中间处理层 页面聚类 去除噪音 结构提取 互联网 数据抓取
  • 92. iprocess应用和进展 • 搜索数据中心 – 搜索需要宽表 – DB, dump,实时join,很多预处理,切分,准备 build索引 – 实时 增量 全量不同逻辑 不能并行 实时,增量,全量不同逻辑,不能并行 – 晚上发布运维 – 解决并行问 解决并行问题,实时,增量,全量统一逻辑。 实时 增量 全量统 辑 – 对于小修改大变化自动响应 – 删除,修改自动响应 除 修 自 – 运营更加方便
  • 93. iprocess应用和进展 • 风险控制与欺诈检测 – CASE1,信用卡盗卡:当某刷卡瞬间,进入实时 系统,根据建模后的规则(同卡三个月内消费 类型,消费平均金额,消费地域等特征),判 断此次刷卡的风险度,然后给出actions。毫秒 级。 – CASE2,搜索广告的点击欺诈。 – CASE3 个用户修改收货地址时触发风控规则 CASE3,一个用户修改收货地址时触发风控规则 评估。。。
  • 94. iprocess应用和进展 • SNS – CASE1:用户修改profile中companyName,那么应该 推荐的好友应该有所变化。 – CASE2:某个用户增加新的好友,则自己的二度关 频繁变化 关 系推荐发生变化;影响到他的朋友的二度关系也发 生变化。这些都属于相关集。 – CASE3:原有二度关系,推荐关系都是定时hadoop 跑,现在可根据需要实时或者增量iprocess处理。 例如:自己的好友变化10个以上或者5秒进行该用 户二度关系变化部分的增量计算。
  • 95. iprocess应用和进展 • 数据仓库与OLAP – 数据频繁变化,分析相对稳定-OLAP 数据频繁变化,分析相对稳定 OLAP • Query较稳定,变量较少 – Iprocess持续计算 p 持续计算 • Q相对稳定,有一定变量 – Iprocess的endpoint功能(类似于taobao的prom),本质 上就是:倒排+本地化+容忍一定错误+10s以下响应 – 数据频繁变化或相对稳定,分析频繁变化-OLTP • 传统rdbms
  • 96. iprocess应用和进展 • 算法 – 聚类算法:原来需要hadoop每天晚上跑一次。浪费, 因为变化的量有限,但是每天都是全量重新运算;实 时性太差,因为聚类算法需要相关集,而且相关集是 runtime计算(map时无法算)。所以,传统方法无法 处理。Iprocess轻松解决实时聚类或者增量聚类。 – 推荐算法:实时的cf推荐算法。相关集计算。 – Ctr预测:做到ctr实时预测,增加广告,搜索结果的 ctr和用户体验。 和用户体验 – Pagerank:利用iprocess,pr计算插件可以订阅:当 节点入度或者出度有 以上变化,则触发该节点 节点入度或者出度有5%以上变化,则触发该节点 reduce事件。 – Iprocess将算法重复运算降低到最少。
  • 99. iprocess应用和进展 • 资讯搜索 – 复杂的流程实时处理 – 运营人员修改某个模块效果时,例如正文提取 有问题,运营人员手动修改正文内容。那么只 有问题 运营人员手动修改正文内容 那么只 需消重插件订阅”修改正文”这个事件,那么 就会触发操作正文消重;同时建索引插件可以 订阅”消重中心变化”事件,就会触发老的中 心删除,新的中心建立索引。节约大量业务逻 心删除 新的中心建立索引 节约大量业务逻 辑处理。
  • 101. 目标 • 通用的分布式流数据实时与持续计算平台 – 主要解决latency的问题,以“节省”取胜 throughput – 实时的计算 – 发生时运算而不是需要时运算,从而实现实时, 增量,全量结合起来实现持续的计算 – 重,中,轻量级运算的支持 – 服务化
  • 102. 目标 • 构建技术生态体系 – IPROCESS与风控计算平台CEP – IPROCESS与SNS的计算平台 – IPROCESS与搜索数据中心,提供实时搜索及其它实时数据服 务 – IPROCESS的BI组件 – IPROCESS的SQL执行组件=数据仓库OLAP • 全面提升业务的实时处理能力 – 交易,用户行为的实时数据挖掘 – 交易,欺诈,风险实时预警和响应 – 用户关系数据实时反馈和计算 – 大量减少数据报表服务的全量计算 – 实时搜索与网站数据实时处理和应用
  • 103. 目标 • 业界有影响力的技术产品 • 具有原创技术并发表高质量,影响力论文 • 开源技术产品线 – Hive架设在IPROCESS – Nutch架设IPROCESS提供整套实时搜索方案 – 开源CEP,RPM产品 – 部分开放分布式存储
  • 104. iprocess未来规划 • 高性能 高响应时间 高容错 动态扩展的实时计 高性能,高响应时间,高容错,动态扩展的实时计 算平台 • 提高吞吐量(locality) • 持续计算 • 与全量/批量计算整合 • 服务化 • 流动计算 • 虚拟化 • 易用性提升 • 推广:(实时)搜索,计算广告,数据挖掘,机器 学习,图计算,任何离线实时计算。。。
  • 105. iprocess • 刚刚走出第一步 • 期待大家能提出批评,建议 • 共同建设 • 0.3 • 奇数开发版本,偶数发布版本 奇数开发版本 偶数发布版本
  • 106. Thanks! Q&A qi.qiangq@alibaba-inc.com qi qiangq@alibaba inc com http://www.weibo.com/carnec