大数据入门-Hadoop基础
大数据入门-Hadoop基础
1 大数据背景
1-1 大数据4V特性
数据量 Volume
多样性,复杂性 Variety(结构化和非结构化数据)
基于高度分析的新价值 Value (价值密度的高低和数据总量是成反比的)
速度 Velocity
1-2 大数据带来的技术变革
技术驱动:数据量大
存储:文件存储 ===> 分布式存储
计算:单机 ===> 分布式计算
网络:百兆 ===> 万兆
DB: Mysql(RDBMS) ===> NoSql(HBase/Redis...)
商业驱动:从数据中分析出商业价值
1-3 大数据现在的模式
1) 手握大数据,没有大数据思维(电信行业,政府机关,金融机构)
2) 没有大数据,有大数据思维 (IT咨询服务行业)
3) 既有大数据,又有大数据思维 (Google,阿里,亚马逊)
单机:CPU,Memory,Disk
分布式并行计算/处理
数据采集:Flume,Sqoop
数据存储:Hadoop
数据处理,分析,挖掘:Hadoop,Spark,Flink...
数据可视化:ECharts
1-5 大数据在技术架构上带来的挑战
1)对现有的数据库管理技术的挑战
2)经典数据库技术并没有考虑数据的多类别,比如图像,声音,视频等数据
3)实时性所带来的技术性的挑战
4)网络架构,数据中心,运维的挑战
5)数据隐私
6)数据源的复杂多样
1-6 如何对大数据进行存储和分析
瓶颈:存储容量,读写速度,计算效率
1-7 大数据的典型应用
1)count/sum/avg ---> group by/join ---> 窗口分析函数 ---> 异常/欺诈检测 ---> 人工智能
2)报表 ---> 用户细分(标签,画像) ---> 指标监控 ---> 指标预警
2 初识Hadoop
2-1 Hadoop概述
Doug Cutting ---> Hadoop之父
reliable,scalable,distributed 可靠,可扩展,分布式
Hadoop是一个分布式的系统基础架构,提供分布式的存储(一个文件被拆分成很多块,并且以副本的方式存储在各个节点中)和计算,用户可以在不了解分布式底层细节的情况下进行使用。
分布式文件系统:HDFS(Hadoop Distributed File System)
实现将文件分布式存储在很多的服务器上
分布式计算框架:MapReduce实现在很多机器上进行分布式并行计算
分布式资源调度框架:YARN 实现集群资源管理以及作业的统一调度
2-2 HDFS 分布式存储框架(Hadoop Distributed File System )
源自于GFS
特点:扩展性,容错性,海量数据存储
工作机制:将文件切分成指定大小的数据块,并以多副本的方式存储在多台机器上
文件:test.log 200M
block(块):默认的块大小为 128M,则该文件被分为 1*128+1*72M 两个块
副本:HDFS默认有3副本
数据的切分,多副本,容错等操作,对于用户来说是透明的
2-3 MapReduce 分布式计算框架
源自于谷歌的MapReduce 04.12
特点:扩展性,容错性,海量数据离线处理
2-4 YARN 资源调度系统
Yet Another Resouce Neogotiator
负责整个集群资源的管理和调度
特点:扩展性,容错性,多框架资源调度
2-5 Hadoop之高可靠性(HA)
1)数据存储:数据块多副本存储
2)数据计算:重新调度作业计算
2-6 Hadoop之高扩展性
1)存储计算资源不够时,可以横向的线性扩展机器
2)一个集群中可以包含数以千计万计的节点
2-7 其他优势
1)存储在廉价机器上,降低成本
2)成熟的生态圈
2-8 狭义的Hadoop 和广义的Hadoop
狭义:HDFS + MR +YARN
广义:Hadoop生态系统,小而精的多个小系统
2-9 Hadoop生态系统特点
1)开源,生态活跃
2)包括了大数据处理的方方面面
3)成熟的生态圈
2-10 Hadoop常用的发行版以及选型
1)Apache:纯开源,不同版本,不同框架之间整合不好(jar冲突)
2)CDH: cm(Cloudera manager)通过页面一键安装各种框架,升级,cm不开源,与Apache版本有冲突
3)Hortonworks: 原装Hadoop,纯开源,支持TEZ,企业级安全不开源
4)MapR:不建议
3 HDFS
3-1 HDFS概述
The Hadoop Distributed File System
1)分布式
2)commodity hardware 廉价机器,通用的
3)fault-tolerant 高容错
4)high throughout 高吞吐量
5) large data sets 大数据集
3-2 HDFS前提和设计目标
1)Hardware Failure 硬件错误
每个机器只存储文件的部分数据,按照块存储
2)Streaming Data Access 流式数据访问
数据访问时的高吞吐量,但不考虑延迟性
3)Large Data Sets 大规模数据集
不怕数据大,就怕数据小
4)Moving Computation is Cheaper than Moving Data.
移动计算比移动数据更划算
3-3 HDFS架构 ******
1) NameNode 和 DataNode
2) master/slave的架构
3)NN : the file system namespace 对文件架构的管理
对客户端访问数据的管理
4)DN: data storage 存储数据
5)a file is split into one or more blocks.
6) blocks are stored in a set of dataNodes.
7) NN:CRUD 增删改查
8)determins the mapping of blocks to datanodes
决定块存放在具体的哪个DN上
9)通常情况下一个机器部署一个节点
3-4 使用HDFS API的方式来操作HDFS文件系统
注意:1)若以命令行方式创建文件到HDFS,则副本数以设置的为主
2)若以代码的方式,则要设置 configuration的副本值,,默认为3
3-5 副本的摆放策略
1)本rack的一个节点上 1)本rack的一个节点上
2)另外一个rack的节点上 2)本rack的另外一个节点上
3)与2相同的rack的另外一个节点上 3)不同rack的一个节点上
3-6 HDFS元数据管理
元数据:HDFS的目录结构以及每个文件的Block信息(id,副本数,位置)
存放在什么地方:dfs/name/...
Q1: 元数据都存放在内存中,若节点挂了,怎么办?
An:定期会将内存中的元数据信息序列化到硬盘上。
若在周期内,则将时间段内的所有对HDFS相关的操作指令写在editlogs中,再将两者copy到SecondNameNode中。
此时SNN将fsimage和editlogs同时加载到内存中,并生成一个新的fsimage,此时,若节点挂掉,只需要重新加载新的fsimage,即可恢复元数据结构。。。。。这种机制称为checkpoint
3-7 safemode
当刚刚启动NN时,大概30s中时间,会自动退出safemode,当处于safemode时,HDFS是不能进行写操作的
3-8 HDFS命令行操作
hadoop fs -ls /
hadoop fs -put test.txt /
hadoop fs -get /test.txt
hadoop fs -cat /test.txt
hadoop fs -mkdir /hdfs-test
hadoop fs -mv /test.txt /hdfs-test
hadoop fs -rm /test.txt
hadoop fs -rmdir /hdfs-test
hadoop fs -rm -r /test.txt
4 分布式处理框架 MapReduce
海量数据离线处理,易开发,易运行
将作业拆分成map作业和reduce作业
MapReduce编程模式之执行步骤
1)准备map处理的输入数据
2)Mapper处理
3)Shuffle
4)Reducer处理
5) 输出结果
map端的聚合操作就叫做combiner,聚合的逻辑和reduce是一样的
优点:能减少IO和网络开销,提升作业的执行性能
缺点:求平均值时会出错
即combiner要根据情况来使用
Partitioner决定Maptask输出的数据交由哪个reducerTask来处理
默认实现:分发的key的hash值与reduceTask个数取模
numReduceTasks:你的作业所指定的reducer的个数,决定了reduce作业输 出文件的个数
HashPartitioner是MapReduce默认的分区规则
5 资源调度框架YARN
5-1 YARN产生的背景
1) MR 1.x ===> MR 2.x
1.x中,master/slave: JobTracker/TaskTracker
JobTracker:单点,压力大
仅仅只能够支持MR作业
2)资源利用率和运维成本
所有的计算框架运行在一个集群中,共享一个集群的资源,按需分配
5-2 YARN概述
Yet Another Resource Negotiator
通用的资源管理系统
为上层应用提供统一的资源管理和调度
5-3 YARN的架构 *****
client,RM,NM,AM
client:向RM提交任务,杀死任务
AM:每个应用程序对应一个AM,AM会向RM申请资源,用于在NM上启动对应的Task ,数据切分
NM:干活的,向RM发送心跳信息,报告任务的执行情况,接收RM的请求来启动任 务,处理来自AM的命令
RM:集群中同一时刻对外提供服务的只有一个,负责资源相关。
处理来自客户端的请求:提交,杀死。
启动/监控AM
监控NM
Container:进程,任务的运行抽象,memory,cpu...
task是运行在container里,可以运行am,也可以运行map/reduce Task
6 用户行为日志
每一次访问的行为(访问,搜索)产生的日志
历史行为数据 <=== 历史订单数据 ==> 推荐 ==> 订单的转化量,转化率
PV(访问量) UV(独立访客数)
存在的问题:
每个MR作业都去全量读取待处理的原始日志,如果数据量很大,是不是会疯了
解决办法:ETL(数据清洗)
全量数据不方便进行计算的,最好是进行一步处理后在进行相应的统计分析
去除一些不需要的字段,将需要的字段重新拼接在一起
压缩(集群cpu负载不高时)
转移ETL后的数据至冷集群(一段时间不动的数据)中,其中热集群(当前要处理的一段时间的数据)
再将数据转移到对象存储上,比如S3
转移数据或者改变数据存储格式为列式存储(.orc格式...)
7 Hive 数据仓库
7-1 hive产生的背景
MapReduce编程不方便(编程门槛比较高)
HDFS上的文件并没有schema(表明,字段名,字段类型)的概念,则传统 RDBMS人员的并不能够直接操作文件
7-2 hive是什么
1)由facebook开源,用于解决海量结构化日志的数据统计问题
2)构建在Hadoop之上的数据仓库
3)Hive提供的SQL查询语言:HQL
4)底层支持多种不同的执行引擎 MR/TEZ/Spark(hive 2.0)
5)hive只是一个客户端而已,并不涉及到集群的概念
7-3 hive概述之为什么要使用hive
1)简单,容易上手
2)为超大数据集设计的离线计算/扩展框架
3)*****统一的元数据管理:
hive的数据是存放在HDFS上
元数据信息:(记录数据的数据)是存放在Mysql中
7-4 Hive的体系架构
client :shell,thrift/jdbc (server/client),WebUI(HUE/ Zeepelin)
metastore:元数据信息
Driver
MapReduce
HDFS,Mysql
7-5 Derby只能进行单客户端的操作,就是所谓的单session,所以使用mysql 来存储元数据信息
7-6 Hive中的DDL
Hive Data Definition Language
即:create ,delete.alter...
小技巧:1)desc database extended + 库名
查看数据库详细信息
2)set hive.cli.print.current.db=true;
会出现目前操作的数据库 hive(test_db)>
3) !clear; 清空控制台
7-7 Hive中的DML
Hive Data Manipulation Language
即:load,insert...
local:本地 若不带local,则代表从HDFS中load数据
7-8 聚合:max/min/count/avg/sum
7-9 分组:group by
规则:出现在select中的字段,如果没有出现在聚合函数里,那一定要出现在group by里
对于分组函数的过滤,要使用hiving,不能使用where
7-10 join 多表联合
7-11 外部表的使用
Managed_table 内部表
删除表时:HDFS上的数据被删除了,元数据信息也被删除了
External_table 外部表
删除表时:HDFS上的数据不会被删除,元数据信息被删除了
当重新建该表时,数据会被自动加载进表中
7-12 hive处理流程
1)对原始数据进行ETL
2)把ETL输出的数据加载到分区表里
3)各个维度统计结果的数据输出到各自维度的表里
4)将数据导出
如果一个框架不能落地到SQL层面,这个框架就不是一个非常适合的框架
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· winform 绘制太阳,地球,月球 运作规律
· AI与.NET技术实操系列(五):向量存储与相似性搜索在 .NET 中的实现
· 超详细:普通电脑也行Windows部署deepseek R1训练数据并当服务器共享给他人
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 上周热点回顾(3.3-3.9)