Hadoop及MapReduce常见面试题

Hadoop常见面试题

1. 简要描述如何安装配置一个开源的Hadoop?

答:准备一台服务器,设置SSH免密登录(补充:hadoop 的进程之间通信使用ssh 方式,需要每次都要输入密码。为了实现自动化操作,需要配置SSH 的免密码登录方式),关闭防火墙,安装JDK,解压hadoop,之后配置hadoop一些核心文件(hadoop-env.sh,core-site.xml,mapred-site.xml,hdfs-site.xml) ,配置hadoop环境变量,格式化hadoop namenode-format,启动节点start-all.sh

2. Hadoop中需要哪些配置文件,其作用是什么?

1.core-site.xml:
(1)HDFS的路径
(2)namenode,datanode,secondarynamenode等存放数据的公共目录,用户也可以自己单独指定其目录
2.hadoop-env.sh
(1)只需设置jdk的安装路径
3.hdfs-site.xml
(1)文件块的副本个数
(2)datanode节点储存在文件系统的目录
(3)namenode节点储存hadoop文件系统信息的本地系统路径
4.mapred-site.xml
(1)yarn指定mr运行在yarn上

3. 请列出正常工作的Hadoop集群中Hadoop都分别需要启动哪些进程,他们的作用分别是什么?

1.namenode它是hadoop中的主服务器,储存文件的元数据,如文件名,文件目录结构,文件属性以及每个文件的块列表和块所在的datanode等。
2.secondarynamenode用来监控HDFS状态的辅助后台程序,每隔一段时间获取HDFS元数据的快照。
3.datanode负责管理连接到节点的储存(一个集群可以有多个节点)。每个储存数据的节点运行一个datanade守护进程。
4.resourcemanager:负责调度datanode上的工作(具体:处理客户端的请求,资源的分配与调度,监控nodemanager,启动或监控applicationmaster)
5.nodemanager:管理单个节点上的资源,处理来自resourcemanager的命令,处理来自applicationmaster的命令。

4. 简述hadoop的几个默认端口及其含义

1.namenode:50070
2.secondarynamenode:50090
3.resourcemanager:8088

5. HDFS的存储机制(读取和写入过程)

写入过程

1.客户端通过Distributed FileSystem模块向NameNode请求上传文件,NameNode检查目标文件是否已存在,目录是否存在。
2.NameNode返回是否可以上传。
3.客户端请求第一个 Block上传到哪几个DataNode服务器上。
4.NameNode返回3个DataNode节点,分别为dn1、dn2、dn3。
5.客户端通过FSDataOutputStream模块请求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步)。读取过程
(1)客户端通过Distributed FileSystem向NameNode请求下载文件,NameNode通过查询元数据,找到文件块所在的DataNode地址。
(2)挑选一台DataNode(就近原则(网络拓扑-节点距离计算))服务器,请求读取数据。
(3)DataNode开始传输数据给客户端(从磁盘里面读取数据输入流,以Packet为单位来做校验)。
(4)客户端以Packet为单位接收,先在本地缓存,然后写入目标文件。

6. namenode与secondarynamenode的区别于联系?

(1)区别:
namenode负责管理整个文件系统的元数据,以及每一个路径(文件)所对应的数据块信息
secondarynamenode主要用于定期合并命名空间镜像和命名空间镜像的编辑日志
(2)联系:
secondarynamenode中保存了一份和namenode一致的镜像文件(fsimage)和编辑日志(edits)
在主namenode发生故障时,可以从secondarynamenode恢复数据

7. 服役新数据节点和退役旧节点步骤

需求:随着公司业务的增长,数据量越来越大,原有的数据节点的容量已经不能满足存储数据的需求,需要在原有集群基础上动态添加新的数据节点。
服役新节点具体步骤

  • 直接启动DataNode,即可关联到集群
  • 如果数据不均衡,可以用命令实现集群的再平衡
    退役旧数据节点
    添加白名单(添加到白名单的主机节点,都允许访问NameNode,不在白名单的主机节点,都会被退出。)
    (1)在NameNode的/opt/module/hadoop-2.7.2/etc/hadoop目录下创建dfs.hosts文件
    (2)在NameNode的hdfs-site.xml配置文件中增加dfs.hosts属性
    (3)配置文件分发
    (4)刷新NameNode
    黑名单退役(在黑名单上面的主机都会被强制退出。)
    (1)在NameNode的/opt/module/hadoop-2.7.2/etc/hadoop目录下创建dfs.hosts.exclude文件
    (2)在NameNode的hdfs-site.xml配置文件中增加dfs.hosts.exclude属性
    (3)刷新NameNode、刷新ResourceManager
    (4)检查Web浏览器,退役节点的状态为decommission in progress(退役中),说明数据节点正在复制块到其他节点。

7.namenode挂了怎么办

将secondarynamenode中数据拷贝到namenode存储数据的目录:

猜你喜欢

转载自blog.csdn.net/weixin_43957334/article/details/107037712