其他分享
首页 > 其他分享> > hdfs面试资料结合学习笔记

hdfs面试资料结合学习笔记

作者:互联网

1. 写数据读数据

2. 为什么HDFS不支持存储小文件?

原因

  1. 占用NameNode大量的内存和磁盘来存储文件目录和块信息
  2. 读取小文件的寻址时间大于读取小文件内容的时间

解决方案

  1. 从根源上解决小文件的产生,如从每小时抽取一次修改为每天抽取一次来积累数据量
  2. 合并。写一个MR任务将小文件合并
如果是下载:`hadoop fs -getmerge 小文件目录 下载的目录`
如果是追加一个文件到已经存在的文件末尾就是`hdfs  dfs  -appendToFile  文件  要追加末尾的文件`

3. HDFS三个核心组件是什么,分别有什么作用?

4. fsimage和edit是做什么用的?

5. Linux中的块大小为4kb,为什么HDFS中块大小为64MB或128MB?

6. 并发写入HDFS文件可行吗?

不行,因为客户端通过namenode接收到在数据块上写入的许可后,那个块会锁定直到写入操作完成,所以不能在同一个块上写入。

7. HDFS 放置副本的策略?

8. namenode的工作机制?

9. DataNode工作机制?

(1) 一个数据块在DN上以文件形式存储在磁盘上,包括两个文件,一个是数据本身,一个是元数据包括数据的长度,块数据的校验和,以及时间戳。
(2) DN启动后向NN注册,通过后,周期性(1小时)的向NN上报所有块信息。
(3) 心跳是每3秒一次,心跳返回结果:带有NN给该DN的命令,如复制块数据到另一台机器,或删除某个数据块。
如果超过10分钟没有收到某个DN,则认为该节点不可用。
(4) 集群运行中可以安全加入和退出一些机器。

10. HDFS文件系统有什么特点?

11. 有一个200M的文件写入hdfs是先写128M复制完之后再写72M还是全部写完再复制?

HDFS上在写入数据的时候,首先会对数据切块,然后从客户端到datanode形成一个管道,在至少将一个文件写入hdfs上后,
表示文件写入成功,然后进行复制备份操作,所以是全部写完再复制。

12. 什么是机架感知?

NN通过读取我们的配置来配置各个结点所在的机架信息

13. 什么时候会用到机架感知?

数据的流水线复制和HDFS复制副本时

14. HDFS数据完整性如何保证?

NN与DN会定期通过文件的校验和检查文件的完整性,如果发现某节点上的某文件校验和不一致,就会从其他结点上恢复损失的文件,
从而保证数据的完整性。

15. 什么是HDFS文件系统?

HDFS是大数据开源框架Hadoop的组件之一,全称(Hadoop Distributed File System),他是一个分布式文件系统,
由多台服务器联合起来实现文件存储功能,通过目录树来定位文件,集群中的服务器有各自的角色。

16. 什么时候进入安全模式?安全模式下集群有什么限制?安全模式下集群在做什么?如何查看进入、退出、等待安全模式?

bin/hdfs dfsadmin -safemode get 查看
bin/hdfs dfsadmin -safemode enter 进入
bin/hdfs dfsadmin -safemode leave 离开
bin/hfds hdfsadmin -safemode wait 等待

17. 单机模式(standalone)中的注意点?

在单机模式中不会存在守护进程,所有东西都运行在一个JVM上。这里同样没有DFS,使用的是本地文件系统。单机模式适用于开发过程中运行MapReduce程序,
这也是最少使用的一个模式。

18. 伪分布式模式中的注意点?

伪分布式模式(Pseudo)适用于开发和测试环境,在这个模式中,所有守护进程都在同一台机器上运行。

19. 全分布模式又有什么注意点?

全分布模式通常被用于生产环境,这里我们使用N台主机组成一个Hadoop集群,Hadoop集群,Hadoop守护进程运行在每台主机之上。
这里会存在NameNode运行的主机,DN运行的主机,以及Task Tracker运行的主机。在分布式环境下,主节点和从节点会分开。

20. Hadoop有哪些发行版本?

Apache:最原始的版本。
Cloudera:在大型互联网企业中用的较多。
Hortonworks:文档较好。

21. 启动集群时,我们要对NN格式化操作,为什么只格式化操作一次?

因为格式化NN,就会产生新的集群id,导致NN和DN的集群id不一致,集群找不到以往数据,现象:DN无法正常启动。
所以重写格式化NN时,一定要先删除data数据和log日志,然后再格式化NN后再启动集群。

22. 启动集群的相关命令有哪些?

(1) 启动集群之前格式化
hdfs name -format
(2) 启动HDFS服务

  1. 启动namenode
    sbin/hadoop-daemon.sh start/stop namenode
  2. 启动datanode
    sbin/hadoop-daemon.sh start/stop datanode
    检查namenode的web页面是否可以访问:http://192.168.200.132:9870
  3. 启动YARN服务
    (1) 启动resourcemanager
    sbin/hadoop-daemon.sh start/stop resourcemanager
    (2) 启动nodemanager
    sbin/yarn-daemon.sh start/stop nodemanager
    检查yarn的web页面,http://192.168.132:8088
  4. 开启历史服务
    sbin/ mr-history-daemon.sh start/stop historyserver
  5. 实现了集群的群停和群起
    (1) HDFS服务进程
    配置etc/hadoop/slaves
    群起的命令:start-dfs.sh
    群停的命令:stop-dfs.sh
    (2) yarn服务进程
    配置etc/hadoop/slaves
    群起的命令:start-yarn.sh
    群停的命令:stop-yarn.sh
    (3) start/stop-all.sh

23. HDFS文件操作的命令有哪些?

hadoop fs/hdfs dfs 命令分类
本地文件 -> HDFS:
-put
-copyFromLocal
-moveFromLocal
-appendToFile

HDFS与HDFS之间:
-ls
-mkdir
-rm
-rmr
-rm -r
-cp
-mv
-chown
-chmod
-du -h
-df -h
-cat

HDFS -> 本地:
-get
-getmerge
-copyToLocal

其他:
-setrep
-help

23. 是否可以再Windows上运行Hadoop?

最好不要,因为会出现各种问题。
最佳操作系统:Red Hat Linux或Ubuntu

24. 是否可以在不同集群之间复制文件?如何做到?

用distcp命令
hadoop distcp hdfs://hadoop102:9000/user/hello.txt hdfs://hadoop103:9000/user/hello.txt
将集群hadoop102上的文件赋值到hadoop103上。

25. 简述hadoop的几个默认端口及含义?

dfs.namenode.http-address:50070
SecondaryNameNode辅助名称结点端口号:50090
fs.defaultFS:9000(datanode将发送心跳到namenode的端口)
yarn.resourcemanager.webapp.address:8088
historyserver:19888

26. datanode可以设置多目录存储数据吗?怎么实现?

可以,并且设置多目录存储数据不一样。
编辑hdfs-site.xml文件,添加如下配置项,这里块数据会分布存储再data1和data2目录中

<property>
    <name>dfs.name.data.dir</name>
    <value>file:///dfs/data1,file:///dfs/data2</value>
</property>

27. 公司用hadoop的哪个版本?运行hadoop需要什么平台和哪个JDK的版本?

hadoop2.x比较多,因为企业追求的时稳定性,也有历史兼容问题。越旧的软件,维护的成本越大
运行hadoop需要Linux操作平台,JDK1.8版本

28. 当两个用户尝试访问HDFS中的同一文件并修改时会发生什么?

HDFS上的文件只支持单用户操作,第二个用户会被拒绝。

29. 关于ssh的免密登录?

  1. 生成密钥 ssh-keygen -t rsa
  2. 发送私钥 ssh-copy-id localhost(本机)
  3. 采用非对称加密算法,采用rsa加密算法

30. 谈谈什么是hadoop?

Hadoop是一个开源软件框架,用于存储大量数据,并发计算/查询结点的集群上的数据
Hadoop包括以下内容:

31. HDFS默认数据块大小是什么,为什么?

Hadoop1.x是64M, Hadoop2.x中是128M
因为目前磁盘的传输率约为100M/s,而HDFS读取文件时最佳的寻址时间为10ms,
寻址时间为传输时间的百分之1时最佳,所以定义块的大小为128M,1秒左右可以读取完毕,
本质上HDFS的块大小取决于磁盘的读取效率,真实情况下,会根据文件大小和集群结点的数量综合考虑块的大小。

32. 默认情况下,进行checkpoint(合并镜像及编辑日志)的触发条件是什么?

默认情况下,2NN每小时执行一次checkpoint
默认情况下,一分钟检查一次Edits文件的操作次数,当操作次数达到一百万时,2NN执行一次checkpoint

33. 工作中如果namenode发生故障,导致namenode中的元数据丢失,如何恢复数据?

34. 配集群的过程中如果发现各台服务器的datanode启动后,过一段时间后自动消失了,查看原因发现datanode的集群id不同于namenode的集群id,

这时,如果让集群正常工作,如何处理?

35. 列出hadoop集群中hadoop需要启动哪些进程及作用?

(1) namenode
(2) datanode
(3) secondary namenode
(4) resourcemanager: 统一资源调度和管理器。处理客户端请求,监控NodeManager,启动或监控ApplicationMaster, 资源的分配与调度。
(5) nodemanager:提供计算资源管理单个结点上的资源处理来自ResourceManager的命令,处理来自ApplicationMaster的命令。

36. namenode是怎么确定datanode能够正常工作的?他们之间是怎么保持联系的?

dn会向nn注册,nn返回注册成功;
之后每小时dn向nn上传块信息,每3秒dn向nn发送一次心跳包,并携带nn给dn的命令,
默认情况下,如果超过10分30秒nn没有收到dn的心跳,则任务dn掉线。

37. 刷新nn的命令是什么?刷新resourcemanager的命令是什么?

hdfs dfsadmin -refreshNodes
yarn rmadmin -refreshNodes

38. 现要在原有hadoop集群的基础之上要求扩展两个结点,如果操作?

(1) 从现有集群的任意服务器克隆两台服务器,修改主机名和ip地址
(2) 删除集群hadoop3.1.2目录下的data,logs目录
(3) 修改/etc/hosts文件,增加本机的主机,ip映射关系
(4) 将/etc/hosts分发到其他服务器
(5) 配置ssh免密登录
(6) 登录dn和nn

39. 公司有100台服务器组成的集群,由于疫情期间业务骤减,现需要减少10台服务器,如何退役这些结点,有哪种方式退役?

本业务场景适合使用黑名单

步骤:
1. 可以在hadoop-3.1.2/etc/hadoop目录下创建黑名单dfs.hosts.exclude文件
2. 在dfs.hosts.exclude文件中添加要退役的服务器名称
3. 在hdfs-site.xml文件中添加黑名单的配置
<property>
    <name>dfs.hosts.exclude</name>
    <value>黑名单文件绝对路径</value>
</property> 
4. 刷新NN,刷新ResourceManager
hdfs  dfsadmin  -refreshNodes
yarn  dfsadmin  -refreshNodes

标签:hdfs,结点,HDFS,NN,文件,笔记,面试,集群,namenode
来源: https://www.cnblogs.com/jsqup/p/15963368.html