【Python使用】嘿马推荐系统全知识和项目开发教程第5篇:资源调度框架 YARN,基于回归模型的协同过滤推荐,1.1 什么是Hadoop【附代码文档】

60 阅读1分钟

教程全知识点简介:推荐系统概念、产生背景、工作原理、作用以及与Web项目的区别。核心推荐算法包括协同过滤推荐算法(User-Based CF、基于回归模型的协同过滤、基于矩阵分解的CF算法、BiasSvd)、相似度计算、推荐模型构建流程,以及基于内容的电影推荐(用户画像、TOP-N推荐结果生成)和推荐系统冷启动问题处理方法。大数据技术栈包括Hadoop架构(HDFS数据存储、MapReduce计算框架、YARN资源调度)、Hive数据仓库(HQL操作、综合案例)、HBase数据模型(Shell操作、HappyBase操作)。Spark生态系统涵盖Spark Core(RDD概述、WordCount程序、点击流日志分析)、Spark SQL(DataFrame介绍、JSON数据处理)、Spark Streaming实时处理、Spark ML机器学习(ALS矩阵分解模型、逻辑回归LR)。数据预处理技术包括数据清洗(异常值处理、分位数计算、边界值替换)、用户行为数据拆分、behavior_log数据集预处理、raw_sample数据集分析、schema构建、空值处理。推荐系统实现包括个性化电商广告推荐系统、用户对商品类别打分数据处理、ALS模型训练(Checkpoint设置、内存管理、迭代次数控制)、CTR预估(数据准备、特征工程)、离线推荐数据缓存(Redis存储、召回集管理)、实时推荐结果生成和推荐任务处理。

👉👉👉   gitee.com/yinuo112/Ba…

1.1 什么是Hadoop

  • Hadoop名字的由来

    • 作者:Doug cutting
    • Hadoop项目作者的孩子给一个棕黄色的大象样子的填充玩具的命名

  • Hadoop的概念:

    • Apache™ Hadoop® 是一个开源的, 可靠的(reliable), 可扩展的(scalable)分布式计算框架
      • 允许使用简单的编程模型跨计算机集群分布式处理大型数据集
      • 可扩展: 从单个服务器扩展到数千台计算机,每台计算机都提供本地计算和存储
      • 可靠的: 不依靠硬件来提供高可用性(high-availability),而是在应用层检测和处理故障,从而在计算机集群之上提供高可用服务
  • Hadoop能做什么?

    • 搭建大型数据仓库

    • PB级数据的存储 处理 分析 统计等业务

      • 搜索引擎

      • 日志分析

      • 数据挖掘

      • 商业智能(Business Intelligence,简称:BI)

商业智能通常被理解为将企业中现有的数据(订单、库存、交易账目、客户和供应商等数据)转化为知识,帮助企业做出明智的业务经营决策的工具。从技术层面上讲,是数据仓库、数据挖掘等技术的综合运用。 ```

  • Hadoop发展史

    • 2003-2004年 Google发表了三篇论文

      • GFS:Google的分布式文件系统Google File System
      • MapReduce: Simplified Data Processing on Large Clusters
      • BigTable:一个大型的分布式数据库
    • 2006年2月Hadoop成为Apache的独立开源项目( Doug Cutting等人实现了DFS和MapReduce机制)。

    • 2006年4月— 标准排序(10 GB每个节点)在188个节点上运行47.9个小时。

    • 2008年4月— 赢得世界最快1TB数据排序在900个节点上用时209秒。

    • 2008年— 淘宝开始投入研究基于Hadoop的系统–云梯。云梯总容量约9.3PB,共有1100台机器,每天处理18000道作业,扫描500TB数据。

    • 2009年3月— Cloudera推出CDH(Cloudera’s Dsitribution Including Apache Hadoop)

    • 2009年5月— Yahoo的团队使用Hadoop对1 TB的数据进行排序只花了62秒时间。

    • 2009年7月— Hadoop Core项目更名为Hadoop Common;

    • 2009年7月— MapReduce和Hadoop Distributed File System (HDFS)成为Hadoop项目的独立子项目。

    • 2012年11月— Apache Hadoop 1.0 Available

    • 2018年4月— Apache Hadoop 3.1 Available

    • 搜索引擎时代

      • 有保存大量网页的需求(单机 集群)
      • 词频统计 word count PageRank
    • 数据仓库时代

      • FaceBook推出Hive
      • 曾经进行数分析与统计时, 仅限于数据库,受数据量和计算能力的限制, 我们只能对最重要的数据进行统计和分析(决策数据,财务相关)
      • Hive可以在Hadoop上运行SQL操作, 可以把运行日志, 应用采集数据,数据库数据放到一起分析
    • 数据挖掘时代

      • 啤酒尿不湿
      • 关联分析
      • 用户画像/物品画像
    • 机器学习时代 广义大数据

      • 大数据提高数据存储能力, 为机器学习提供燃料
      • alpha go
      • siri 小爱 天猫精灵

资源调度框架 YARN

3.1.1 什么是YARN

  • Yet Another Resource Negotiator, 另一种资源协调者

  • 通用资源管理系统

  • 为上层应用提供统一的资源管理和调度,为集群在利用率、资源统一管理和数据共享等方面带来了巨大好处

3.1.2 YARN产生背景

  • 通用资源管理系统

    • Hadoop数据分布式存储(数据分块,冗余存储)
    • 当多个MapReduce任务要用到相同的hdfs数据, 需要进行资源调度管理
    • Hadoop1.x时并没有YARN,MapReduce 既负责进行计算作业又处理服务器集群资源调度管理
  • 服务器集群资源调度管理和MapReduce执行过程耦合在一起带来的问题

    • Hadoop早期, 技术只有Hadoop, 这个问题不明显

    • 随着大数据技术的发展,Spark Storm ... 计算框架都要用到服务器集群资源

    • 如果没有通用资源管理系统,只能为多个集群分别提供数据

      • 资源利用率低 运维成本高

    • Yarn (Yet Another Resource Negotiator) 另一种资源调度器

      • Mesos 大数据资源管理产品
  • 不同计算框架可以共享同一个HDFS集群上的数据,享受整体的资源调度

3.1.3 YARN的架构和执行流程

  • ResourceManager: RM 资源管理器 ​ 整个集群同一时间提供服务的RM只有一个,负责集群资源的统一管理和调度 ​ 处理客户端的请求: submit, kill ​ 监控我们的NM,一旦某个NM挂了,那么该NM上运行的任务需要告诉我们的AM来如何进行处理
  • NodeManager: NM 节点管理器 ​ 整个集群中有多个,负责自己本身节点资源管理和使用 ​ 定时向RM汇报本节点的资源使用情况 ​ 接收并处理来自RM的各种命令:启动Container ​ 处理来自AM的命令
  • ApplicationMaster: AM ​ 每个应用程序对应一个:MR、Spark,负责应用程序的管理 ​ 为应用程序向RM申请资源(core、memory),分配给内部task ​ 需要与NM通信:启动/停止task,task是运行在container里面,AM也是运行在container里面
  • Container 容器: 封装了CPU、Memory等资源的一个容器,是一个任务运行环境的抽象
  • Client: 提交作业 查询作业的运行进度,杀死作业

1,Client提交作业请求

2,ResourceManager 进程和 NodeManager 进程通信,根据集群资源,为用户程序分配第一个Container(容器),并将 ApplicationMaster 分发到这个容器上面

3,在启动的Container中创建ApplicationMaster

4,ApplicationMaster启动后向ResourceManager注册进程,申请资源

5,ApplicationMaster申请到资源后,向对应的NodeManager申请启动Container,将要执行的程序分发到NodeManager上

6,Container启动后,执行对应的任务

7,Tast执行完毕之后,向ApplicationMaster返回结果

8,ApplicationMaster向ResourceManager 请求kill

3.1.5 YARN环境搭建

1)mapred-site.xml

<property>
    <name>mapreduce.framework.name</name>
    <value>yarn</value>
</property>

2)yarn-site.xml

<property>
    <name>yarn.nodemanager.aux-services</name>
    <value>mapreduce_shuffle</value>
</property>
  1. 启动YARN相关的进程 sbin/start-yarn.sh

4)验证 ​ jps ​ ResourceManager ​ NodeManager ​ [http://19