BigData 复习笔记 00:系统架构与常见业务

数据行业常用工具及常见业务介绍

stephen-dawson-qwtCeJ5cLYs-unsplash

Chapter00. 软件架构与业务场景

系统架构

系统工具

  • 底层架构:分布式文件系统
  • 存储:分布式数据库
  • 计算框架:离线批量 / 在线实时
  • 工具:SQL 封装查询 / 机器学习
  • 调度:分布式锁
  • 算法
系统架构

Lambda 架构

离线批量 + 实时处理

批量计算:延时高,可使用复杂算法多次处理,结果相对精确

实时计算:延时低,能够对新 Item 进行处理,实时推荐

Lambda 架构结合批量计算和实时处理,能够给出相对完整的推荐结果

未命名文件

数据

数据来源基本来自两类:

PGC:专业机构

UGC:用户

物品 (item) 数据拥有不同属性(名称 / 描述 /…),统称为元数据 (metadata)

用户 (user) 数据拥有不同行为(点击 / 收藏 / 支付…)

业务场景

场景 1:推荐流程

第一阶段(召回):用 Token 检索 Item / 用 Item 检索 Item,本质是找候选的过程【粗排

第二阶段(过滤):把候选集合中劣质的 Item 过滤掉

第三阶段(排序):把好的 Item 排在前面【精排

第四阶段(截断):取 Top-N (和产品形态有关)

简易版

  1. 用户 User 点击物品 ItemA,触发埋点

  2. 推荐系统引擎接收到埋点信息,发出请求,在索引数据库寻找与 ItemA 相关的 ItemB、ItemC、ItemD…,并将结果取 Top-N 返回推荐给 User

  3. 索引数据库 (NoSQL) 日常维护

    1. 使用分词技术,将物品库中 Item 划分出各个特征,构建出正排表 Item -> TokenA, TokenB, TokenC…

    2. 根据正排表特征,构建出倒排表 Token -> ItemA, ItemB, ItermC…

      方式 1:将倒排表写入索引库(搜索引擎搜索时根据分词 token 实时计算得出相关 Item)

      方式 2:根据正排表与倒排表,构建出 ItemA -> ItemB, ItemC, ItermD… 写入索引库(索引库维护时根据 Item 分词 token 离线计算得出相关 Item)

进阶版

  1. 用户 User 点击物品 ItemA,触发埋点

  2. 推荐系统引擎接收到埋点信息,发出请求,在索引数据库 A 寻找与 ItemA 相关的 ItemB、ItemC、ItemD… 以算法 1 打分排序取 Top-N1,在索引数据库 B 寻找与 ItemA 相关的 Item1、Item2、Item3… 以算法 2 打分排序取 Top-N2,在索引数据库 C 寻找与 ItemA 相关的 Item-I、Item-II、Item-III…

  3. 将不同索引库所得结果 Item 去除分数放入打分模型,按打分高低取出 Top-N 结果返回推荐给 User

  4. 每个索引数据库 (NoSQL) 日常维护

    1. 使用分词技术,将物品库中 Item 划分出各个特征,按打分高低排序,构建出正排表 Item -> TokenA: ScoreA, TokenB: ScoreB, TokenC: ScoreC

    2. 根据正排表特征,按打分高低排序,构建出倒排表 Token -> ItemA: Score1, ItemB: Score2, ItermC: Score3

      方式 1:将倒排表写入索引库(搜索引擎搜索时根据分词 token 实时计算得出相关 Item)

      方式 2:根据正排表与倒排表,构建出 ItemA -> ItemB: Score-I, ItemC: Score-II, ItermD: Score-III… 写入索引库(索引库维护时根据 Item 分词 token 离线计算得出相关 Item)

推荐流程

场景 2:搜索引擎

常用搜索场景:人与内容(PC 时代) -> 人与服务(移动时代)

各大门户网站利用平台优势聚合大量信息,为用户提供桥梁,“有求必应”

连接用户与内容,连接用户与服务

搜索引擎解决方案 Demo:使用的基于 MapReduce 的建库系统 (建库流)

  • 目的:构建供检索使用的索引和摘要
  • 输入:网页
  • 输出:索引和摘要
  • 处理方法:多轮 Map-Reduce
  • 页面解析并处理
  • 页面属性输出正排表
  • 分析构建倒排表
  • 结果分析 Merge 合并
搜索引擎三段式结构

场景 3:广告系统

  • 参与者:网民 / 广告主 / 平台
  • 广告触发:Keyword Targeting
    • 广告主 / 网民通过关键字表达需求
    • 网民输入 query 与广告主购买的 Keyword 进行匹配
  • CTR 点击率预估:机器学习
    • 点击率用于广告排序
    • 提升搜索引擎收益
    • 保护网民利益
  • 广告排序:关键词广告拍卖
    • 每次动态广告展现都是一次动态的拍卖
    • 排序函数

基本流程:

  1. 产品发布,广告主向平台购买相对应关键词 Token
  2. 平台将产品加入广告库,同时更新广告索引库
  3. 索引库维护,更新倒排表中产品排序
  4. 平台根据索引库产品排序,在平台展现产品广告给网民
  5. 网民主动点击广告,或根据网民搜索输入的 query 与广告库索引进行匹配检索,展现给网民

项目结构 Demo

项目结构Demo