hdfs面试题目大全

1、Hadoop 特性优点?

(1)扩容能力
(2)成本低
(3)高效率
(4)可靠性

2、Hadoop的核心组件是哪些?

(1)HDFS
(2)MapReduce
(3)Yarn

3、Hadoop目前有几个版本?

目前hadoop有1.x、2.x、3.x。三个版本

4、HDFS分布式文件系统集群的角色主要有?

NameNode、DataNode、SecondaryNameNode

5、Yarn资源调度系统集群的主要角色是哪些?

ResourceManager、NodeManager

6、Hadoop部署的方式分别是哪几种?

Standalone mode(独立模式)
Pseudo-Distributed mode(伪分布式模式)
Cluster mode(群集模式)

7、网络同步时间的命令?

ntpdate cn.pool.ntp.org

8、设置主机名在哪一个文件中?

/etc/sysconfig/network

9、配置IP、主机名映射的文件是哪一个?

/etc/hosts

10、编译hadoop需要准备的步骤有哪些?

(1)准备linux环境
(2)虚拟机联网,关闭防火墙,关闭selinux
(3)安装jdk1.7
(4)安装maven
(5)安装findbugs
(6)在线安装一些依赖包
(7)安装protobuf
(8)安装snappy
(9)下载cdh源码准备编译

11、hadoop安装包目录包括哪些文件夹,各有什么作用?

(1)bin:Hadoop最基本的管理脚本和使用脚本的目录
(2)etc:Hadoop配置文件所在的目录
(3)include:对外提供的编程库头文件
(4)lib:该目录包含了Hadoop对外提供的编程动态库和静态库
(5)libexec:各个服务对用的shell配置文件所在的目录
(6)sbin:Hadoop管理脚本所在的目录
(7)share:Hadoop各个模块编译后的jar包所在的目录,官方自带示例

12、安装hadoop时需要配置的文件有哪些?

(1)hadoop-env.sh
(2)core-site.xml
(3)hdfs-site.xml
(4)mapred-site.xml
(5)yarn-site.xml
(6)Slaves

13、首次启动 HDFS 时,必须对其进行格式化操作的命令?

bin/hdfs namenode -format或者bin/hadoop namenode –format

14、启动HDFS NameNode的命令?

hadoop-daemon.sh start namenode

15、单节点启动HDFS DataNode?

**hadoop-daemon.sh start datanode**

16、单节点启动YARN ResourceManager?

yarn-daemon.sh start resourcemanager

17、单节点启动YARN nodemanager?

**yarn-daemon.sh start nodemanager**

18、HDFS集群的一键启动和关闭脚本命令分别是什么?

start-dfs.sh启动脚本 stop-dfs.sh 停止脚本

19、yarn集群的一键启动和关闭脚本分别是什么?

start-yarn.sh启动脚本 stop-yarn.sh停止脚本

20、hadoop一键启动和关闭全部包括hdfs和yarn集群的脚本命令是什么?

start-all.sh 启动命令 stop-all.sh 停止命令

21、hadoop中的namenode的webUI端口默认是什么?

默认端口是50070

21、hadoop中的ResourceManager的webUI默认端口是什么?

默认是8088

22、启动jobHistoryserver服务进程的命令?

mr-jobhistory-daemon.sh start historyserver 启动
mr-jobhistory-daemon.sh stop historyserver 关闭

23、jobhistoryserver的webUI访问的默认端口是什么?

默认端口是19888

24、hadoop的垃圾桶机制在哪一个文件中配置的?

core-site.xml文件中配置

25、垃圾桶配置参数是什么?

fs.trash.interval

26、hdfs的主要功能什么?

Hdfs的主要功能作用是分布式存储大量的数据

27、hdfs的主要特性是什么?

(1)Master/slave架构
(2)分块存储
(3)名字空间
(4)元数据管理
(5)数据存储
(6)副本机制
(7)一次写入,多次读出

28、hdfs的shell客户端操作命令分别代表什么意思?

(8)-ls 显示文件、目录信息
(9)-mkdir 在hdfs上创建目录,-p表示会创建路径中的各级父目录
(10)-put 将单个src或多个srcs从本地文件系统复制到目标文件系统
(11)-get 将文件复制到本地文件系统
(12)-appendFile 追加一个文件到已经存在的文件末尾
(13)-cat 显示文件内容
(14)-tail 将文件的最后的内容
(15)-chmod 改变文件的权限。使用-R将使改变在目录结构下递归进行
(16)-copyFromLocal 从本地文件系统中拷贝文件到hdfs路径去
(17)-copyToLocal 从hdfs拷贝到本地
(18)-cp 从hdfs的一个路径拷贝hdfs的另一个路径
(19)-mv 在hdfs目录中移动文件
(20)-rm 删除指定的文件。只删除非空目录和文件。-r 递归删除
(21)-df 统计文件系统的可用空间信息
(22)-du 显示目录中所有文件大小,当只指定一个文件时显示此文件的大小

29、在hdfs目录下创建一个目录/test ,请写出该命令?

Hadoop fs -mkdir /test

30、设置在hdfs中的目录/test下最多只支持上传3个文件?

hdfs dfsadmin -setQuota 3 /test

31、取消hdfs中目录/test下的文件个数限制

hdfs dfsadmin -clrQuota /test

32、在hdfs中,设置目录/test目录的大小不能超过1GB

hadoop dfsadmin -setSpaceQuota 1g /test

33、在hdfs中,取消/test目录的大小限制?

hadoop dfsadmin -clrSpaceQuota /test

34、NameNode的主要功作用有哪些?

一是管理文件系统文件的元数据信息(包括文件名称、大小、位置、属性、创建时间、修改时间等等)
二是维护文件到块的对应关系和块到节点的对应关系
三是维护用户对文件的操作信息(文件的增删改查)

35、HDFS中数据的写入流程?

(23)client 发起文件上传请求,通过 RPC 与 NameNode 建立通讯,NameNode检查目标文件是否已存在,父目录是否存在,返回是否可以上传;
(24)client 请求第一个 block 该传输到哪些 DataNode 服务器上;
(25)NameNode 根据配置文件中指定的备份数量及副本放置策略进行文件分配,返回可用的 DataNode 的地址,如:A,B,C
(26)client 请求 3 台 DataNode 中的一台 A 上传数据(本质上是一个 RPC 调用,建立 pipeline),A 收到请求会继续调用 B,然后 B 调用 C,将整个pipeline 建立完成,后逐级返回 client;
(27) client 开始往 A 上传第一个 block(先从磁盘读取数据放到一个本地内存缓存),以 packet 为单位(默认 64K),A 收到一个 packet 就会传给 B,B 传给 C;A 每传一个 packet 会放入一个应答队列等待应答。
(28) 数据被分割成一个个 packet 数据包在 pipeline 上依次传输,在pipeline 反方向上,逐个发送 ack(命令正确应答),最终由 pipeline中第一个 DataNode 节点 A 将 pipeline ack 发送给 client;
(29)当一个 block 传输完成之后,client 再次请求 NameNode 上传第二个block 到服务器。

36、HDFS中数据的读取流程?

(30)Client 向 NameNode 发起 RPC 请求,来确定请求文件 block 所在的位置;
(31)NameNode会视情况返回文件的部分或者全部block列表,对于每个block,NameNode 都会返回含有该 block 副本的 DataNode 地址;
(32)这些返回的 DN 地址,会按照集群拓扑结构得出 DataNode 与客户端的距离,然后进行排序,排序两个规则:网络拓扑结构中距离 Client 近的排靠前;心跳机制中超时汇报的 DN 状态为 STALE,这样的排靠后;
(33)Client 选取排序靠前的 DataNode 来读取 block,如果客户端本身就是DataNode,那么将从本地直接获取数据;
(34)底层上本质是建立 Socket Stream(FSDataInputStream),重复的调用父类 DataInputStream 的 read 方法,直到这个块上的数据读取完毕;
(35)当读完列表的 block 后,若文件读取还没有结束,客户端会继续向NameNode 获取下一批的 block 列表;
(36)读取完一个 block 都会进行 checksum 验证,如果读取 DataNode 时出现错误,客户端会通知 NameNode,然后再从下一个拥有该 block 副本的DataNode 继续读。
(37)read 方法是并行的读取 block 信息,不是一块一块的读取;NameNode 只是返回Client请求包含块的DataNode地址,并不是返回请求块的数据;
(38)最终读取来所有的 block 会合并成一个完整的最终文件。

你可能感兴趣的:(hdfs面试题目大全)