葵花宝典------Hadoop
-
-
-
-
-
- 1. hdfs读写流程
- 2. hdfs的体系结构
- 3. 一个datanode 宕机,怎么一个流程恢复
- 4. hadoop 的 namenode 宕机,怎么解决
- 5. namenode对元数据的管理
- 6. 元数据的checkpoint
- 7. yarn资源调度流程
- 8. hadoop中combiner和partition的作用
- 9. 用mapreduce怎么处理数据倾斜问题?
- 10. shuffle 阶段,你怎么理解的
- 11. Mapreduce 的 map 数量 和 reduce 数量是由什么决定的 ,怎么配置
- 12. MapReduce优化经验
- 13. 分别举例什么情况要使用 combiner,什么情况不使用?
- 14. 简单描述一下HDFS的系统架构,怎么保证数据安全?
- 15. 在通过客户端向hdfs中写数据的时候,如果某一台机器宕机了,会怎么处理
- 16. Hadoop优化有哪些方面
- 17. 大量数据求topN(写出mapreduce的实现思路)
- 18. 列出正常工作的hadoop集群中hadoop都分别启动哪些进程以及他们的作用
- 19. Hadoop总job和Tasks之间的区别是什么?
- 20. Hadoop高可用HA模式
- 21. 简要描述安装配置一个hadoop集群的步骤
- 22. fsimage和edit的区别
- 23. yarn的三大调度策略
-
-
-
-
1. hdfs读写流程
hdfs写流程
1、客户端跟namenode通信请求上传文件,namenode检查目标文件是否已存在,父目录是否存在
2、namenode返回是否可以上传
3、client请求第一个 block该传输到哪些datanode服务器上
4、namenode返回3个datanode服务器ABC
5、client请求3台dn中的一台A上传数据(本质上是一个RPC调用,建立pipeline),A收到请求会继续调用B,
然后B调用C,将真个pipeline建立完成,逐级返回客户端
6、client开始往A上传第一个block(先从磁盘读取数据放到一个本地内存缓存),以packet为单位,A收到一个
packet就会传给B,B传给C;A每传一个packet会放入一个应答队列等待应答
7、当一个block传输完成之后,client再次请求namenode上传第二个block的服务器。
hdfs读流程
1、client跟namenode通信查询元数据,找到文件块所在的datanode服务器
2、挑选一台datanode(就近原则,然后随机)服务器,请求建立socket流
3、datanode开始发送数据(从磁盘里面读取数据放入流,以packet为单位来做校验)
4、客户端以packet为单位接收,现在本地缓存,然后写入目标文件
2. hdfs的体系结构
1、hdfs有namenode、secondraynamenode、datanode组成。为n+1模式
2、NameNode负责管理和记录整个文件系统的元数据
3、DataNode 负责管理用户的文件数据块,文件会按照固定的大小(blocksize)切成若干块后分布式存储在若干
台datanode上,每一个文件块可以有多个副本,并存放在不同的datanode上,Datanode会定期向Namenode
汇报自身所保存的文件block信息,而namenode则会负责保持文件的副本数量
4、HDFS的内部工作机制对客户端保持透明,客户端请求访问HDFS都是通过向namenode申请来进行
5、secondraynamenode负责合并日志
3. 一个datanode 宕机,怎么一个流程恢复
Datanode宕机了后,如果是短暂的宕机,可以实现写好脚本监控,将它启动起来。如果是长时间宕机了,
那么datanode上的数据应该已经被备份到其他机器了,那这台datanode就是一台新的datanode了,
删除他的所有数据文件和状态文件,重新启动。
4. hadoop 的 namenode 宕机,怎么解决
先分析宕机后的损失,宕机后直接导致client无法访问,内存中的元数据丢失,但是硬盘中的元数据应该还存在,
如果只是节点挂了,重启即可,如果是机器挂了,重启机器后看节点是否能重启,不能重启就要找到原因修复了。
但是最终的解决方案应该是在设计集群的初期就考虑到这个问题,做namenode的HA。
5. namenode对元数据的管理
namenode对数据的管理采用了三种存储形式:
1、内存元数据(NameSystem)
2、磁盘元数据镜像文件(fsimage镜像)
3、数据操作日志文件(可通过日志运算出元数据)(edit日志文件)
6. 元数据的checkpoint
每隔一段时间,会由secondary namenode将namenode上积累的所有edits和一个最新的fsimage下载到本地,
并加载到内存进行merge(这个过程称为checkpoint)
namenode和secondary namenode的工作目录存储结构完全相同,所以,当namenode故障退出需要重新恢复时
可以从secondary namenode的工作目录中将fsimage拷贝到namenode的工作目录,以恢复namenode的元数据
7. yarn资源调度流程
1、用户向YARN 中提交应用程序, 其中包括ApplicationMaster 程序、启动ApplicationMaster 的命令、
用户程序等。
2、ResourceManager 为该应用程序分配第一个Container, 并与对应的NodeManager 通信,要求它在这个
Container 中启动应用程序的ApplicationMaster。
3、ApplicationMaster 首先向ResourceManager 注册, 这样用户可以直接通过ResourceManage 查看
应用程序的运行状态,然后它将为各个任务申请资源,并监控它的运行状态,直到运行结束,即重复步骤4~7
4、ApplicationMaster 采用轮询的方式通过RPC 协议向R