大数据面试题之Hadoop

1.NameNode在启动的时候会做哪些操作
NameNode数据存储在内存和本地磁盘,本地磁盘数据存储在fsimage镜像文件和edits编辑日志文件

首次启动NameNode
1.格式化文件系统,为了生成fsimage镜像文件
2.启动NameNode
(1)读取fsimage文件,将文件内容加载进内存
(2) 等待DataNode注册与发送block report
3.启动DataNode
(1) 向NameNode注册
(2) 发送block report
(3) 检查fsimage中记录的块的数量和block report中的块的总数是否相同
4.对文件系统进行操作(创建目录,上传文件,删除文件等)
(1)此时内存中已经有文件系统改变的信息,但是磁盘中没有文件系统改变的信息,此时会将这些
改变信息写入edits文件中,edits文件中存储的是文件系统元数据改变的信息。

第二次启动NameNode
1.读取fsimage和edits文件
2.将fsimage和edits文件合并成新的fsimage文件
3.创建新的edits文件,内容为空
4.启动DataNode

2.Secondary NameNode了解吗?它的工作机制是怎样的
Secondary NameNode 是合并NameNode的edit logs到 fsimage文件中;
它的具体工作机制:

(1)Secondary NameNode询问NameNode是否需要checkpoint。直接带回NameNode
是否检查结果
(2) Secondary NameNode请求执行checkpoint
(3) NameNode滚动正在写的edits日志
(4) 将滚动前的编辑日志和镜像文件拷贝到Secondary NameNode
(5) Secondary NamenNode加载编辑日志和镜像文件到内存,并合并
(6) 生成新的镜像文件fsimage.chkpoint
(7) 拷贝fsimage.chkpoint 到 NameNode
(8)NameNode 将fsimage.chkpoint 重新命名成fsimage
所以如果NameNode中的元数据丢失,是可以从Secondary NameNode 恢复一部所以如果NameNode中的元数据丢失,是可以从Secondary NameNode恢复一部分元数据信息的,但是不是全部,因为Namenode正在写的edits日志还没有拷贝到Secondary NameNode,这部分恢复不了

3.Secondary NameNode 不能恢复NameNode的全部数据,那如何保证NameNode数据存储安全
这个问题就要说 NameNode 的高可用了,即 NameNode HA 一个 NameNode 有单点故障的问题,那就配置双 NameNode,配置有两个关键点,一是必须要保证这两个 NN 的元数据信息必须要同步的,二是一个 NN 挂掉之后,另一个要立马补上。

元数据信息同步在 HA 方案中采用的是“共享存储”。每次写文件时,需要将日志同步写入共享存储,这个步骤成功才能认定写文件成功。然后备份节点定期从共享存储同步日志,以便进行主备切换。

监控 NN 状态采用 zookeeper,两个 NN 节点的状态存放在 ZK 中,另外两个 NN 节点分别有一个进程监控程序,实施读取 ZK 中有 NN 的状态,来判断当前的 NN 是不是已经 down 机。如果 standby 的 NN 节点的 ZKFC 发现主节点已经挂掉,那么就会强制给原本的 active NN 节点发送强制关闭请求,之后将备用的 NN 设置为 active。

如果面试官再问 HA 中的 共享存储 是怎么实现的知道吗?
可以进行解释下:NameNode 共享存储方案有很多,比如 Linux HA, VMware FT, QJM 等,目前社区已经把由 Clouderea 公司实现的基于 QJM(Quorum Journal Manager)的方案合并到 HDFS 的 trunk 之中并且作为默认的共享存储实现基于 QJM 的共享存储系统主要用于保存 EditLog,并不保存 FSImage 文件。FSImage 文件还是在 NameNode 的本地磁盘上。QJM 共享存储的基本思想来自于 Paxos 算法,采用多个称为 JournalNode 的节点组成的 JournalNode 集群来存储 EditLog。每个 JournalNode 保存同样的 EditLog 副本。每次 NameNode 写 EditLog 的时候,除了向本地磁盘写入EditLog 之外,也会并行地向 JournalNode 集群之中的每一个 JournalNode 发送写请求,只要大多数 (majority) 的 JournalNode 节点返回成功就认为向 JournalNode 集群写入EditLog 成功。如果有2N+1 台 JournalNode,那么根据大多数的原则,最多可以容忍有 N台 JournalNode 节点挂掉

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Hadoop是一个用于处理大规模数据的开源框架,它不仅是大数据技术的核心重点,也是面试中经常会问到的问题之一。Hadoop包含了Hadoop框架本身以及Hadoop生态系统中的其他辅助框架,如zookeeper、Flume、Hbase、Hive、Sqoop等。在一个正常工作的Hadoop集群中,需要启动多个进程来完成不同的任务。这些进程包括: 1. NameNode:负责管理HDFS(Hadoop分布式文件系统)的元数据,如文件的目录结构和文件块的位置信息。 2. DataNode:负责存储实际的数据块,并向NameNode报告块的状态。 3. ResourceManager:负责管理集群上的资源分配和任务调度,协调不同应用程序之间的资源竞争。 4. NodeManager:负责管理每个节点上的资源,接收来自ResourceManager的指令,启动和监控容器,执行具体的任务。 5. SecondaryNameNode:定期从NameNode中复制元数据,用于恢复NameNode的故障。 6. JobTracker:负责任务调度和资源管理,监控任务的执行并重新调度失败的任务。 7. TaskTracker:在每个节点上运行,负责执行特定的任务,如Map任务或Reduce任务。 这些进程协同工作,以实现Hadoop集群的分布式计算和数据存储。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* [大数据开发面试题详解:Hadoop的运行原理](https://blog.csdn.net/xx666zz/article/details/85708344)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] - *2* *3* [2021最全大数据面试题汇总---hadoop篇,附答案!](https://blog.csdn.net/weixin_45574790/article/details/119241157)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值