大数据平台之Hadoop复习详细知识点
提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档
Hadoop复习
- 前言
- Hadoop是什么?
- 一、绪论
- 1 大数据5v特点
- 2 Google三驾马车
- 3 Hadoop的特点
- 4 Hadoop生态系统 (教材p6)
- 二、HDFS架构
- 1 Hadoop三大基本组件
- 2 HDFS特性和局限性(教材p38)
- 3 主从架构(Master/Slave)
- 4 元数据管理机制(教材p35)
- 5 HDFS高可用性(HA模式)(教材p34)
- 6 心跳机制(重要)
- 7 HDFS数据读写机制(重要)(教材p40)
- 8 Hadoop安装类型
- 9 安装大致的流程
- 10 常用的虚拟机
- 11 SSH免密配置原理
- 12 HDFS JavaAPI
- 13 HDFS命令(重要)
- 三 、YARN
- 1. 主从节点
- 2. 基于hadoop 2.0的架构(MRv2)
- 3. 主要的名词Resourcemanager,NodeManager,ApplicationMaster,Container,Job(教材75)
- 4. YARN的工作流程(教材75-76)
- 5.主从架构和双层调度范式,谁是一级调度,谁是二级调度(重要)主要在PPT上
- 四、 MapReduce
- 1. MapReduce的运行过程,分为(MapTask和ReduceTask)两个部分分开讨论(重要)
- 2. MapReduce代码(二次排序不考)(重要)
- 五 、HBase
- 1.Hbase 特点:
- 2. 重要的名词
- 3. HBase Shell,简单的Shell命令
- 4. HBase表(列、列族和行键)的设计原则(PPT第5章1~2页)(重点)
- 六、Hive
- 1. 什么是Hive,Hive的特点
- 2 . HiveQL
- 3 . 为什么使用关系数据库,Hive内嵌的关系数据库是什么
- 4. HiveQL查询数据(重点)复习SQL语句,难度与实验7相当
前言
❤️❤️希望大家能多多点赞。
本篇博客主要用于自己根据老师ppt复习hadoop,也希望能帮助到大家学习hadoop。本次博客是根据PPT内容总结提取出来,如果需要PPT参考的,大家可以在评论区说一下。
提示:以下是本篇文章正文内容,下面案例可供参考
Hadoop是什么?
Hadoop是一个由Apache基金会所开发的分布式系统基础架构。用户可以在不了解分布式底层细节的情况下,开发分布式程序。充分利用集群的威力进行高速运算和存储。Hadoop实现了一个分布式文件系统( Distributed File System),其中一个组件是HDFS(Hadoop Distributed File System)。HDFS有高容错性的特点,并且设计用来部署在低廉的(low-cost)硬件上;而且它提供高吞吐量(high throughput)来访问应用程序的数据,适合那些有着超大数据集(large data set)的应用程序。HDFS放宽了(relax)POSIX的要求,可以以流的形式访问(streaming access)文件系统中的数据。Hadoop的框架最核心的设计就是:HDFS和MapReduce。HDFS为海量的数据提供了存储,而MapReduce则为海量的数据提供了计算 [1] 。
一、绪论
1 大数据5v特点
Volume(大量)、Valocity(高速)、Variety(多样)、Value(低价值密度)、Veracity(真实性)
2 Google三驾马车
GFS:可扩展的大型数据密集型应用的分布式文件系统
MapReduce:超大集群的简单数据处理
BigTable:结构化数据的分布式存储系统
3 Hadoop的特点
- 扩容能力:能可靠的存储和处理PB级数据
- 成本低:可通过普通用计算机组成的集群来处理数据,总计可达上千个节点
- 高效率:在节点上并行数据以使数据非常快
- 可靠性:能自动的维护数据的多份复制,并在任务失败后能自动的重新部署计算任务
4 Hadoop生态系统 (教材p6)
- HDFS:分布式存储,为整个Hadoop系统提供数据存储功能
- MapReduce:分布式计算框架
- HBase:构建在HDFS上的NoSQL数据库
- Zookeeper:Hadoop组件管理端
- Pig:包含Pig Latin,对MapReduce的抽象
- Hive:将结构化数据文件映射为数据表,提供SQL语句,将SQL翻译为MapReduce语句进行查询
二、HDFS架构
1 Hadoop三大基本组件
- HDFS:分布式文件系统,用于数据存储
- YARN:统一资源管理和调度系统,用于管理集群的计算资源并根据计算框架的需求进行调度,支持包含MapReduce、Spark、Flink等多种计算框架
- MapReduce:分布式计算框架,运行于YARN之上
2 HDFS特性和局限性(教材p38)
- 一次写入多次读取,不支持并发写入,并发读取性能很高
- 不支持文件修改
- 不支持缓存,每次读取文件需从硬盘上重新读取,但是对于大文件顺序读取性能影响不大
- 不适合存储小文件
3 主从架构(Master/Slave)
Slave:存储文件的Block,有多个Salve Node
Master:存储文件的元数据(Mate Data)
文件读取过程:
- 先访问Master,询问是否有某文件
- 如果有,则获取到该文件的块以及快的位置、
- 下载各个块,并组合成完整的文件
基本的名词:
- NameNode:主节点(Master),管理元数据
- SecondaryNameNode:辅助NameNode完成某些耗时功能,解放NameNode性能,无法替代NameNode
- DataNode:从节点(Slave),存储文件的Block
数据划分为Block(大小:默认128MB、同一个块会备份到多个(默认三个)DataNode中存储)
元数据:
- 内存元数据:meta data,用于元数据查询
- 硬盘元数据镜像文件:fsimage,持久化存储元数据(大文件)
- 数据操作日志:edits,HDFS文件增删会造成元数据更改,将更改记录到edits(小文件),可运算出元数据(计算量很大)
4 元数据管理机制(教材p35)
- 系统启动时,读取fsimage和edits质内存,形成内存元数据meta data
- client向NameNode发起数据增删查请求
- NameNode接收到请求后,在内存元数据中执行增删查操作,并向client返回操作结果
- 如果是增删操作,则同时记录数据操作日志edits
- 使用Sencondary NameNode,在适当的时机将操作日志合并到fsimage中(CheckPoint过程)
5 HDFS高可用性(HA模式)(教材p34)
- 允许配置两个相同的NameNode一个为active mode处于活动模式,另一个为standby mode处于待机模式
- 两个NameNode数据保持一致,一旦活动节点失效,则由待机节点切换为活动节点,保证Hadoop的正常运行
- 两个NameNode之间的数据共享可使用NFS或Quorum Journal Node实现
- 备注:HA模式中,CheckPoint通过Standby NameNode实现,不需要再配置SecondaryNameNode
- 备注:JournalNode是轻量化的节点,用于两个NameNode之间的通信,需要配置3个以上节点
6 心跳机制(重要)
- 心跳机制:DataNode与NameNode之间的通信通过心跳机制完成
- 心跳过程:
- 由DN向NN主动发出请求,并附上需要报告给NN的信息;NN被动回复,并附上需要传达给DN的信息或指令
- register:DN启动时,将自身信息(hostname,version等)发送给NN
- block report:将block的信息汇报给NN,使得NN可以维护block和DN之间的映射关系
DN周期性send heartbeat:
- 向NN报告剩余存储空间等信息
- 执行NN返回的指令,如:增删block
- 如果NN没有收到DN周期性heartbeat,则认为该DN已经失效,NN会将失效节点中的block重新备份到其他的DN
7 HDFS数据读写机制(重要)(教材p40)
写入机制:
- 用户客户端请求Hadoop客户端,并执行文件上传
- 上传的文件写入到Hadoop客户端的临时目录中,每当写入的数据量越过block边界时(hadoop1.x缺省64mb,hadoop2.x缺省128mb),请求NN申请数据块
- NN向Hadoop客户端返回block的位置
- Hadoop客户端直接将block写入指定的DN
读取机制:
- 用户客户端请求Hadoop客户端,请求返回指定文件
- Hadoop客户端向NameNode发起读文件请求
- NN查询meat data 并返回文件对应的block位置(心跳机制不会返回失效的DN位置)
- Hadoop客户端直接向DN请求block数据,获取到所有block后合并成文件
HDFS应用
8 Hadoop安装类型
- 单机模式(Stand-Alone Mode):运行在单独的JVM中便于调试
- 伪分布式集群模式(Pseudo-Distributed Cluster):各节点安装在不同的Java进程中便于模拟集群环境
- 多节点集群安装模式(Multi-Node Cluster Installation):各节点安装在不同的系统中,是可用于生产的集群环境
9 安装大致的流程
- 使用虚拟机(VirtualBox或VM)
- 创建多个虚拟机,并安装CentOS
- 配置虚拟机网络
- 配置ssh远程登录
- 下载安装JDK并配置
- 下载安装Hadoop
- 配置Hadoop
- 关闭防火墙
- 启动HDFS
10 常用的虚拟机
VMware,Oracle Virtualbox,Xen,KVM,Hyper-v,Genymotion
11 SSH免密配置原理
在主节点生成公/私钥对,将公钥传给其他节点
12 HDFS JavaAPI
HDFS Java API是HDFS命令的抽象,支持远程访问HDFS;应用程序能够以和读写本地数据系统相同的方式从HDFS读取数据,或者将数据写入到HDFS
13 HDFS命令(重要)
常见命令-ls,-get,-copyToLocal,-put,-copyFromLocal
基本的Linux命令 ls pwd cd vi
使用命令时常见的错误command not found,文件/目录未找到……,文件已存在
三 、YARN
1. 主从节点
Resourcemanager,NodeManager,也是其守护进程(教材74)
2. 基于hadoop 2.0的架构(MRv2)
3. 主要的名词Resourcemanager,NodeManager,ApplicationMaster,Container,Job(教材75)
- Resourcemanager:集群中各个结点的管理者,接收Client请求,执行一级调度scheduler
- NodeManager:集群中单个节点的代理,执行任务Job,执行二级调度ApplicationMaster
- Container(容器):
- YARN的资源表示模型,CPU,内存,网络等资源分配给Container,由Container提供给其中的任务
- Application和ApplicationMaster均需要计算资源,均运行在Container中
- 用户提供的Job以Application的方式得以运行
- ApplicationsManager:运行在ResourceManager中,管理YARN中所有的ApplicationMaster
- ApplicationMaster:
- 管理一个Application,运行在NodeManager的Container中
- 每个Application都由一个ApplicationMaster负责管理
- 接收Container的进度汇报,为Container请求资源
- ApplicationMaster通过心跳向ResoureManager汇报Application进度和资源状态
- Job:用户提交至YARN的以此计算任务,由client提交至ResourceManager
- 每个作业对应一个Application(MapReduce)
- 作业的每个工作流对应一个Application(Spark),效率更高
- 多用户共享一个长期Application(Apache Slider),系统响应更快
4. YARN的工作流程(教材75-76)
1. Client向RM提交作业a(Job)
2. RM在调度器(scheduler)中创建一个AppAttempt用以管理作业a的调度
3. NM1向RM提交心跳,RM通过ApplicationManager将作业a的AM分配到NM1
4. RM通过RPC调用NM1中的startContainer方法,在NM1中为作业a启动Container(作业的0号容器)
5. NM1在Container0中为作业a启动AM
6. AM向ApplicationsManager发起请求注册并初始化自身,计算自身资源,并向RM发起资源请求
7. RM将AM的资源请求放入scheduler资源队列中,由scheduler分配资源,获得资源后向指定的NM分配相应的Container(资源以Container的形式分配),等下一次心跳
8. AM向RM发送心跳
9. RM返回ApplicationsManager已经分配好的Container
10. AM向对应的NM发起RPC调用,启动已分配的Container
- 一个Application的第一个Container由ApplicationsManager启动并运行一个AMaster,其他的Container由AMaster启动并执行Application
11. Container启动后,用于执行用户的作业Application,并向AM汇报,AMaster负责整个Application中Container的生命周期管理
12. AM为Container向RM请求资源
13. 作业执行完毕,AM向RM申请注销资源
5.主从架构和双层调度范式,谁是一级调度,谁是二级调度(重要)主要在PPT上
- 一级调度:Resourcemanager—接收作业,在指定NM节点上启动AM,在scheduler中执行调度算法为AM分配资源,管理各个AM
- 二级调度:ApplicationMaster—运行在NM上,向RM请求资源,接收RM的资源分配,在NM上启动Container,在Container中执行Application,并监控Application的执行状态
四、 MapReduce
1. MapReduce的运行过程,分为(MapTask和ReduceTask)两个部分分开讨论(重要)
MapTask:
- InputData:HDFS中输入的数据
- InputSplit:数据分片,每个map操作一个InputSplit
- InputFormat:负责读取InputSplit和执行键值对拆分
- Mapper:收到InputFormat后的键值对,执行map过程
- Combiner:对map过程的键值对进行一次处理以减少输出至Reduce的数据量,相当于map本地的reduce
ReduceTask:
- Partition:确定map的输出键和reduce的映射关系,Partition前有一个Barrier(完毕后才能进入Reducer同部障),保证所有Mapper执行完毕
- Shuffle:将map的输出键传输到指定的reduce中(reduce主动拉取),一个键对应一个reducer
- Sort:将传输给Reduce的键值排序并组合成序列
2. MapReduce代码(二次排序不考)(重要)
-
常见的键值对数据类型,Text,IntWritable,FloatWritable
-
MapReduce算法设计(回答的方式见作业1)
根据需求设计Map的输入/输出键值对和Reduce的输出对/输出键值对
五 、HBase
1.Hbase 特点:
列式存储、空值不占存储空间、存储字节序列,没有数据类型、适合大型稀疏矩阵……
2. 重要的名词
主从架构:HMaster HRegionServer
重要名词
- Clinet:与HMaster和HRegionServer通信
- 与HMaster进行通信进行管理类安装
- 与HRegionServer进行数据读写类操作
- HMaster:由Zookeeper选举创建,保证集群中始终有一个HMaster,不存在单点故障
- 管理用户对表的CRUD操作
- 管理HRegionServer的负载均衡,调整Region分布,HRegionServer故障时,负责HRegionServer的迁移
- HRegionServer:负责响应用户I/O请求,向HDFS文件系统中读写数据
- 每个HRegion对应Table中一个Region(域),HRegion由多个HStore组成,每个HStore对应一个Column Family(列族);每个数据表中一个Region的列族数据存放在同一个文件(HFile)中,将具有相同IO特性的列放在同一个列族会更加高效
- HStore:
- HBase存储核心,由MemStore和StoreFile组成
- MemStore:Sorted Memory Buffer经过排序的内容缓冲区
- StoreFile:HDFS中的文件,用于存储一个Region中同一个列族中的数据,默认大小为256M
- Region的划分是按照连续的RowKey划分的
- RowKey的增删会造成Region大小的变化,超出一定阈值后,Region会进行拆分和合并;进而会使Region下的StoreFile产生变化(Split和Compact)
- 不考虑StoreFile文件的数据丢失问题
- HDFS提供了文件存储的可靠性
- HBase存储核心,由MemStore和StoreFile组成
- ZkooKeeper:是一个(通用)分布式应用程序协同服务,以Fast Paxos算法为基础,本身亦提供高可用性,可以允许半数以内的节点出现故障
- Zookeeper也可以用于在其他分布式系统中进行组件的注册与管理
- HBase使用Zookeeper作为其协同服务组件
3. HBase Shell,简单的Shell命令
- get ‘表名’,‘键(行)名’:获取一行数据
- put ‘表名’,‘键(行)名’,‘列族:列名’,‘值’:插入数据
- describe ‘表名’:查看表列族描述
- list :列出所有表
- delete ‘表名’,‘键名’,‘列名’:删除某个数据
4. HBase表(列、列族和行键)的设计原则(PPT第5章1~2页)(重点)
- 列族设计原则
- 不宜设计过多的列族,1~2个列族即可
- 不同列族数据规模的差距,列族的势
- ROWKEY(行键)设计原则
- 避免使用单调(递增/递减)行键
- 固定前缀+ID,便于区分和管理不同种类的数据
- 行键名与列(族)名设计
- 最短化行键、列族和列名(数据索引名:rowkey+column family+column+timestamp)
六、Hive
1. 什么是Hive,Hive的特点
- Hive是一个构建在Hadoop上的数据仓库框架,它是应Facebook每天产生的海量新兴社交网络数据进行管理和机器学习的需求而产生和发展的
- 特点:
- 延迟高,适合高吞吐量、批量、海量数据处理
- 语法和SQL相似,学习成本低,避免去写复杂的MapReduce,缩短开发周期
- 支持自由的扩展集群的规模,一般不需要重启服务
- Hive支持自定义函数,用户可以根据自己的需求去定义函数
- 良好的容错性,部分节点出现问题,SQL仍然可以成功的执行
2 . HiveQL
- 定义:一种类AQL语言,语法功能类似AQL语言
- 工作流程:用户通过HiveQL实现Hive表的查询,HiveQL编译成MapReduce程序提交到YARN执行,从HDFS中查询数据
3 . 为什么使用关系数据库,Hive内嵌的关系数据库是什么
MetaStore是Hive用来负责管理元数据的组件,Hive的元数据存储在关系型数据库中,支持Derby、MySQL等;
默认为Derby,内嵌在Hive中,无需单独安装
MySQL性能更好,可多人共享协作,实际使用更多