felix linux admin

hadoop生态

2019-03-24

hadoop生态

hadoop生态,最底层为HDFS, 分布式文件系统

在往上,为Hbase,分布式数据库

再上层,就是mapreduce计算框架,storm(流式计算),spark

  • mapreduce:批量的数据处理
  • storm:实时处理。
  • spark:可批量,可实时,stream, SQL,mllib等

再上层,hive(sql引擎),mahout,webserver

  • hive:将sql语句翻译成mapreduce,本质就是mapreduce。
  • mahout:机器学习的lib
  • webserver: pyweb, nginx等

贯穿在整个集群中的,是分布式锁服务zookeeper。

如图:

工程

工程中经常需要使用机器学习技术来挖掘数据价值。

  • 机器学习
    • 分类算法
    • 推荐算法
    • 聚类算法

常见业务

搜索场景

以前:人与内容 现在:人与服务

音乐数据来自两类:pgc,ugc

物品(item):属性(features),一般被称为元数据(metadata)。

item- 物品

user- 用户(行为:点击,展现,收藏,支付。。。)

  • 不同的行为 用户付出的成本是不一样的,也就是推荐时权重是不一样的

简单的推荐引擎架构

用户点击itemA(港台十大经典歌曲《朋友》)后,系统将item交给引擎处理,引擎会从后端的nosql数据库中查出与itemA相关性较高的item推荐给用户。

推荐实现的步骤:

  1. 召回阶段(粗排):用token检索item(或者用item检索item),本质是找候选的过程
  2. 过滤阶段:把候选集合中劣质的item过滤掉
  3. 排序阶段(精排):把好的item排在前面。
  4. 截断阶段:topN,取top的过程

技术实现:

  • 分词技术:
    • 将歌曲名称进行分词,形成多个token
  • 如某个token在itemA及另外item中都出现,相关性较强
  • 模型打分:
    • 对推荐候选进行模型打分。
  • 数据库中储存的信息
    • 可以是token与item的相关关系(需要实时对item进行分词获取token,指的是用户响应角度)
    • 也可以是item与item的相关关系(需要提前离线算好item与item的关系)
item指向token的表是正排表:
token指向item的表是倒排表。

实时与离线处理的关系

见下图

  • mapreduce任务 可以执行更多逻辑
  • storm 实时处理的时候 只能执行简单逻辑
  • 将实时与离线的数据合并后,插入到数据库中。
  • 需要注意实时与离线数据合并的逻辑

基于MapReduce的建库系统

  • 目的:建立供检索使用的索引和摘要
  • 输入:网页
  • 输出: 索引和摘要
  • 处理:多轮mapreduce
  • 页面分析和处理:parser-extractor
  • 页面属性小库输出:splitter
  • 小库正排转倒排 invert-index
  • 小库合并大库 index merge

Comments

Content
-->