1、Hadoop是什么?
是一个大数据分析处理平台。
HDFS:分布式文件存储系统==
MapReduce:分布式计算框架==
Yarn:集群资源管理和任务调度
#资源指的是和程序运行相关的硬件资源
cpu ram内存#任务调度
什么是调度-->集群资源繁忙的时候 如何分配资源给各个程序
调度的关键是策略:先来后到 权重
2、Hadoop的优点
扩容能力强 -->这间接导致了成本低
不注重单机能力,看中集群的整体能力可靠性高 --> 后面很多体现了它的可靠性(副本机制,应答响应机制,)
通用性强 --> 技术是通用的,业务是不通的
3、Hadoop集群介绍
两个集群物理上在一起,逻辑上分离
HDFS集群(主从架构)
namenode,
datanode,
secondarynamenode
YARN集群(主从架构)
resouecrmanager(RN)
nodemanager(NM)我们常说的Hadoop集群指的是什么?
指的是HDFS集群 和 YARN集群
为什么没有MapReduce集群?
MapReduce是计算的,取决于你写不写代码
4、HDFS核心特性(几乎必问)
1、分布式多台机器存储
--数据量很大,纵向有上限,横向是没有上限的
2、这台机器只有1024T的内存,文件刚好1025T,怎么办?
--分块存储的
--可以对块并行操作,提高效率
3、快速找到文件被放在哪个位置
--元数据
4、刚好这台被雷给咔嚓了
--数据备份(replication)注意: 一次写入多次读写,没有编辑修改功能
5、HDFS文件上传流程(几乎必问)
如何记这个流程:
1、client发送请求,首先这个请求是发给谁的?
2、namenode的作用是什么
3、namenode接受请求后直接同意吗?
4、开始上传
1、三副本机制
2、块,包,管道机制
3、可靠
1、ACK应答响应机制
2、在传输过程中,某一个DN挂掉了怎么办?
小文件吃内存不吃磁盘
zookeeper:任意一个客户端访问首先访问的任意一个服务器节点,如果是查看操作,follower都可以处理,如果是写操作,需要先转发再处理
hdfs:不管干什么,第一步先连接namenode。
客户端和namenode不在一台机器上:
namenode装在node1上,客户端指向hdfs发起请求的机器,比如node3
RPC-->远程过程调用协议
RPC-->远程过程调用协议
RPC-->远程过程调用协议
namenode的作用:
NN维护文件系统的元数据
NN记录维护DN的健康状态
1、DN的磁盘使用率
2、DN是否存活
上传:管道机制(pipeline)
client -->a-->b-->c
请求上传:NN判断是否具备上传条件
权限
路径是否正常检查
客户端采用一次上次一个块数据包:64k
靠谱的机制:
1、ACK应答响应机制:保证数据的完整性
发送队列--接受队列2在上传过程中,pipeline可能出现故障断开连接
HDFS认为只要上传成功一个就是成功的,剩下的缺失的有NN指定其它DN进行复制即可
如果一个都没有上传成功,DN会告诉NN,让NN重新分配上传数据
HDFS三副本机制
1、第一个块优先本地,否则就近随机
2、第二块和第一个块不同机架,随机
3、第三个块和块在同一个机架,不同机器前提条件是机架感知
如果没有机架感知,或者副本数不是3
--》第一块优先本地,其它随机
6、HDFS下载流程
流程如何记住:
1、客户端发送请求,namenode检查权限和文件位置
2、汇总文件位置(近的靠前,状态良好的靠前)
3、数据块传输,最后通过CRC循环冗余码校验将数据拼接成原本的文件不管是访问,上传,下载都需要访问namenode
那namenode为什么知道这些信息呢?
DN不停的汇报,心跳机制。高可用--就是解决NN挂掉了如何解决--DN挂掉了问题不大,有副本机制
NN拿到文件各个块所放的信息后,会进行排序,近的靠前,状态良好的靠前。
7、NN,DN职责概述
记忆版:
namenode将元数据加载在内存中()
namenode只会永久的记录目录树的结构
并不会永久的记录文件的数据块位置信息
这些位置信息需要通过datanode汇报才能够知道。
namenode和datanode有通信机制
1、注册加汇报:datanode启动后,会想namenode注册(告诉老大我启动成功了),并且告诉老大我手里有那些块
2、心跳机制:DN定时像NN汇报自己存活 3秒
数据块汇报机制:定时告诉NN我手里有那些个块 6小时
完整版:
1、NameNode并不持久化存储每个文件中各个块所在的DataNode的位置信息,这些信息会在系统启动时从数据节点重建。
2、NameNode是Hadoop集群中的单点故障。
3、NameNode所在机器通常会配置有大量内存(RAM)。什么是单点故障?
8、namenode元数据管理机制
1、namenode管理的是什么?
文件系统的目录树结构,文件各个块的位置,大小,副本数等等
DN的健康状态
磁盘使用率
是否存活
--这里以及开始汇总了。老是忘记DN的健康状态
2、重点关注和文件系统相关的元数据
1、为了客户端查询元数据快速,namenode把元数据保存在内存中
2、内存的弊端
断电数据丢失如何解决?
3、持久化元数据到磁盘上fsimage
如何避免两次持久化操作中间的数据丢失
编辑日志 edits log
日志的目的是出错之后可以根据日志重演操作记录恢复数据
内存中的元数据==fsimage+edits log
1、如何避免fsimage不会太旧
2、如何避免edits1og不会太大
3、如何不影响namenode正常服务。--》将fsimage和edits log合并是非常耗费内存的辅助角色--- 其主要职责帮助nameNode进行元数据的合并==。
9、secondarynamenode如何合并(面试常问)
每达到触发条件,会由secondary namenode将namenode上积累的所有edits和一个最新的fsimage下载到本地,并加载到内存进行merge(这个过程称为checkpoint)
为什么不把namenode和secondarynamenode放在一个机器上?
namenode管理元数据放在内存中
secondarynamenode合并元数据是放在内存中
都消耗内存,不能放在一起。
10、HDFS辅助工具
#跨集群复制操作
hadoop distcp hdfs://node1:8020/1.txt hdfs:node5:8020/itcast
前缀 档案名称 档案目录 输出到哪里去
test.har h代表hadoop ar代表归档
#创建档案
hadoop archive -archiveName test.har -p /small /outputdir