教程总体简介:1.1 推荐系统简介 学习目标 1 推荐系统概念及产生背景 2 推荐系统的工作原理及作用 3 推荐系统和Web项目的区别 1.3 推荐算法 1 推荐模型构建流程 2 最经典的推荐算法:协同过滤推荐算法(Collaborative Filtering) 3 相似度计算(Similarity Calculation) 4 协同过滤推荐算法代码实现: 二 根据用户行为数据创建ALS模型并召回商品 2.0 用户行为数据拆分 2.1 预处理behavior_log数据集 2.2 根据用户对类目偏好打分训练ALS模型 三 CTR预估数据准备 3.1 分析并预处理raw_sample数据集 1.3 Hadoop优势 4.4 大数据产品与互联网产品结合 4.5 大数据应用--数据分析 4.6 数据分析案例 5.3 HBase 的安装与Shell操作 1 HBase的安装 2.3 HDFS设计思路 4.3 Hive 函数 1 内置运算符 2 内置函数 3 Hive 自定义函数和 Transform MapReduce实战 3.3.1 利用MRJob编写和运行MapReduce代码 3.3.2 运行MRJOB的不同方式 3.3.3 mrjob 实现 topN统计(实验) spark-core RDD常用算子练习 3.1 RDD 常用操作 3.2 RDD Transformation算子 3.4 Spark RDD两类算子执行示意 3、JSON数据的处理 3.1 介绍 3.2 实践 3.1 静态json数据的读取和操作 5.4 HappyBase操作Hbase 4.4 hive综合案例 四 LR实现CTR预估 4.1 Spark逻辑回归(LR)训练点击率预测模型 4、数据清洗 5.6 HBase组件 1、sparkStreaming概述 spark-core实战 5.1通过spark实现ip地址查询 五 离线推荐数据缓存 5.1离线数据缓存之离线召回集 1.4 案例--基于协同过滤的电影推荐 1 User-Based CF 预测电影评分 3 spark 安装部署及standalone模式介绍 1 spark 安装部署 3 spark 集群相关概念 六 实时产生推荐结果 6.1 推荐任务处理 推荐系统基础 Hadoop Hive HBase Spark SQL 1.6 推荐系统的冷启动问题 2 处理推荐系统冷启动问题的常用方法 一 个性化电商广告推荐系统介绍 1.2 项目效果展示 1.3 项目实现分析 1.4 点击率预测(CTR--Click-Through-Rate)概念 资源调度框架 YARN 3.1.1 什么是YARN 3.1.2 YARN产生背景 3.1.3 YARN的架构和执行流程 基于回归模型的协同过滤推荐 基于矩阵分解的CF算法 基于矩阵分解的CF算法实现(二):BiasSvd 基于内容的推荐算法(Content-Based) 基于内容的电影推荐:物品画像 基于TF-IDF的特征提取技术 基于内容的电影推荐:为用户产生TOP-N推荐结果 2、DataFrame 分布式处理框架 MapReduce 3.2.1 什么是MapReduce
完整笔记资料代码:https://gitee.com/yinuo112/Backend/tree/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
| |
- 可以看到 namenode和 datanode启动的日志信息
| |
- 通过jps命令查看当前运行的进程
| |
-
可以看到 NameNode DataNode 以及 SecondaryNameNode 说明启动成功
-
通过可视化界面查看HDFS的运行情况
-
通过浏览器查看 192.168.19.137:50070
- Overview界面查看整体情况
- Datanodes界面查看datanode的情况
4.1 Hive基本概念
1 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的安装包 [ 并解压
| |
- 进入到 解压后的hive目录 找到 conf目录, 修改配置文件
| |
在hive-env.sh中指定hadoop的路径
| |
-
配置环境变量
-
```shell vi ~/.bash_profile
| |
- ```shell source ~/.bash_profile
| |
-
hive启动
-
启动docker
service docker start
- 通过docker 启动mysql
docker start mysql
- 启动 hive的metastore元数据服务
hive --service metastore
- 启动hive
hive
-
MySQL
- 用户名:root
- 密码:password