DTCC2014:Hadoop生态技术在阿里全网商品搜索实战-阿里巴巴 - 王峰_IT168文库

更新时间:2023-07-20 08:56:01 阅读量: 实用文档 文档下载

说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。

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多个增长到20000多个

网页数从十亿增长到百亿

阿里电商网页库-Rowkey设

计 URL翻转 例如:翻转为http://com.taobao.www

特点:同一网站内的网页/商品连续存储,各站点连续分布优点:可以方便的在海量网页库中快速读取到某个站点的所有数据缺点:不同网站的网页/商品数量以及变化频率差异较大,不同

Region/RegionServer之间的I/O访问容易不均衡 解决方案:通过统计分析和抓取调度反馈,针对热点网站进行手动 split,分解压力;升级到0.98后将会采取Stochastic Load Balancer根据I/O压力等综合指标进行负载均衡

阿里电商网页库-CF设计Column Family Meta内容网页元信息描述 url,host,type等

ContentOutllinks Algorithm History Trace Image

网页抽取出的结构化信息网页的外链信息算法结果历史信息网页处理的trace信息网页中的图片信息

标题,价格等页面的url链接分类,权重等多版本历史价格,销量等时间点,错误信息等图片url等

Raw

网页原始HTML

HTML

阿里电商网页库-I/O设计参数名参数值描述

Compression Block Encoding Block Size Block Cache Bloom Filter

Snappy/Gzip Diff 64KB-1MB InMemory ROW

Meta,Content等CF访问频繁,用Snappy,速度快 Raw CF访问较少,用Gzip,压缩比高 0.98后采用PrefixTree Meta,Content等CF都有Get需求,Block Size设置较小 Raw CF只有Scan的需求,Block Size设置较大 Meta CF内容较少,访问频率较高,InMerory=True,减少Cache换出概率所有CF基本都是Row级别访问,无需ROWCOL

阿里电商网页库-Region Split默认:Constant Size Region Split Policy Split By MaxFileSize of Biggest CF

1000万URL Meta Content History…

100万HTML Raw

定制:Constant Family Size Region Split Policy Split By MaxFileSize of Any CF

本文来源:https://www.bwwdw.com/article/hu61.html

Top