王峰:阿里搜索实时流计算技术

  • 313 views
Uploaded on

BDTC 2013 Beijing China

BDTC 2013 Beijing China

  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Be the first to comment
    Be the first to like this
No Downloads

Views

Total Views
313
On Slideshare
0
From Embeds
0
Number of Embeds
0

Actions

Shares
Downloads
7
Comments
0
Likes
0

Embeds 0

No embeds

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
    No notes for slide

Transcript

  • 1. 阿⾥里搜索流计算技术 ⺩王峰 1
  • 2. 个⼈人背景简介 • 真名:⺩王峰     • 淘宝花名:莫问           • 微博:淘莫问   • 2006年毕业后加⼊入阿⾥里巴巴集团   • ⼀一淘及搜索事业部(⾼高级技术专家)   • 技术⽅方向:搜索离线系统,Hadoop  Ecosystem 2
  • 3. 提纲 • iStream业务背景   • iStream  On  YARN   • iStream计算模型   • iStream服务调度   • iStream⽣生产应⽤用 3
  • 4. iStream业务背景 • ⼀一淘全⺴⽹网商品搜索  &  淘宝站内商品搜索   • 商品搜索的时效性⾮非常⾼高   • 淘宝卖家更新商品后需要实时处理并推送到搜索引擎   • 全⺴⽹网商品抓取后需要实时处理并推送到搜索引擎   • 全⺴⽹网商品降价后需要实时通知给订阅⽤用户   • 全⺴⽹网商品出现优惠打折需要实时在⾸首⻚页推荐 4
  • 5. ⼀一淘全⺴⽹网商品搜索系统架构 互联⺴⽹网 ⺴⽹网⻚页抓取 ⺴⽹网⻚页选取 淘宝商品库 ⺴⽹网⻚页抽取 搜索应⽤用 同步⼊入库 搜索引擎 全⺴⽹网电商⺴⽹网⻚页库(HBase) 业务处理服务 5
  • 6. ⼀一淘全⺴⽹网商品离线处理流程 商品⼊入库 全⺴⽹网商品库 触发器 商品更新队列 类⺫⽬目预测 运费处理 产品匹配 促销信息处理 业务处理服务 相关性计算 返利计算 商品过滤 商家信息处理 优惠挖掘服务 商品输出队列 搜索引擎 降价提醒服务 6
  • 7. Hadoop-­‐1.0  to  2.0 7
  • 8. iStream  On  YARN iStream 8
  • 9. iStream计算模型 • 基本概念   • 拓扑结构   • 消息管理   • 进度管理   • 编程接⼝口 9
  • 10. 基本概念 • Stream  Service:完成⼀一套业务功能的流计算服务   • Stream  Role:具备相同计算逻辑的计算单元组合   • Stream  Worker:Stream  Role中的计算单元   • Stream  Source:Stream  Worker的数据输⼊入源   • Stream  Sink:Stream  Worker的数据输出终端   • Stream  Master:负责调度管理Stream  Workers 10
  • 11. 拓扑结构 Stream  Service Stream  Source 数据源 Stream  Source Stream  Role Stream  Role Stream  Sink/Source Stream  Sink/Source 分布式消息队列 Stream  Role Stream  Role Stream  Sink 最终⺫⽬目的地 11
  • 12. 消息管理 • iStream设计理念   – 计算和存储分层,计算之间解耦   • 计算层之间采⽤用持久化分布式消息队列进⾏行消息传递   – 消息不会丢失   – 消息队列可插件化⾃自由选择   – HQueue(基于HBase的分布式消息队列)   • 优势   – 消息管理机制简单,系统吞吐量⼤大   – 上下游计算解耦,不相互阻塞进度,⽅方便新业务接⼊入   – 持久化的消息流,⽅方便多业务共享数据以及问题追查 12
  • 13. 进度管理 • 如何衡量流进度的快慢?   – 消息⽣生成时间  vs  消息处理时间   • Master管理Workers进度   – Master  WebUI展⽰示Workers进度   – Master发现Worker进度慢进⾏行报警   • Worker进度持久化和恢复   – Worker定期将进度CheckPoint到Zookeeper   – Worker重启从Zookeeper上的CheckPoint进⾏行恢复 13
  • 14. 编程接⼝口 • InputFormat:对Stream  Source的 操作封装   – getSplits(Source):为Stream   Source进⾏行数据分⽚片拆分   – createReader(Split):为Data   Split创建Reader   – reader.next():流式读取消息 Stream  Source Split Split Split Split reader reader reader reader message message message message 14
  • 15. 编程接⼝口 • Worker:定制消息业务处理逻辑   – setUp():消息处理前的初始化⼯工作   – cleanUp():消息处理结束后的清理⼯工作   – process(message):处理输⼊入消息   – context.write(message):输出新消息 15
  • 16. 编程接⼝口 • StreamRouter:消息的路由 策略   – getSinks(message):获 取消息的输出sink列 表,决定消息向那⾥里路 由发送 Stream  Worker Message Router Stream  Sink Stream  Sink Stream  Sink 16
  • 17. 编程接⼝口 • OutputFormat:对Stream  Sink的操作封 装   – getPartitionNum(Sink):获取sink的 partition数量   Stream  Sink  Writer – createWriter(Sink):为Stream  Sink创 建Writer   Message – writer.write(partitionID,  message): partitionID 根据groupID向Stream  Sink分发消息   • StreamPartitioner:消息的分发策略   – getPartitionID(message,partitionNum) partition partition partition partition :获取消息的partitionID, OutputFormat根据此partitionID决定 Stream  Sink 如何分发消息 17
  • 18. iStream服务调度 • 调度流程   • 调度策略   • Failover处理 18
  • 19. 调度流程 4.  start,  register  to  master Resource  Manager Stream  Worker ! Stream  Worker ! 3.  allocate  resource,launch  worker ! 5.    heartbeat  request  (metrics)   ! ! Stream  Worker Stream  Master ! 6.  heartbeat  response(ok)   ! Stream  Worker 8.  heartbeat  response(stop)   ! 2.  launch  master 1.  start  service 7.  stop  service 10.    stop …… Client 9.    unregister  to  master,stop   19
  • 20. 调度策略 • Locality调度   – 让计算单元更加靠近数据,减少⺴⽹网络传输,类似MR的 Locality调度策略   • 弹性调度   – 根据流处理进度动态调整worker数量,保证进度的同时 不浪费资源   • 动态负载均衡   – 动态调整Worker的位置,使分布更加均匀,Locality更 加合理 20
  • 21. Locality调度 Switch1 ! ! ! ! ! ! ! Switch2 Node1   Node2   Node3   Data  Split1 Data  Split2 Data  Split3 Stream  Worker1 Stream  Worker2 Stream  Worker3 ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! Switch3 Node4   Node5   Node6   Data  Split4 Data  Split5 Data  Split6 Stream  Worker4 Stream  Worker5 Stream  Worker6 ! ! ! ! ! ! ! ! ! 21
  • 22. 弹性调度  -­‐  动态扩容 Stream  Source Data  Split Stream  Role Data  Split Stream  Worker 1.  进度太慢 2.  分裂 Stream  Worker Data  Split Stream  Worker …  … 3.  并发能⼒力增加,进度追上 22
  • 23. 弹性调度  -­‐  动态收缩 Stream  Source Stream  Role Data  Split Data  Split Stream  Worker 3.  资源被合理回收 2.合并 Data  Split Stream  Worker Stream  Worker …  … 1.Worker清闲,浪费资源 23
  • 24. Failover处理 checkpoint ! ! ! ! ! ! ! ! Zookeeper RM  HA Resource  Manager   (active) heartbeat heartbeat Stream  Master Resource  Manager   (standby) ! ! ! ! ! ! ! ! Stream  Worker Stream  Worker … serialize/replay HDFS 24
  • 25. iStream⽣生产应⽤用 增量更新10分钟级别 秒级 ⼀一淘⺴⽹网⻚页抓取 B2B实时搜索 淘宝问答搜索 ⼀一淘商品搜索 ⼀一淘优惠挖掘 淘宝知识搜索 ⼀一淘降价提醒 ⼀一淘点评搜索 天猫商品搜索 阿⾥里搜索Hadoop/HBase集群(近千台规模) 25
  • 26. Q&A 微博:淘莫问 26