大数据开发,Hadoop极速入门,实现直播平台数据统计
suiw9 2025-01-20 16:21 19 浏览 0 评论
# 大数据开发,Hadoop极速入门,实现直播平台数据统计
## 目录
- 第1章 课程介绍
- 第2章 Hadoop整体概述
- 第3章 Hadoop集群部署
- 第4章 分布式存储(HDFS)详解
- 第5章 分布式计算(MapReduce)详解
- 第6章 资源调度器(Yarn)详解
- 第7章 案例:直播平台开播数据统计分析
- 第8章 课程回顾与总结
## 第1章课程介绍
### 1-1课程介绍(03:40)
- - ◆主要讲解Hadoop3中的三大组件的基本理论和实际操作
- - ◆帮助大家快速掌握Hadoop3的使用, 掌握企业实际开发流程
- - ◆实战案例开发中结合具体的问题,提供排查思路、帮助提高解决问题的能力
### 1-2项目效果预览(01:12) (图1)
### 1-3开发技术栈介绍(02:37)
- - ◆Linux基本操作、Shell脚本基础
- - ◆JavaSE内容、IDEA开发工具
### 1-4如何学习本课程(01:10)
- - ◆课程安排:理论+实操+案例实战
- - ◆教学方式:理论+实践
- - 学习建议:多操作!!!
## 第2章Hadoop整体概述
### 2-1 Hadoop简介(02:36)
- Hadoop简介
- - ◆Hadoop是一个适合海量数据存储和计算的平台,它已经成为大数据的代名词
- - ◆Hadoop的作者是道格卡J (Doug Cutting),主要基于谷歌的三架马车: GoogleFS,MapReduce, Big Table而实现
- Hadoop版本
- - Hadoop1.x
- - Hadoop2.x
- - Hadoop3.x
### 2- -2分布式存储介绍(06:20)(图1)
### 2- -3分布式计算介绍(06:01)(图2)
### 2-4 Hadoop三大核心组件分析(08:06)(图3)
- HDFS架构分析
- - ◆HDFS负责海量数据的分布式存储
- - ◆HDFS支持主从结构,主节点支持多个NameNode,从节点支持多个DataNode .
- - ◆NameNode负责接收用户请求,维护目录系统的目录结构。DataNode主要负责存储数据。
- MapReduce架构分析
- - ◆MapReduce是- -一个编程模型,主要负责海量数据计算,主要由两个阶段组成: Map和Reduce
- - ◆Map阶段是一个独立的程序,会在很多个节点上同时执行,每个节点处理一部分数据
- - ◆Reduce阶段也是一个独立的程序,在这先把Reduce理解为-个单独的聚合程序即可。
- Yarn架构分析
- - ◆Yarn主要负责集群资源的管理和调度,支持主从架构,主节点最多可以有2个, 从节点可以有多个
- - ◆主节点(ResourceManager)进程主要负责集群资源的分配和管理
- - ◆从节点(NodeManager)主要负责单节点资源管理.
### 2-5 Hadoop核心架构发展历史(02:52)(图4)
### 2-6大数据生态圈介绍(03:54)(图5)
## 第3章Hadoop集群部署
### 3-1 Hadoop常见发行版介绍(03:02)
- - ◆官方版本: Apache Hadoop,开源,集群安装维护比较麻烦
- - ◆第三方发行版本: Cloudera hadoop(CDH),提供商业支持,收费,使用Cloudera Manager安装维护比较方便
- - ◆第三方发行版本: HortonWorks(HDP), 开源,使用Ambari安装维护比较方便
### 3- -2 Hadoop伪分布集群安装部署(. 上) (14:52)
- Hadoop3.0分步/伪分布集群安装
- - ◆使用3台Linux虚拟机安装分布式集群
- - ◆使用1台Linux虚拟机安装伪分布式集群
- 注意: linux的系统版本使用的Centos6.x
- 1: ip的设置
- 2: 主机名的设置( 临时+永久)
- 3: hosts;文件的修改( ip和主机名的映射关系)
- 4: 关闭防火墙( 临时+永久)
- 5: ssh免密码登录
- 6: JDK的安装( jdk1.8)
- 7: hadoop伪分布的安装
### 3- -3 Hadoop伪分布集群安装部署(下) (16:21)
### 3- -4 Hadoop分布式集群安装部署(18:12)
### 3- -5 Hadoop客户端节点安装介绍(03:49)
- - 在实际工作中不建议直接连接集群中的节点来操作集群,因为直接把集群中的节点暴露给普通开发人员是不安全的
- - ◆建议在业务机器上安装Hadoop的客户端,这样就可以在业务机器.上操作Hadoop集群了
## 第4章分布式存储(HDFS)详解
### 4-1 HDFS简介 (03:15)
- - HDFS是一-种允许文件通过网络在多 台主机.上分享的文件系统,可让多机器上的多用户分享文件和存储空间
- - ◆分布式文件管理系统有很多,HDFS只是其中- -种实现,HDFS不适合存储小文件
### ●4- -2 HDFS的Shell介绍(02:47)
- - ◆使用格式: bin/hdfs dfs -xXx schema://authority/ path
- - ◆HDFS的schema是hdfs, authority是NameNode的节点ip和对应的端口号,path是我们要操作的路径信息
### 4- -3 HDFS的Shell操作(10:39)
- - ◆-Is: 查询指定路径信息
- - ◆-get: 下载文件到本地
- - ◆-put: 从本地.上传文件
- - ◆-mkdir [-p]:创建文件夹
- - ◆-cat: 查看HDFS文件内容◆ -rm [-r]: 删除文件/文件夹
### ( 4- -4 HDFS体系结构详解(20:37)
- HDFS包含: NameNode, SecondaryNameNode,DataNode
- NameNode介绍
- - ◆NameNode是整个文件系统的管理节点,它主要维护着整个文件系统的文件目录树,文件/目录的元信息,每个文件对应的数据块列表,并且还负责接收用户的操作请求
- - ◆NameNode主要包含以下文件: fsimage, edits, seed txid,VERSION。
- - ◆以上文件保存的路径由hdfs-default.xml文件中的dfs.namenode.name.dir属性控制
- SecondaryNameNode介绍
- - ◆主要负责定期的把edits文件中的内容合并到fsimage中
- - ◆这个合并操作称为checkpoint,在合并的时候会对edits中的内容进行转换,生成新的内容保存到fsimage文件中
- - ◆注意:在NameNode的HA架构中是没有SecondaryNameNode进程的,这个文件合并操作是由standby NameNode负责实现的。
- DataNode介绍
- - ◆提供真实文件数据的存储服务
- - ◆HDFS会按照固定的大小,顺序对文件进行划分并编号,划分好的每一个块称一个Block, HDFS默认Block大小是128MB
- - ◆HDFS中,如果一个文件小于一个数据块的大小,那么并不会占用整个数据块的存储空间
- NameNode总结
- - ◆NameNode维护了两份关系:
- - ◆第一份关系:File与Block list的关系,对应的关系信息存储在fsimage和edits文件中(当NameNode启动的时候会把文件中的内容加载到内存中)
- - ◆第二份关系:|DataNode与Block的关系(当DataNode启动的时候,会把当前节点上的Block信息和节点信息上报给NameNode)
## 第5章分布式计算(MapReduce)详解
### 5-1 MapReduce原理分析(06:07)
- 什么是MapReduce
- - ◆如果你想知道一摞牌中有多少张黑桃,直观方式是一张一-张检查并且数出有多少张是黑桃
- - ◆MapReduce方法则是:给在座的所有玩家分配这摞牌,让每个玩家数自己手中的牌有几张是黑桃,然后把这个数目汇报给你,最后你把所有玩家告诉你的数字加起来,得到最终结果
- MapReduce概述
- - ◆MapReduce是一种分布式计算模型,由Google提出, 主要用于搜索领域,解决海量数据的计算问题
- - ◆MapReduce是分布式运行的,由两个阶段组成: Map和Reduce
- - ◆MapReduce框架都有默认实现,用户只需要覆盖map()和reduce()两个函数,即可实现分布式计算,非常简单
- MapReduce原理分析(图)
### 5-2 WordCount案例分析(13:50)
- MapReduce之map阶段执行过程
- - ◆1:框架会把输入文件(夹)划分为很多InputSplit,默认,每个HDFS的Block对应一个InputSplit。通过RecordReader类,把每个InputSplit解析成一个个<k1,v1>。 默认,每一行,会被解析成- -个<k1,v1>
- - ◆2:框架调用Mapper类中的ma..)函数,map函数的形参是<k1,v1>,输出是<k2,v2>。- -个InputSplit对应-个map task
- - ◆3: 框架对map函数输出的< k2,v2>进行分区。不同分区中的<k2,v2>由不同的reduce task处理,默认只有1个分区
- - ◆4:框架对每个分区中的数据,按照k2进行排序、分组。分组,指的是相同k2的v2分成一个组
- - ◆5: 在map节点,框架可以执行reduce归约,此步骤为可选项
- - ◆6: 框架会把map task输出的< k2,v2>写入到inux的磁盘文件中
- MapReduce之reduce阶段执行过程
- - ◆1:框架对多个map任务的输出,按照不同的分区,通过网络copy到不同的reduce节点,这个过程称作shuffle
- - ◆2: 框架对reduce端接收到的相同分区的< k2,v2>数据进行合并、排序、分组,
- - ◆3:框架调用Reducer类中的reduce方法,输入<k2,{2v...}>,输出<k3,v3>。-个<k2,{v...}.>调用一-次reduce函数
- - ◆4: 框架把reduce的输出保存到HDFS中
- - ◆至此,整个reduce阶段结束
### 5- -3 Shuffle过程分析(02:56)(图)
### 5- 4 WordCount代码开发(29:29)
### 5- -5 MapReduce任务日志查看(09:17)
- - 开启yarn的日志聚合功能,把散落在nodemanager节点 上的日志统- -收集管理,方便查看日志.
- - ◆需要修改yarn-site.xmI中的yarn.log-aggregation-enable和yarn.log.server.url
- - 启动historyserver: sbin/mr-jobhistory-daemon.sh starthistoryserver
### 5-6 停止hadoop集群中的任务(04:25)
- ◆使用命令: yarn application -kill <application_ id>
- ◆注意:在命令行ctrl+c无法停止程序,因为程序已经提交到Hadoop集群运行了
### 5-7 Hadoop序列化机制介绍(05:55)(图)
- Hadoop序列化机制的特点
- - ◆1. 紧凑:高效使用存储空间
- - ◆2. 快速:读写数据的额外开销小
- - ◆3. 可扩展:可透明地读取老格式的数据
- - ◆4. 互操作:支持多语言的交互
- Java序列化的不足
- - ◆1. 不精简,附加信息多,不大适合随机访问
- - ◆2. 存储空间大,递归地输出类的超类描述直到不再有超类
- - ◆3. 扩展性差,Hadoop中的Writable可以方便用户自定义
## 第6章资源调度器(Yarn)详解
### 6-1 Yarn资源调度器介绍(05:18)
- ◆Yarn 目前支持三种调度器:
- - ◆FIFO Scheduler:先进先出(first in, first out)调度策略
- - CapacityScheduler:可以看作是FifoScheduler的多队列版本。
- - FairScheduler:多队列,多用户共享资源。
## 第7章案例:直播平台开播数据统计分析
### 7-1案例需求分析(05:03)
- 需求分析
- ◆运营部门门需要针对主播每天的开播数据进行分析,统计出来每天受欢迎程度比较高的一些主播,进而对这些主播分发更多流量,挖掘最大价值
### 7-2原始数据清洗代码实现(21:28)
- ◆由于原始数据是通过日志方式进行记录的,在使用日志采集工具采集到HDFS之后,还需要对数据进行清洗过滤,丢弃缺失字段的数据,针对异常字段值进行标准化处理
- 数据清洗需求与分析
- 需求:
- - 1:从原始数据(JSON格式)中过滤出来需要的字段
- - 主播ID(uid)、金币数量(gold)、总观看PV( watchnumpv)、粉丝关注数量(folLower)、视频总开播时长( Length)
- - 2: 针对核心字段进行异常值判断
- - 金币数量、总观看PV、粉丝关注数量、视频总开播时长
- - 以上四个字段正常情况下都不应该是复制,也不应该缺失
- - 如果这些字段值为负值,则认为是异常数据,直接丢弃,如果这些字段值个别有缺失,则认为字段的值为即可
- 分析:
- - 1:由于原始数据是json格式的,所以可以使用fastison对原始数据进行解析, 获取指定字段的内容
- - 2:然后对获取到的数据进行判断,只保留满足条件的数据即可
- - 3:由于不需要聚合过程,只是一个简单的过滤操作,所以只需要map阶段即可,reduce阶段就不需要了
- - 4:其中map阶段的k1, v1的数据类型是固定的: <LongWritable, Text>
- - k2, v2的数据类型为: <Text, Text> k2存储主播ID, v2存储核心字段,多个字段中间用\t分割
### 7-3数据指标统计---基于主播维度指标(19:18)
- 数据统计代码实现
- - ◆统计每天开播时长最 长的前10名主播及对应的开播时长
- - ◆对数据中的金币数量,总观看pv,粉丝关注数量,视频总开播时长等指标进行统计
- 自定义Writable代码实现
- - ◆由于原始数据中涉及到多个需要统计的字段,所以可以把这几个字段统一记录在一一个自定义数据类型中,方便使用
- - ◆代码实现
### 7- 4数据指标统计---基于主播的TOPN计算 (21:58)
- 数据指标统计作业
- 需求:
- - 2: 统计每天开播时长最长的前10名主播及对应的主播时长
- 分析:
- - 1:为J统计每天开播最长的前10名主播信息,需要在map阶段获取数据中每个主播的id和直播时长
- - 2: 所以map阶段的<k2,v2> 为<Text, LongWritable>
- - 3:在Reduce端对相同主播的直播时长进行累加求和,把这些数据存储到--个临时的map集合中
- - 4:在Reduce端的cLeanup函数中对map集合中的数据根据直播时长进行排序
- - 5: 最后在cLeranup函数中把直播时长最长的前10名主播的信息写出到hdfs文件中
### 7-5任务定时脚本封装(30:20)
- ◆把任务提交命令进行封装,方便使用,便于定时任务调度
- 脚本实现
### 7-6 任务执行结果监控(04:34)
- ◆针对任务执行结果进行检测,如果执行失败,则重试任务,同时发送告警短信信息
- ◆脚本开发
### 7-7 使用Sqoop将计算结果导出到Mysq| (10:24)
- ◆快速安装Sqoop工具
- ◆数据导出功能开发,使用Sqoop将MapReduce计算的结果导出到Mysq中
### 7-8 web项目展示结果(03:49)
## 第8章课程回顾与总结
## 参考资料
- (快速入门Hadoop3.0大数据处理)[https://www.imooc.com/learn/1159]
相关推荐
- 俄罗斯的 HTTPS 也要被废了?(俄罗斯网站关闭)
-
发布该推文的ScottHelme是一名黑客,SecurityHeaders和ReportUri的创始人、Pluralsight作者、BBC常驻黑客。他表示,CAs现在似乎正在停止为俄罗斯域名颁发...
- 如何强制所有流量使用 HTTPS一网上用户
-
如何强制所有流量使用HTTPS一网上用户使用.htaccess强制流量到https的最常见方法可能是使用.htaccess重定向请求。.htaccess是一个简单的文本文件,简称为“.h...
- https和http的区别(https和http有何区别)
-
“HTTPS和HTTP都是数据传输的应用层协议,区别在于HTTPS比HTTP安全”。区别在哪里,我们接着往下看:...
- 快码住!带你十分钟搞懂HTTP与HTTPS协议及请求的区别
-
什么是协议?网络协议是计算机之间为了实现网络通信从而达成的一种“约定”或“规则”,正是因为这个“规则”的存在,不同厂商的生产设备、及不同操作系统组成的计算机之间,才可以实现通信。简单来说,计算机与网络...
- 简述HTTPS工作原理(简述https原理,以及与http的区别)
-
https是在http协议的基础上加了一层SSL(由网景公司开发),加密由ssl实现,它的目的是为用户提供对网站服务器的身份认证(需要CA),以至于保护交换数据的隐私和完整性,原理如图示。1、客户端发...
- 21、HTTPS 有几次握手和挥手?HTTPS 的原理什么是(高薪 常问)
-
HTTPS是3次握手和4次挥手,和HTTP是一样的。HTTPS的原理...
- 一次安全可靠的通信——HTTPS原理
-
为什么HTTPS协议就比HTTP安全呢?一次安全可靠的通信应该包含什么东西呢,这篇文章我会尝试讲清楚这些细节。Alice与Bob的通信...
- 为什么有的网站没有使用https(为什么有的网站点不开)
-
有的网站没有使用HTTPS的原因可能涉及多个方面,以下是.com、.top域名的一些见解:服务器性能限制:HTTPS使用公钥加密和私钥解密技术,这要求服务器具备足够的计算能力来处理加解密操作。如果服务...
- HTTPS是什么?加密原理和证书。SSL/TLS握手过程
-
秘钥的产生过程非对称加密...
- 图解HTTPS「转」(图解http 完整版 彩色版 pdf)
-
我们都知道HTTPS能够加密信息,以免敏感信息被第三方获取。所以很多银行网站或电子邮箱等等安全级别较高的服务都会采用HTTPS协议。...
- HTTP 和 HTTPS 有何不同?一文带你全面了解
-
随着互联网时代的高速发展,Web服务器和客户端之间的安全通信需求也越来越高。HTTP和HTTPS是两种广泛使用的Web通信协议。本文将介绍HTTP和HTTPS的区别,并探讨为什么HTTPS已成为We...
- HTTP与HTTPS的区别,详细介绍(http与https有什么区别)
-
HTTP与HTTPS介绍超文本传输协议HTTP协议被用于在Web浏览器和网站服务器之间传递信息,HTTP协议以明文方式发送内容,不提供任何方式的数据加密,如果攻击者截取了Web浏览器和网站服务器之间的...
- 一文让你轻松掌握 HTTPS(https详解)
-
一文让你轻松掌握HTTPS原文作者:UC国际研发泽原写在最前:欢迎你来到“UC国际技术”公众号,我们将为大家提供与客户端、服务端、算法、测试、数据、前端等相关的高质量技术文章,不限于原创与翻译。...
- 如何在Spring Boot应用程序上启用HTTPS?
-
HTTPS是HTTP的安全版本,旨在提供传输层安全性(TLS)[安全套接字层(SSL)的后继产品],这是地址栏中的挂锁图标,用于在Web服务器和浏览器之间建立加密连接。HTTPS加密每个数据包以安全方...
- 一文彻底搞明白Http以及Https(http0)
-
早期以信息发布为主的Web1.0时代,HTTP已可以满足绝大部分需要。证书费用、服务器的计算资源都比较昂贵,作为HTTP安全扩展的HTTPS,通常只应用在登录、交易等少数环境中。但随着越来越多的重要...
你 发表评论:
欢迎- 一周热门
-
-
Linux:Ubuntu22.04上安装python3.11,简单易上手
-
宝马阿布达比分公司推出独特M4升级套件,整套升级约在20万
-
MATLAB中图片保存的五种方法(一)(matlab中保存图片命令)
-
别再傻傻搞不清楚Workstation Player和Workstation Pro的区别了
-
Linux上使用tinyproxy快速搭建HTTP/HTTPS代理器
-
如何提取、修改、强刷A卡bios a卡刷bios工具
-
Element Plus 的 Dialog 组件实现点击遮罩层不关闭对话框
-
日本组合“岚”将于2020年12月31日停止团体活动
-
SpringCloud OpenFeign 使用 okhttp 发送 HTTP 请求与 HTTP/2 探索
-
tinymce 号称富文本编辑器世界第一,大家同意么?
-
- 最近发表
- 标签列表
-
- dialog.js (57)
- importnew (44)
- windows93网页版 (44)
- yii2框架的优缺点 (45)
- tinyeditor (45)
- qt5.5 (60)
- windowsserver2016镜像下载 (52)
- okhttputils (51)
- android-gif-drawable (53)
- 时间轴插件 (56)
- docker systemd (65)
- slider.js (47)
- android webview缓存 (46)
- pagination.js (59)
- loadjs (62)
- openssl1.0.2 (48)
- velocity模板引擎 (48)
- pcre library (47)
- zabbix微信报警脚本 (63)
- jnetpcap (49)
- pdfrenderer (43)
- fastutil (48)
- uinavigationcontroller (53)
- bitbucket.org (44)
- python websocket-client (47)