1.hadoop是什么
广义就是hadoop生态圈,狭义就是单指hadoop
2.hadoop三大组件是什么?分别做什么
HDFS 存储
MapReduce 计算
YARN 资源和作业调度平台 计算组件都会on yarn
3.hdfs在部署时,要配置信任关系,请问root和hadoop用户部署时,区别是什么
root的权限最高,可以不用管,普通用户需要修改
非root权限 要记得chmod 600 authorized_keys
4.hdfs三个进程是什么
NN:名称节点
DN:数据节点
SNN: 第二名称节点
5.一个文件500M,请问多少个块
500/128=3.90625 所以需要4块
6.假如副本数为3,上题中的实际存储为多少
3*500 =1500M
7.谈谈你们对hdfs读和写流程的理解 有什么不一样
读是inputStream
写是outputStream
读流程:
1、客户端发送请求,调用DistributedFileSystem API的open方法发送请求到Namenode,获得block的位置信息,因为真正的block是存在Datanode节点上的,而namenode里存放了block位置信息的元数据。
2、Namenode返回所有block的位置信息,并将这些信息返回给客户端。
3、客户端拿到block的位置信息后调用FSDataInputStream API的read方法并行的读取block信息,图中4和5流程是并发的,block默认有3个副本,所以每一个block只需要从一个副本读取就可以。
4、datanode返回给客户端。
写流程:
1、客户端发送请求,调用DistributedFileSystem API的create方法去请求namenode,并告诉namenode上传文件的文件名、文件大小、文件拥有者。
2、namenode根据以上信息算出文件需要切成多少块block,以及block要存放在哪个datanode上,并将这些信息返回给客户端。
3、客户端调用FSDataInputStream API的write方法首先将其中一个block写在datanode上,每一个block默认都有3个副本,并不是由客户端分别往3个datanode上写3份,而是由
已经上传了block的datanode产生新的线程,由这个namenode按照放置副本规则往其它datanode写副本,这样的优势就是快。
4、写完后返回给客户端一个信息,然后客户端在将信息反馈给namenode。
5、需要注意的是上传文件的拥有者就是客户端上传文件的用户名,举个例子用windows客户端上传文件,那么这个文件的拥有者就是administrator,和linux上的系统用户名不是一样的。
8.nn是做什么的
NameNode: 文件系统的命名空间(面试题)
1.文件名称
2.文件目录结构
3.文件的属性(权限 创建时间 副本数)
4.文件对应哪些数据块-->数据块对应哪些分布在哪些DN节点上 列表
存储在内存上
9.dn是做什么的
DataNode: 存储数据块+ 数据块的校验和
与NN通信:
1.每隔3秒发送1次心跳
2.每隔10次心跳发送一次blockReport
存储在磁盘上
10.snn是做什么的
SecondaryNameNode: 当HA时,SNN不存在了
存储: 命令空间镜像文件fsimage + 编辑日志editlog
作用: 定期合并 fsimage +editlog 为新的fsimage,推送给NN,称为检查点 checkpoint
参数: dfs.namenode.checkpoint.period 3600s
11.谈谈副本放置策略,客户端假如为DN节点,那么第一个副本在哪
放当前dn节点
12.谈谈对jps命令的理解
jps就是把/tmp下对应用户的进程信息显示出来,并不代表实际的进程信息
13.谈谈对pid文件的理解
pid文件记录了进程的ID
14.shell脚本编写第一行是什么
#!/bin/bash
15.怎样动态变量
``
16.if判断要注意什么
if判断里的条件开头和结尾都要空格
17.调试哪两种
在shell脚本第一行添加 -x
sh -x shellName
18.root用户想要使用hadoop执行 date命令,请问命令和参数是什么
su - hadoop -c data