大数据开发,Hadoop极速入门,完成直播平台数据统计
作者头像
  • 发烧火星鱼
  • 2021-05-27 10:59:20 13

大数据开发,Hadoop快速入门,完成直播平台数据统计

目录

  • 第1章 课程介绍
  • 第2章 Hadoop整体概述
  • 第3章 Hadoop集群部署
  • 第4章 分布式存储(HDFS)详解
  • 第5章 分布式计算(MapReduce)详解
  • 第6章 资源调度器(Yarn)详解
  • 第7章 案例:直播平台开播数据统计分析
  • 第8章 课程回顾与总结

第1章 课程介绍

1-1 课程介绍

  • 本课程主要讲解Hadoop3中的三大组件的基本理论和实践操作。
  • 通过本课程,学员能够迅速掌握Hadoop3的实际应用,了解企业级开发流程。
  • 实战案例中会结合具体问题,提供排查思路,帮助提高解决问题的能力。

1-2 项目效果预览

1-3 开发技术栈介绍

  • Linux基本操作、Shell脚本基础
  • JavaSE内容、IDEA开发工具

1-4 如何学习本课程

  • 课程安排:理论+实践+案例实战
  • 教学方式:理论+实践
  • 学习建议:多动手操作

第2章 Hadoop整体概述

2-1 Hadoop简介

  • Hadoop是一个适合海量数据存储和计算的平台,已经成为大数据的代名词。
  • Hadoop由Doug Cutting创建,主要基于谷歌的三大技术:Google File System (GFS),MapReduce,BigTable实现。

Hadoop版本

  • Hadoop 1.x
  • Hadoop 2.x
  • Hadoop 3.x

2-2 分布式存储介绍

2-3 分布式计算介绍

2-4 Hadoop三大核心组件分析

HDFS架构分析

  • HDFS负责海量数据的分布式存储。
  • HDFS采用主从结构,主节点支持多个NameNode,从节点支持多个DataNode。
  • NameNode负责接收用户请求,维护目录结构。DataNode负责存储数据。

MapReduce架构分析

  • MapReduce是一个编程模型,主要用于海量数据计算,由Map和Reduce两个阶段组成。
  • Map阶段是一个独立程序,可以在多个节点上并行执行。
  • Reduce阶段也是一个独立程序,通常用于聚合数据。

Yarn架构分析

  • Yarn负责集群资源管理和调度,支持主从架构。
  • ResourceManager负责集群资源的分配和管理。
  • NodeManager负责单节点资源管理。

2-5 Hadoop核心架构发展历史

2-6 大数据生态圈介绍

第3章 Hadoop集群部署

3-1 Hadoop常见发行版介绍

  • 官方版本:Apache Hadoop,开源,集群安装维护较复杂。
  • 第三方发行版本:Cloudera Hadoop (CDH),提供商业支持,收费,使用Cloudera Manager安装维护较为便捷。
  • 第三方发行版本:HortonWorks HDP,开源,使用Ambari安装维护较为便捷。

3-2 Hadoop伪分布集群安装部署

Hadoop3.0分步/伪分布集群安装

  • 使用3台Linux虚拟机安装分布式集群。
  • 使用1台Linux虚拟机安装伪分布式集群。

注意事项

  • 设置IP地址和主机名。
  • 修改hosts文件。
  • 关闭防火墙。
  • 设置SSH免密登录。
  • 安装JDK 1.8。
  • 安装Hadoop伪分布。

3-3 Hadoop伪分布集群安装部署

3-4 Hadoop分布式集群安装部署

3-5 Hadoop客户端节点安装介绍

  • 在实际工作中,不建议直接连接集群中的节点来操作集群,因为这不安全。
  • 建议在业务机器上安装Hadoop客户端,以便在业务机器上操作Hadoop集群。

第4章 分布式存储(HDFS)详解

4-1 HDFS简介

  • HDFS是一种允许文件通过网络在多台主机上分享的文件系统,可以实现多机器上的多用户共享文件和存储空间。
  • HDFS不适合存储小文件。

4-2 HDFS的Shell介绍

  • HDFS Shell命令格式:bin/hdfs dfs -xXx schema://authority/path
  • HDFS的schema是hdfs,authority是NameNode的节点IP和端口号,path是要操作的路径信息。

4-3 HDFS的Shell操作

  • ls:查询指定路径信息。
  • get:下载文件到本地。
  • put:从本地上传文件。
  • mkdir [-p]:创建文件夹。
  • cat:查看HDFS文件内容。
  • rm [-r]:删除文件/文件夹。

4-4 HDFS体系结构详解

  • HDFS包含:NameNode、SecondaryNameNode、DataNode。

NameNode介绍

  • NameNode是整个文件系统的管理节点,负责维护文件系统的目录树、文件/目录的元信息、每个文件对应的数据块列表,并接收用户的操作请求。
  • NameNode的主要文件包括fsimage、edits、seed txid、VERSION,这些文件的保存路径由hdfs-default.xml文件中的dfs.namenode.name.dir属性控制。

SecondaryNameNode介绍

  • SecondaryNameNode主要负责定期将edits文件中的内容合并到fsimage中。
  • 这个合并操作称为checkpoint,合并过程中会对edits中的内容进行转换,生成新的内容保存到fsimage文件中。
  • 在NameNode的HA架构中没有SecondaryNameNode进程,这个文件合并操作由standby NameNode完成。

DataNode介绍

  • DataNode提供真实文件数据的存储服务。
  • HDFS按照固定大小顺序对文件进行划分并编号,划分好的每个块称为一个Block,HDFS默认Block大小是128MB。
  • 如果一个文件小于一个数据块的大小,那么并不会占用整个数据块的存储空间。

NameNode总结

  • NameNode维护了两份关系:
    • 文件与Block list的关系,对应的关系信息存储在fsimage和edits文件中。
    • DataNode与Block的关系,当DataNode启动时,会把当前节点上的Block信息和节点信息上报给NameNode。

第5章 分布式计算(MapReduce)详解

5-1 MapReduce原理分析

什么是MapReduce

  • 如果你想知道一摞牌中有多少张黑桃,可以通过一张一张检查并数出有多少张是黑桃。
  • MapReduce方法则是:给所有玩家分配这摞牌,让每个玩家数自己手中的牌有几张是黑桃,然后汇总得到总数。

MapReduce概述

  • MapReduce是一种分布式计算模型,主要用于处理海量数据的计算任务。
  • MapReduce由两个阶段组成:Map和Reduce。
  • 用户只需覆盖map()和reduce()两个函数,即可实现分布式计算。

MapReduce原理分析

  • Map阶段是一个独立程序,可以在多个节点上并行执行。
  • Reduce阶段也是一个独立程序,用于聚合数据。

5-2 WordCount案例分析

5-3 Shuffle过程分析

5-4 WordCount代码开发

5-5 MapReduce任务日志查看

  • 开启Yarn的日志聚合功能,方便查看日志。
  • 需要修改yarn-site.xml中的yarn.log-aggregation-enable和yarn.log.server.url。
  • 启动historyserver:sbin/mr-jobhistory-daemon.sh start historyserver。

5-6 中止Hadoop集群中的任务

  • 使用命令:yarn application -kill
  • 注意:在命令行中按下Ctrl+C无法中止任务,因为任务已经提交到Hadoop集群运行。

5-7 Hadoop序列化机制介绍

Hadoop序列化机制的特点

  • 紧凑:高效利用存储空间。
  • 快速:读写数据的额外开支小。
  • 可扩展:可以透明地读取老格式的数据。
  • 互操作:支持多语言的交互。

Java序列化的不足

  • 不精简,附加信息多,不适合随机访问。
  • 存储空间大,递归地输入类的超类描述直到不再有超类。
  • 扩展性差,Hadoop中的Writable可以方便用户自定义。

第6章 资源调度器(Yarn)详解

6-1 Yarn资源调度器介绍

  • Yarn目前支持三种调度器:
    • FIFO Scheduler:先进先出调度策略。
    • CapacityScheduler:可以看作是FifoScheduler的多队列版本。
    • FairScheduler:多队列,多用户共享资源。

第7章 案例:直播平台开播数据统计分析

7-1 案例需求分析

  • 运营部门需要针对主播每天的开播数据进行分析,统计受欢迎程度较高的主播,进而对这些主播分发更多流量,发掘最大价值。

7-2 原始数据清洗代码完成

  • 原始数据是通过日志方式记录的,在采集到HDFS后,还需要进行数据清洗和过滤,丢弃缺失字段的数据,对异常字段值进行标准化处理。

数据清洗需求与分析

  • 从原始数据(JSON格式)中过滤出需求字段:主播ID、金币数量、总观看PV、粉丝关注数量、视频总开播时长。
  • 对核心字段进行异常值判断:金币数量、总观看PV、粉丝关注数量、视频总开播时长。
  • 异常值处理:如果这些字段值为负值或缺失,则认为是异常数据,直接丢弃。

7-3 数据目的统计—基于主播维度目的

  • 统计每天开播时长最长的前10名主播及对应的开播时长。
  • 对数据中的金币数量、总观看PV、粉丝关注数量、视频总开播时长等目的进行统计。

7-4 数据目的统计—基于主播的TOPN计算

  • 统计每天开播时长最长的前10名主播及对应的主播时长。

7-5 任务定时脚本封装

  • 封装任务提交命令,方便使用,便于定时任务调度。

7-6 任务执行结果监控

  • 监控任务执行结果,如果执行失败,则重试任务,并发送告警短信信息。

7-7 使用Sqoop将计算结果导出到MySQL

  • 快速安装Sqoop工具。
  • 开发数据导出功能,使用Sqoop将MapReduce计算结果导出到MySQL。

7-8 Web项目展示结果

第8章 课程回顾与总结

参考材料

    本文来源:图灵汇
责任编辑: : 发烧火星鱼
声明:本文系图灵汇原创稿件,版权属图灵汇所有,未经授权不得转载,已经协议授权的媒体下载使用时须注明"稿件来源:图灵汇",违者将依法追究责任。
    分享
数据统计入门直播完成数据Hadoop开发平台
    下一篇