DTCC2014:Hadoop生态技术在阿里全网商品搜索实战
时间:2025-05-05
时间:2025-05-05
Hadoop生态技术在阿里全网商品搜索实战阿里巴巴 -王峰
自我介绍 真名:王峰 微博:淘莫问
淘宝花名:莫问
2006年硕士毕业后加入阿里巴巴集团 淘及搜索事业部(高级技术专家) 目前负责搜索离线系统团队 技术方向:分布式计算与存储
大纲 阿里搜索离线技术平台 阿里全网商品搜索系统架构 阿里电商网页库存储方案
阿里全网商品实时处理流程
阿里搜索离线技术平台B2B搜索淘宝搜索天猫搜索一淘搜索云搜索
Z O O K E E P E r
MR (Batch)
iStream (Streaming)
Spark (Iterative)
HQueue (Queue)
Phoenix (SQL)
OpenTSDB (Metrics)
YARN
HBase
HDFS
T H R I F T/ P B
阿里搜索Hadoop/HBase集群 Hadoop:基于2.2的阿里搜索定制版 HBase:基于0.94的阿里搜索定制版 部署方式:Hadoop/HBase共同部署 集群规模:机器总数已近千台,分2个集群 硬件配置:– 24/32Core CPU– 48/96GB Memory
– 12 * 1T/2T Sata Disk
阿里搜索分布式存储技术体系 HDFS(分布式文件系统) HBase(NoSQL数据库)
Phoenix(SQL On HBase) OpenTSDB(Metrics On HBase) HQueue(Queue On HBase)
HQueue存储结构1. Queue is a HBase Table2. Partition is a HBase Region 3. Message is a HBase KeyValue 4. Message is stored in Partition/Region sequentially KV/Message KV/Message KV/Message KV/Message Region/PartitionKV/Message
Table/QueueRegion/Partition KV/Message
……………………….
…………..
…………..
Rowkey
Column
Timesatamp
Value
Message的KeyValue设计:
Partition ID+ Message ID
Topic
Timestamp
Value
Timestamp+ Sequence ID
Partition ID
MessageID
Timestamp Sequence ID Topic Value
RowKey 1. Create Message KV
HQueue写入流程HQueue Client
2. Locate By Partition ID
3. Set MessageID/Update Rowkey
RegionServerC O P R O C E S S O r4. Append To Region Message KV R E G I O n Message KV Message KV Message KV…………Sort By Received Timestamp
5. Update Latest MessageID 6. Notify Subscription Threads
HQueue读取流程 Queue Name Partition ID Message ID(TS) Range Message Topics
1. Create Scan
6. Close Scanner
HQueue Client2. Locate By Partition ID 4. Return Scanner
3. Open Internal Scanner RegionServer Message KV R E G I O n Message KV Message KV Message KV………… 5. Next and Return Messages
HQueue订阅流程1. Subscribe Zookeeper Queue Name Partition ID Start Message ID(TS) Message Topics Client ID 9. Unsubscribe HQueue Client 6. Receive and Process Message KVs
2. Get Subscriber Address/Checkpoint
10. Subscriber Quit Watch C O P R O C E S S O r
5. Next and Send Message KVs RegionServer 3. Create Subscription Thread 4. Open Internal Scanner 7. Close Internal Scanner 8. if (New Message){repeat 4;} else{wait;} R E G I O n Message KV Message KV Message KV Message KV…
………
Set Checkpoint Periodically
11. Subscription Thread Quit
HQueue主要特性 读写高性能(新消息都在MemStore+顺序存储)消息持久化存储,不丢失(HFile+ HLog)消息支持TTL设定,自动清理过期消息(HBase TTL)
消息支持主动拉和订阅两种模式(HBase Client Wrapper+Coprocessor)
服务支持动态负载均衡(HBase Load Balance)服务支持快速Failover (HBase MTTR)支持多语言客户端(扩展HBase Thrift Server)可与Hadoop计算平台无缝对接(HQueueInputFormat/OutputFormat)可复用HBase集群直接部署管理,无需独立硬件(HQueue Shell)
阿里搜索分布式计算技术体系 Hadoop YARN(统一管理所有计算模型) MapReduce(批处理计算模型)
iStream(流计算模型) Spark(迭代计算模型,规划中)
iStream -基于YARN的流计算引擎Stream ServiceData SourceInputFormat
Data Source
Stream RoleOutputFormat Data Sink/Source InputFormat Stream Role Stream Role OutputFormat Data Sink/Source
Stream Role
Data Sink/Source InputFormat Stream Role
Data Sink
Data Sink
iStream技术概念
Stream Service:运行在YARN上的一套流计算服务,例如:实时商品处理服务 Stream Role:计算角色,即一组具备特定功能逻辑的Worker组合
Data Source:计算服务的流式数据来源,可被切分为多个DataSplit,一个Worker可以读取多个Splits。例如:数据库集群binlog服务,分布式消息队列
Data Sink:计算服务的数据终端,可被切分为多个Data Partition,一个Worker可以向多个Partition分发写入。例如:数据库集群,分布式消息队列
In/OutputFormat:控制Stream Role如何访问Data Source/Sink,不同存储介质的Source/Sink可以通过配套的In/OutputFormat来接入
iStream主要特性
计算和存储层分离,可灵活搭配消息队列计算拓扑开放,可以根据业务变化动态调整具备流处理进度管理能力,进度可视化以及监控报警具备弹性调度能力,可根据进度动态调整计算资源数量服务Metrics自动记录到OpenTSDB中,可WebUI查看类似MR Streaming方式,支持多语言编程可与MR等模型共享Hadoop集群,无需单独集群部署
阿里全网商品搜索系统架构互联网阿里商品库搜索应用
网页抓取
网页抽取
实时同步
搜索引擎
网页选取
电商网页库
实时商品处理
阿里电商网页库存储方案 发展历程 2010年上线,学习Google网页库Bigtable存储方案,决定采用
开源的HBase作为存储引擎 HBase经历了0.25,0.26,0.90,0.92,0.94(当前),5月将升级到0.98
集群规模从30多台持续升级到300多台 Region数从1000多个 …… 此处隐藏:2675字,全部文档内容请下载后查看。喜欢就下载吧 ……