HDFS面试篇2

hdfs读写过程
(一)写数据流程
1).客户端发出请求 hdfs dfs -put /etc/profile /qf/data
2).namenode查看维护的目录结构,检查/qf/data是否存在,如不存在直接报错”no such file or directory“,
如存在返回给客户端同意上传文件请求,将操作写入日志文件
3).客户端请求上传第一个块,询问namenode块的存储位置
4).namenode查看自己的datanode池,返回给客户端一个datanode列表
5).客户端发出请求建立pipeline
6).客户端先把文件写入缓存,达到一个块的大小时,会在客户端和第一个datanode建立连接开始流式的传输数据,
这个datanode会一小部分一小部分(4K)的接收数据然后写入本地仓库,同时会把这些数据传输到第二个datanode,
第二个datanode也同样一小部分一小部分的接收数据并写入本地仓库,同时传输给第三个datanode
(在流式复制时,逐级传输和响应采用响应队列来等待传输结果。队列响应完成后返回给客户端)
7).第一个数据块传输完成后会使用同样的方式传输下面的数据块直到整个文件上传完成。
8).整个文件完成,namenode更新内存元数据
(二)读数据流程
1)客户端向namenode发起RPC调用,请求读取文件数据。
2)namenode检查文件是否存在,如果存在则获取文件的元信息(blockid以及对应的datanode列表)。
3)客户端收到元信息后选取一个网络距离最近的datanode,依次请求读取每个数据块。客户端首先要校检文件是否损坏,如果损坏,客户端会选取另外的datanode请求。
4)datanode与客户端建立socket连接,传输对应的数据块,客户端收到数据缓存到本地,之后写入文件。
5)依次传输剩下的数据块,直到整个文件合并完成。
(★★)hdfs的client 端,复制到第三个副本时宕机,hdfs怎么恢复保证下次写第三副本?block块信息是先写 dataNode 还是先写 nameNode?
Datanode会定时上报block块的信息给namenode ,namenode就会得知副本缺失,然后namenode就会启动副本复制流程以保证数据块的备份
Client向NameNode发起文件写入的请求。NameNode根据文件大小和文件块配置情况,返回给Client它所管理部分DataNode的信息。Client将文件划分为多个Block,根据DataNode的地址信息,按顺序写入到每一个DataNode块中。

(★)Client 端上传文件的时候下列哪项正确
A、数据经过 NameNode 传递给 DataNode
B、Client 端将文件切分为 Block,依次上传
C、Client 只上传数据到一台 DataNode,然后由 NameNode 负责 Block 复制工作
答案 B
分析:Client 向 NameNode 发起文件写入的请求。NameNode 根据文件大小和文件块配置情况,返回给 Client 它所管理部分 DataNode 的信息。Client 将文件划分为多个 Block,根据 DataNode 的地址信息,按顺序写入到每一个DataNode 块中。具体查看HDFS 写数据流程。

  1. HA高可用
    (★★)HDFS HA 需要secondary namenode吗,灾难恢复流程
    不需要 当启用HDFS HA时会启动多台NameNode但是只有一台处于活跃状态,尽管其他NameNode处于休眠但是依旧通过ZKFC与活跃NameNode进行元数据同步,当活跃NameNode挂掉时通过zookeeper重新选举一个NameNode接替
    (★)HadoopHA 集群中,各个服务的启动和关闭的顺序
    启动流程:先启动zookeeper,再启动hdfs,然后启动yarn最后单独启动resourcemanager
    关闭流程:先关闭hdfs,再关闭yarn,然后单独关闭resourcemanager,最后关闭zookeeper

  2. 常见问题
    (★)hdfs运维是常见问题(zabix,ganglia)
    磁盘损坏:在规模集群中由于IO读写频繁,造成磁盘经常损坏,出现该问题可将坏的磁盘umount下即可,由于hdfs检查副本丢失一份,会自动复制一份。坏掉的磁盘如果修复好后,格式化后可在插入到磁盘槽中
    添加新的服务器:由于添加新的服务器,原有的服务器中的数据过多,但新的服务器中的数据可能数据却很少,会造成负载不均匀,这个时候可以使用hdfs的reblance方法对数据进行重新负载
    (★)HDFS 的常用 shell 命令有哪些?分别对应哪些 Client Java API?:显示文件列表、创建目录、文件上传与下载、文件内容查看、删除文件
    答:显示文件列表: hdfs dfs –ls Java:listStatus
    创建目录:hdfs dfs -mkdir
    Java:mkdirs
    文件上传与下载:hdfs dfs –put [-r] java: copyToLocalFile
    hdfs dfs –get Java: copyFromLocalFile
    文件内容查看:hdfs dfs –cat[-AbeEnstTuv] [–help] [–version]
    Java:listStatus
    删除文件:hdfs dfs –rm [–r] [–f] Java:delete

(★)因为 HDFS 有多个副本,所以 NameNode 是不存在单点问题的。(错误)
https://blog.csdn.net/nankangren123/article/details/20924681
(★)Hadoop1.0 和 2.0 都具备完善的 HDFS HA 策略。(错误).
2.0有完善的HA
(★)HDFS 中的 block 块默认保存几份?默认大小多少?
3份,128M
(★★)HDFS,replica 如何定位
您可以使用HDFS命令行来ls文件。
输出的第二列将显示文件的复制因子。
例如,
$ hdfs dfs -ls /usr/GroupStorage/data1/out.txt
-rw-r–r-- 3 hadoop zma 11906625598 2014-10-22 18:35 /usr/GroupStorage/data1/out.txt
out.txt的复制因子是3。
方法2:使用stathdfs命令工具获取复制因子。
以上述文件为例:
$ hdfs dfs -stat %r /usr/GroupStorage/data1/out.txt
它会打印出来 3
(★)hadoop dfsadmin –report 命令用于检测 HDFS 损坏块。(错误)
此命令用于查看hadoop的状态信息
Configured Capacity: 0 (0 B)
Present Capacity: 0 (0 B)
DFS Remaining: 0 (0 B)
DFS Used: 0 (0 B)
DFS Used%: NaN%
Under replicated blocks: 0
Blocks with corrupt replicas: 0
Missing blocks: 0
Codec File Extension Splittable? Degree of Compression Compression Speed
Gzip .gz No Medium Medium
Bzip2 .bz2 Yes High Slow
Snappy .snappy No Medium Fast
LZO .lzo No, unless indexed Medium Fast
(★★★)hdfs 的数据压缩算法

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值