大数据开发,Hadoop极速入门,完成直播平台数据统计
大数据开发,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章 课程回顾与总结
参考材料
声明:本文系图灵汇原创稿件,版权属图灵汇所有,未经授权不得转载,已经协议授权的媒体下载使用时须注明"稿件来源:图灵汇",违者将依法追究责任。
下一篇
发烧火星鱼
2021-05-27