HDFS面试题

面试题
找了一些面试题,解析在最下面,都是一些自己理解和网上的一些解释,慎重参考

1.HDFS 中的 block 默认保存几份?()?
A.3 份
B.2 份
C.1 份
D.不确定

2.HDFS 默认 BlockSize 是()
A.32MB
B.64MB
C.128MB

3 .Client 端上传文件的时候下列哪项正确?()
A.数据经过NameNode传递DataNode
B.Client端将文件切分为Block,依次上传
C.Client只上传数据到一台DataNode,然后由NameNode负责Block复制工作

4.下面哪个程序负责 HDFS 数据存储?()
A.NameNode
B.JobTracker (ResourceManager ApplicationMaster)
C.DataNode
D.SecondaryNameNode
E.tasktracker (NodeManager)

5.关于 SecondaryNameNode 哪项是正确的?
a)它是 NameNode 的热备
b)它对内存没有要求
c)它的目的是帮助 NameNode 合并编辑日志,减少 NameNode 启动时间
d)SecondaryNameNode 应与 NameNode 部署到一个节点

6.Hadoop集群可以运行的3个模式?

7.一个datanode 宕机,怎么恢复?

8.Hadoop 的 namenode 宕机,怎么解决?

9.Namenode死掉后SecondaryNameNode 可以临时替代它的工作?

9.简述Combine和partition

10.如何用命令确认hadoop集群的健康状况
hadoop dfsadmin -report

集群搭建,Namenode,datanode,secondarynamenode工作机制,等等一些原理。

答案

面试题解析
副本存放
第一个block副本放在client结点所在机架的datanode里(如果client不在集群范围内,则这第一个node是随机选取的,当然系统会尝试不选择哪些太满或者太忙的node)。
第二个block副本放置在与第一个datanode节点相同的机架中的另一个datanode中(随机选择)。
第三个block副本放置于另一个随机远端机架的一个随机datanode中。

切片划分
如果文件剩余长度>128*1.1,切分下一个切片
如果文件剩余长度<128M,将剩余的长度划分为一个切片。

hdfs组件成员主要功能
NameNode:接受来自客户端的文件信息,存储文件的元数据,
SecondaryNode:接受来自NameNode中的edits及fsimage,做一个类似于类备份的操作,定期清空edits,减小NameNode的操作压力。
JobTracker: 负责调度分配每一个子任务task运行于TaskTracker上,如果发现有失败的task就重新分配其任务到其他节点。
DataNode:存储实际的数据,汇报存储信息给NameNode。
TaskTracker:踹壳儿运行 Map Task 和 Reduce Task;并与 JobTracker交互,汇报任务状态给JobTracker。
DataNode 和NameNode 是针对数据存放来而言的
JobTracker和TaskTracker是对于MapReduce执行而言的
2、ResourceManager是一个中心的服务,它做的事情是调度、启动每一个Job所属的ApplicationMaster、另外监控ApplicationMaster的存在情况。Job里面所在的task的监控,重启等内容不见了,这就是ApplicationMaster存在的原因。ResourceManager负责作业与资源的调度,接收JobSubmitter提交的作业,按照作业的上下文(context)信息,以及从NodeManager收集来的状态信息,启动调度过程,分配一个Container作为Application Master
3、NodeManager功能比较专一,就是负责Container状态的维护,并向RM保持心跳。
4、ApplicationMaster负责一个Job生命周期内的所有工作,类似老的框架中JobTracker,但注意每一个Job(不是每一种)都有一个ApplicationMaster,他可以运行在ResourceManager以外的机器上.

SecondaryNameNode内存需求和NameNode在一个数量级上,所以通常secondary NameNode(运行在单独的物理机器上)和NameNode运行在不同的机器上。

一个datanode 宕机,怎么恢复?
Datanode宕机了后,如果是短暂的宕机,可以实现写好脚本监控,将它启动起来。如果是长时间宕机了,那么datanode上的数据应该已经被备份到其他机器了,那这台datanode就是一台新的datanode了,删除他的所有数据文件和状态文件,重新启动。
心跳!

Hadoop 的 namenode 宕机,怎么解决?
先分析宕机后的损失,宕机后直接导致client无法访问,内存中的元数据丢失,但是硬盘中的元数据应该还存在,如果只是节点挂了,重启即可,如果是机器挂了,重启机器后看节点是否能重启,不能重启就要找到原因修复了。
但是最终的解决方案应该是在设计集群的初期就考虑到这个问题,做namenode的HA。
提高容错:第一种方式是将持久化存储在本地硬盘的文件系统元数据备份。
第二种方式是运行一个辅助的NameNode(Secondary Namenode)。
第三种 zookeeper提供的高可用(ha)机制。

简述Combine和partition
combine分为map端和reduce端,作用是把同一个key的键值对合并在一起,可以自定义的。combine函数把一个map函数产生的<key,value>对(多个key,value)合并成一个新的<key2,value2>.将新的<key2,value2>作为输入到reduce函数中
这个value2亦可称之为values,因为有多个。这个合并的目的是为了减少网络传输。
map与reduce的例子
map理解为销售人员,reduce理解为销售经理。
每个人(map)只管销售,赚了多少钱销售人员不统计,也就是说这个销售人员没有Combine,那么这个销售经理就累垮了,因为每个人都没有统计,它需要统计所有人员卖了多少件,赚钱了多少钱。
这样是不行的,所以销售经理(reduce)为了减轻压力,每个人(map)都必须统计自己卖了多少钱,赚了多少钱(Combine),然后经理所做的事情就是统计每个人统计之后的结果。这样经理就轻松多了。所以Combine在map所做的事情,减轻了reduce的事情。

partition是分割map每个节点的结果,按照key分别映射给不同的reduce,也是可以自定义的。这里其实可以理解归类。
我们对于错综复杂的数据归类。比如在动物园里有牛羊鸡鸭鹅,他们都是混在一起的,但是到了晚上他们就各自牛回牛棚,羊回羊圈,鸡回鸡窝。partition的作用就是把这些数据归类。只不过在写程序的时候,mapreduce使用哈希HashPartitioner帮我们归类了。这个我们也可以自定义。
shuffle就是map和reduce之间的过程,包含了两端的combine和partition。

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值