大数据面试(HDFS)

第4章HDFS
4.1 HDFS 的读写流程细节?HDFS 中的 fsimage 里面存储的是什么信息?副本的存放策略?
答:这个大家最好回家准备一个详细的流程图然后根据自己的图讲给面试官看

4.2 HDFS 的机架感知?
答:根据副本的存放策略,HDFS 是如何知道多个不同 node 是否在同一个机架上呢 ?在namenode 启动时如果 net.topology.script.file.name 配置的参数不为空,表示已经动机架感知,当 datanode 注册时和 heartbeat 时,会把 datanode 的 ip 作为参数传入,返回信息为此datanode 的机架信息。如果没有参数配置,datanode 统一为默认的机架 /default-rack

4.3 如果 Client 节点就在 HDFS 中的一台 DataNode 节点上,副本的数据又是如何存储的?
答案:存放在当前的 DN 上,其他的和副本的存放的策略一样,第二个副本存放在和第一个副本不同的机架上的节点上,第三个副本存放在同第二个副本相同的机架的不同的节点上
4.4 datanode 在什么情况下不会备份数据
答:在客户端上传文件时指定文件副本数量为1,但是基本我们做大数据都是设置副本的数量是,这个还要根据自己公司的情况而定。
4.5 combine 合并出现在哪个过程
答:shuffle 过程中具体来说,combine 之不过是一个特殊的 reduce 而已,并且发生在本地,累加 map 里面 key 的值然后发给 reduce 处理
4.6 hdfs 的体系结构
答:集群架构:
namenode datanode secondarynamenode journalnode zkfc 这个是简单的基本架构,在文章末尾我会找一下架构图形提供给大家参考。
4.7 三个 datanode 中当有一个 datanode 出现错误时会怎样?
答:Namenode 会第一时间通过心跳发现 datanode 下线,并且通过副本策略将这个 datanode 上的block 快重新发送分配到集群中并且重新复制一份保持每个 block 块的副本数量不变。在此同事运维团队一定要第一时间被通知到处理这个问题,尽快维修上线
4.8 HDFS 存储机制,以及各个模块的职责
答:HDFS 主要是一个分布式的文件存储系统,由 namenode 来接收用户的操作请求,然后根据文件大小,以及定义的 block 块的大小,将大的文件切分成多个 block 块来进行保存,这里存在的优化问题点比较多,前期处理不好可能会造成后期的数据倾斜比较严重。
Namenode是一个中心服务器:单一节点(简化系统的设计和实现),负责管理文件系统的名字空间(namespace)以及客户端对文件的访问。
DataNode用来存储数据。
SecondaryNameNode 用来监控HDFS状态的辅助后台程序,每隔一段时间获取HDFS元数据的快照。

4.9 关于 SecondaryNameNode 哪项是正确的? 答案 C

a) 它是 NameNode 的热备
b) 它对内存没有要求
c) 它的目的是帮助 NameNode 合并编辑日志,减少 NameNode 启动时间
d) SecondaryNameNode 应与 NameNode 部署到一个节点
4.10 配置机架感知[M3] 的下面哪项正确 答案 ABC
a) 如果一个机架出问题,不会影响数据读写
b) 写入数据的时候会写到不同机架的 DataNode 中
c) MapReduce 会根据机架获取离自己比较近的网络数据
4.11 Client 端上传文件的时候下列哪项正确 答案 BC
a) 数据经过 NameNode 传递给 DataNode
b) Client 端将文件切分为 Block,依次上传
c) Client 只上传数据到一台 DataNode,然后由 NameNode 负责 Block 复制工作
4.12 hdfs是否了解?hdfs具体在哪查看?
HDFS(Hadoop Distributed File System),它是一个文件系统,用于存储文件,通过目录树来定位文件;其次,它是分布式的,由很多服务器联合起来实现其功能,集群中的服务器有各自的角色。
HDFS的设计适合一次写入,多次读出的场景,且不支持文件的修改。适合用来做数据分析,并不适合用来做网盘应用。
HDFS的优点:
1)高容错性
(1)数据自动保存多个副本。它通过增加副本的形式,提高容错性;
(2)某一个副本丢失以后,它可以自动恢复。
2)适合大数据处理
(1)数据规模:能够处理数据规模达到GB、TB、甚至PB级别的数据;
(2)文件规模:能够处理百万规模以上的文件数量,数量相当之大。
3)流式数据访问,它能保证数据的一致性。
4)可构建在廉价机器上,通过多副本机制,提高可靠性。
HDFS的缺点:
1)不适合低延时数据访问(实时交互),比如毫秒级的存储数据,是做不到的。
2)无法高效的对大量小文件进行存储。
(1)存储大量小文件的话,它会占用NameNode大量的内存来存储文件、目录和块信息。这样是不可取的,因为NameNode的内存总是有限的;
(2)小文件存储的寻址时间(10ms)会超过读取时间,它违反了HDFS的设计目标。
3)不支持并发写入、文件随机修改。
(1)一个文件只能有一个写,不允许多个线程同时写;
(2)仅支持数据append(追加),不支持文件的随机修改。

1)通过图形界面查看
http://linux01:50070/explorer.html#/
2)通过命令:hdfs dfs -ls /
4.13 resource Manager在哪查看
yarn.resourcemanager.webapp.address:8088
4.14 hdfs的小文件优化
1、HDFS小文件弊端:
HDFS上每个文件都要在namenode上建立一个索引,这个索引的大小约为150byte,这样当小文件比较多的时候,就会产生很多的索引文件,一方面会大量占用namenode的内存空间,另一方面就是索引文件过大是的索引速度变慢。
2、解决的方式:
(1)Hadoop本身提供了一些文件压缩的方案。
(2)从系统层面改变现有HDFS存在的问题,其实主要还是小文件的合并,然后建立比较快速的索引。
3、Hadoop自带小文件解决方案
(1)Hadoop Archive:
是一个高效地将小文件放入HDFS块中的文件存档工具,它能够将多个小文件打包成一个HAR文件,这样在减少namenode内存使用的同时。
(2)Sequence file:
sequence file由一系列的二进制key/value组成,如果为key小文件名,value为文件内容,则可以将大批小文件合并成一个大文件。
(3)CombineFileInputFormat:
CombineFileInputFormat是一种新的inputformat,用于将多个文件合并成一个单独的split,另外,它会考虑数据的存储位置。
4、小文件优化(实战经验)
对于大量小文件Job,可以开启JVM重用会减少45%运行时间。
JVM重用理解:一个map运行一个jvm,重用的话,在一个map在jvm上运行完毕后,jvm继续运行其他jvm
具体设置:mapreduce.job.jvm.numtasks值在10-20之间。
4.15 描述HDFS写数据的流程
1)客户端向namenode请求上传文件,namenode检查目标文件是否已存在,父目录是否存在。
2)namenode返回是否可以上传。
3)客户端请求第一个 block上传到哪几个datanode服务器上。
4)namenode返回3个datanode节点,分别为dn1、dn2、dn3。
5)客户端请求dn1上传数据,dn1收到请求会继续调用dn2,然后dn2调用dn3,将这个通信管道建立完成
6)dn1、dn2、dn3逐级应答客户端
7)客户端开始往dn1上传第一个block(先从磁盘读取数据放到一个本地内存缓存),以packet为单位,dn1收到一个packet就会传给dn2,dn2传给dn3;dn1每传一个packet会放入一个应答队列等待应答
8)当一个block传输完成之后,客户端再次请求namenode上传第二个block的服务器。(重复执行3-7步)
4.16 secondary namenode / HAnamenode 是如何工作的?
1、 secondary namenode 在 namenode 的 edits log 文件超过规定值(默认 64M)时,或者每隔3600秒(默认值)时会剪切 edits log 文件,复制 namenode 上的 fsimage文件(若没有 fsimage)。
2、 namenode 节点创建一个新的 edits 文件。
3、 将 edits log 文件及 fsimage 文件进行合并为一个新 fsimage。
4、 将 fsimage 文件回传至 namenode 节点。
5、 Namenode 节点使用 seconday namenode 节点回传的 fsimage 文件覆盖本地的fsimage 文件。
6、 当 namenode 节点启动时可以从 seconday namenode 节点复制 fsimage 文件达到快速启动的目的。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值