【Python使用】嘿马推荐系统全知识和项目开发教程第3篇:1.6 推荐系统的冷启动问题,5.1 HBase简介【附代码文档】

教程总体简介:1.1 推荐系统简介、1.2 推荐系统设计、1.3 推荐算法、二 根据用户行为数据创建ALS模型并召回商品、三 CTR预估数据准备、5.3 HBase 的安装与Shell操作、4.3 Hive 函数、MapReduce实战、spark-core RDD常用算子练习、3、JSON数据的处理、3.1 介绍、3.2 实践、4.4 hive综合案例、spark-core 实战案例、四 LR实现CTR预估、4、数据清洗、5.6 HBase组件、1、sparkStreaming概述、spark-core实战、五 离线推荐数据缓存、2、Spark Streaming编码实践、1.4 案例--基于协同过滤的电影推荐、1.5 推荐系统评估、spark 安装部署及standalone模式介绍、六 实时产生推荐结果、Spark Streaming的状态操作、推荐系统基础、1.6 推荐系统的冷启动问题、5.1 HBase简介、4.1 Hive基本概念、Spark SQL 概述、spark 入门、一 个性化电商广告推荐系统介绍、资源调度框架 YARN、基于回归模型的协同过滤推荐、基于矩阵分解的CF算法、基于矩阵分解的CF算法实现(一)、LFM、基于矩阵分解的CF算法实现(二)、BiasSvd、基于内容的推荐算法(Content-Based)、基于内容的电影推荐、物品画像、基于TF-IDF的特征提取技术、用户画像、为用户产生TOP-N推荐结果、DataFrame、2.1 介绍、2.2 创建DataFrame、2.3 DataFrame API实现、5.2 HBase的数据模型、4.2 Hive 基本操作、分布式处理框架 MapReduce

https://gitee.com/yinuo112/Backend/blob/master/Python/嘿马推荐系统全知识和项目开发教程/note.md


全套教程部分目录:

1.6 推荐系统的冷启动问题

学习目标

  • 记忆推荐系统冷启动概念
  • 了解处理推荐系统冷启动的常用方法

1 推荐系统冷启动概念

  • ⽤户冷启动:如何为新⽤户做个性化推荐
  • 物品冷启动:如何将新物品推荐给⽤户(协同过滤)
  • 系统冷启动:⽤户冷启动+物品冷启动
  • 本质是推荐系统依赖历史数据,没有历史数据⽆法预测⽤户偏好

2 处理推荐系统冷启动问题的常用方法

  • 用户冷启动

    • 1.收集⽤户特征

      • ⽤户注册信息:性别、年龄、地域

      • 设备信息:定位、⼿机型号、app列表

      • 社交信息、推⼴素材、安装来源

  • 2 引导用户填写兴趣
  • 3 使用其它站点的行为数据, 例如腾讯视频&音乐 今日头条&抖音

  • 4 新老用户推荐策略的差异

    • 新⽤户在冷启动阶段更倾向于热门排⾏榜,⽼⽤户会更加需要长尾推荐
    • Explore Exploit⼒度
    • 使⽤单独的特征和模型预估
  • 举例 性别与电视剧的关系

  • 物品冷启动

    • 给物品打标签
    • 利用物品的内容信息,将新物品先投放给曾经喜欢过和它内容相似的其他物品的用户。
  • 系统冷启动

    • 基于内容的推荐 系统早期
    • 基于内容的推荐逐渐过渡到协同过滤
    • 基于内容的推荐和协同过滤的推荐结果都计算出来 加权求和得到最终推荐结果

4.1 Hadoop生态系统

狭义的Hadoop VS 广义的Hadoop

  • 广义的Hadoop:指的是Hadoop生态系统,Hadoop生态系统是一个很庞大的概念,hadoop是其中最重要最基础的一个部分,生态系统中每一子系统只解决某一个特定的问题域(甚至可能更窄),不搞统一型的全能系统,而是小而精的多个小系统;

Hive:数据仓库

R:数据分析

Mahout:机器学习库

pig:脚本语言,跟Hive类似

Oozie:工作流引擎,管理作业执行顺序

Zookeeper:用户无感知,主节点挂掉选择从节点作为主的

Flume:日志收集框架

Sqoop:数据交换框架,例如:关系型数据库与HDFS之间的数据交换

Hbase : 海量数据中的查询,相当于分布式文件系统中的数据库

Spark: 分布式的计算框架基于内存

  • spark core
  • spark sql
  • spark streaming 准实时 不算是一个标准的流式计算
  • spark ML spark MLlib

Kafka: 消息队列

Storm: 分布式的流式计算框架 python操作storm

Flink: 分布式的流式计算框架

Hadoop生态系统的特点

  • 开源、社区活跃

  • 囊括了大数据处理的方方面面

  • 成熟的生态圈

5.1 HBase简介

1 什么是HBase

  • HBase是一个分布式的、面向列的开源数据库
  • HBase是Google BigTable的开源实现
  • HBase不同于一般的关系数据库, 适合非结构化数据存储

2 BigTable

  • BigTable是Google设计的分布式数据存储系统,用来处理海量的数据的一种非关系型的数据库。

    • 适合大规模海量数据,PB级数据;
    • 分布式、并发数据处理,效率极高;
    • 易于扩展,支持动态伸缩
    • 适用于廉价设备;
    • 不适用于传统关系型数据的存储;

3 面向列的数据库

HBase 与 传统关系数据库的区别

HBase 关系型数据库
  • 关系型数据库中数据示例
ID FILE NAME FILE PATH FILE TYPE FILE SIZE CREATOR
  • 同样数据保存到列式数据库中
RowKey FILE INFO SAVE INFO
  • 行数据库&列数据库存储方式比较

4 什么是非结构化数据存储

  • 结构化数据

    • 适合用二维表来展示的数据
  • 非结构化数据

    • 非结构化数据是数据结构不规则或不完整
    • 没有预定义的数据模型
    • 不方便用数据库二维逻辑表来表现
    • 办公文档、文本、图片、XML, HTML、各类报表、图像和音频/视频信息等

5 HBase在Hadoop生态中的地位

  • HBase是Apache基金会顶级项目

  • HBase基于HDFS进行数据存储

  • HBase可以存储超大数据并适合用来进行大数据的实时查询

6 HBase与HDFS

  • HBase建立在Hadoop文件系统上, 利用了HDFS的容错能力
  • HBase提供对数据的随机实时读/写访问功能
  • HBase内部使用哈希表, 并存储索引, 可以快速查找HDFS中数据

7 HBase使用场景

  • 瞬间写入量很大
  • 大量数据需要长期保存, 且数量会持续增长
  • HBase不适合有join, 多级索引, 表关系复杂的数据模型

2.1 HDFS的使用

  • 启动HDFS

    • 来到$HADOOP_HOME/sbin目录下
    • 执行start-dfs.sh
[hadoop@hadoop00 sbin]$ ./start-dfs.sh
  • 可以看到 namenode和 datanode启动的日志信息
Starting namenodes on [hadoop00]
hadoop00: starting namenode, logging to /home/hadoop/app/hadoop-2.6.0-cdh5.7.0/logs/hadoop-hadoop-namenode-hadoop00.out
localhost: starting datanode, logging to /home/hadoop/app/hadoop-2.6.0-cdh5.7.0/logs/hadoop-hadoop-datanode-hadoop00.out
Starting secondary namenodes [0.0.0.0]
0.0.0.0: starting secondarynamenode, logging to /home/hadoop/app/hadoop-2.6.0-cdh5.7.0/logs/hadoop-hadoop-secondarynamenode-hadoop00.out
  • 通过jps命令查看当前运行的进程
[hadoop@hadoop00 sbin]$ jps
4416 DataNode
4770 Jps
4631 SecondaryNameNode
4251 NameNode
  • 可以看到 NameNode DataNode 以及 SecondaryNameNode 说明启动成功

  • 通过可视化界面查看HDFS的运行情况

    • 通过浏览器查看 192.168.19.137:50070
  • Overview界面查看整体情况
  • Datanodes界面查看datanode的情况

4.1 Hive基本概念

1 Hive简介

学习目标
- 了解什么是Hive
- 了解为什么使用Hive

什么是 Hive

  • Hive 由 Facebook 实现并开源,是基于 Hadoop 的一个数据仓库工具,可以将结构化的数据映射为一张数据库表,并提供 HQL(Hive SQL)查询功能,底层数据是存储在 HDFS 上。
  • Hive 本质: 将 SQL 语句转换为 MapReduce 任务运行,使不熟悉 MapReduce 的用户很方便地利用 HQL 处理和计算 HDFS 上的结构化的数据,是一款基于 HDFS 的 MapReduce 计算框架
  • 主要用途:用来做离线数据分析,比直接用 MapReduce 开发效率更高。

为什么使用 Hive

  • 直接使用 Hadoop MapReduce 处理数据所面临的问题:

    • 人员学习成本太高
    • MapReduce 实现复杂查询逻辑开发难度太大
  • 使用 Hive

    • 操作接口采用类 SQL 语法,提供快速开发的能力
    • 避免了去写 MapReduce,减少开发人员的学习成本
    • 功能扩展很方便

2 Hive 架构

Hive 架构图

Hive 组件

  • 用户接口:包括 CLI、JDBC/ODBC、WebGUI。

    • CLI(command line interface)为 shell 命令行
    • JDBC/ODBC 是 Hive 的 JAVA 实现,与传统数据库JDBC 类似
    • WebGUI 是通过浏览器访问 Hive。
    • HiveServer2基于Thrift, 允许远程客户端使用多种编程语言如Java、Python向Hive提交请求
  • 元数据存储:通常是存储在关系数据库如 mysql/derby 中。

    • Hive 将元数据存储在数据库中。

    • Hive 中的元数据包括

      • 表的名字
      • 表的列
      • 分区及其属性
      • 表的属性(是否为外部表等)
      • 表的数据所在目录等。
  • 解释器、编译器、优化器、执行器:完成 HQL 查询语句从词法分析、语法分析、编译、优化以及查询计划的生成。生成的查询计划存储在 HDFS 中,并在随后由 MapReduce 调用执行

Hive 与 Hadoop 的关系

Hive 利用 HDFS 存储数据,利用 MapReduce 查询分析数据。

Hive是数据仓库工具,没有集群的概念,如果想提交Hive作业只需要在hadoop集群 Master节点上装Hive就可以了

3 Hive 与传统数据库对比

  • hive 用于海量数据的离线数据分析。
Hive 关系型数据库
  • hive支持的数据类型

    • 原子数据类型

      • TINYINT SMALLINT INT BIGINT BOOLEAN FLOAT DOUBLE STRING BINARY TIMESTAMP DECIMAL CHAR VARCHAR DATE
    • 复杂数据类型

      • ARRAY
      • MAP
      • STRUCT
  • hive中表的类型

    • 托管表 (managed table) (内部表)
    • 外部表

4 Hive 数据模型

  • Hive 中所有的数据都存储在 HDFS 中,没有专门的数据存储格式

  • 在创建表时指定数据中的分隔符,Hive 就可以映射成功,解析数据。

  • Hive 中包含以下数据模型:

    • db:在 hdfs 中表现为 hive.metastore.warehouse.dir 目录下一个文件夹
    • table:在 hdfs 中表现所属 db 目录下一个文件夹
    • external table:数据存放位置可以在 HDFS 任意指定路径
    • partition:在 hdfs 中表现为 table 目录下的子目录
    • bucket:在 hdfs 中表现为同一个表目录下根据 hash 散列之后的多个文件

5 Hive 安装部署

  • Hive 安装前需要安装好 JDK 和 Hadoop。配置好环境变量。

  • 下载Hive的安装包 [ 并解压

tar -zxvf hive-1.1.0-cdh5.7.0.tar.gz  -C ~/app/
  • 进入到 解压后的hive目录 找到 conf目录, 修改配置文件
cp hive-env.sh.template hive-env.sh
vi hive-env.sh

在hive-env.sh中指定hadoop的路径

HADOOP_HOME=/root/bigdata/hadoop
  • 配置环境变量

vi ~/.bash_profile




* ```shell
export HIVE_HOME=/root/bigdata/hive
expor
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容