hadoop一些面试可能问的东西
hadoop一些面试可能问的东西
一、Hadoop 1.x、2.x、3.x的区别
# Hadoop 1.x时代,MapReduce同时处理业务逻辑运算和资源的调度,耦合度较大
# Hadoop 2.x时代,将MapReduce加以拆分,分成了只负责逻辑运算的MapReduce和只负责资源调度的yarn
# Hadoop 3.x时代,组成上没有什么变化
二、常用端口号
# Hadoop 3.x
# HDFS NameNode内部通常端口:8020/9000/9820
# HDFS NameNode对用户的查询端口:9870
# Yarn查看任务运行情况的:8088
# 历史服务器:19888# Hadoop 2.x
# HDFS NameNode内部通常端口:8020/9000
# HDFS NameNode对用户的查询端口:50070
# Yarn查看任务运行情况的:8088
# 历史服务器:19888
三、常用配置文件
# Hadoop 3.x
# core-site.xml
# hdfs-site.xml
# yarn-site.xml
# mapred-site.xml
# workers# Hadoop 2.x
# core-site.xml
# hdfs-site.xml
# yarn-site.xml
# mapred-site.xml
# slaves
四、HDFS文件块(Block)大小
# HDFS中的文件在物理上是分块存储(Block),块的大小可以通过配置参数(dfs.blocksize)来规定
# 默认大小在Hadoop 2.x以上版本中是128M,老版本中是64M# Block块的默认值为128m,是基与最佳损耗理论得出来的
# 最佳传输损耗理论:在一次传输中,寻址时间占用总传输时间的1%时,本次传输的损耗最小,为最佳性价比传输
# 目前硬件的发展条件,普通磁盘写的速率大概为100M/S,寻址时间一般为10ms
# 10ms / 1% = 1000ms = 1s
# 1s * 100M/s = 100M
# Blocak块在传输时,每64k还需要校验一次,因此必须是2的n次方,所以最接近100M的就是128M
块的大小不能太小,也不能太大
# 太小,会增加寻址时间,程序一直在找块的开始位置
# 太大,从磁盘传输数据的时间明显大于定位这个块开始位置所需的时间# HDFS块的大小主要取决于磁盘的传输速率
五、HDFS读写数据
1) HDFS写数据流程
# 1) 当有数据需要存储到HDFS时,HDFS客户端就会创建一个分布式的文件系统Distributed FileSystem
# 该文件系统会向NameNode发送请求上传文件的请求
# NameNode收到该请求会检查该目录树是否有权限、目录是否存在
# 2) NameNode响应给客户端是否可以上传文件
# 3) 客户端请求NameNode返回存储Block的DataNode节点
# 4) NameNode返回存储数据的节点
# 5) 客户端创建管道流FSDataOutputStream,请求连接DataNode集群的通道
# 6) DataNode会返回一个应答成功
# 7) 以packet(64k)为单位传送数据
# packet大小为chunk的512字节+校验位的4字节
# 数据传输是一边存储一边传送(先从磁盘读取数据放到一个本地内存缓存)
# 8) 客户端关闭管道流并向NameNode发送传送完成
节点距离计算
# 节点距离=两个节点距离共同祖先的距离的总和
①同一节点上的进程
Distance(d1/r1/n0,d1/r1/n0)=0
②同一机架上的不同节点
Distance(d1/r1/n1,d1/r1/n2)=2
③同一集群不同机架节点
Distance(d1/r2/n0,d1/r3/n2)=4
④不同集群节点
Distance(d1/r2/n1,d2/r4/n1)=6
2) HDFS读数据流程
# 1) 当有数据需要从HDFS下载时,HDFS客户端就会创建一个分布式的文件系统Distributed FileSystem
# 通过该文件系统向NameNode发送下载请求
# 2) NameNode接收到请求判断该用户是否具有下载权限和HDFS文件系统中是否有该文件
# 向客户端返回目标文件的元数据
# 3) 客户端创建管道流FSDataOutputStream,请求连接DataNode读数据
# 读数据的原则是
# ①选择节点距离最近的节点读取数据,然后剩下得节点随机选择
# ②负载均衡原则
# 4) 返回传输的数据,客户端以packet为单位接收数据,先在本地缓存,然后写入目标文件
六、NameNode和Secondary NameNode工作机制
# NameNode
# (1) 如果第一次启动NameNode,创建镜像文件fsimage和追加的日志文件edits
# 如果不是第一次,直接加载fsimage和edits到内存
# (2) 客户端对元数据进行操作
# (3) 先记录操作日志,然后加载到内存
# (4) 在内存对数据进行操作# Secondary NameNode
# (1) 每隔一段时间就会询问NameNode是否需要CheckPoint请求
# (2) 当定时时间到或者edits中的数据满了,就会请求执行CheckPoint操作
# (3) 这时会将NameNode中的edits复制出一份新的作为后续操作的记录
# edits和fsimage同时复制到Secondary NameNode
# (4) 在Secondary NameNode中将edits和fsimage同时加载到内存进行合并,生成一个后缀名为.chkpoint的新文件
# (5) 将这份文件复制到NameNode中并覆盖fsimage成为新的镜像文件
最新文章
- 外媒:谷歌将推Google Play中国定制版
- Facebook将于周二推出拯救生命新工具
- Java接口及接口继承
- ConcurrentHashMap原理,在JKD7和JDK8版本的区别
- 【JKD源码】String 三兄弟
- 汉澳sinox不受openssl心血漏洞影响并分析修复其漏洞代码
- 【Spring源码】4. 自己搞个标签?~自定义标签保姆级全过程(图解向,堆图预警)
- 十分钟学习nfs服务器
- NFS服務器
- Windows系统安装搭建ios开发环境
- 渗透测试类型(白盒测试、黑盒测试)和漏洞扫描器
- Caused by: com.alibaba.nacos.shaded.io.grpc.netty.shaded.io.netty.channel.AbstractChannel$AnnotatedC
- CentOS7安装教程,简单几步,小白也能上手装!
- 什么是MVC设计模式???
- 04
- UML入门1:事物和事物关系简介
- 斯德哥尔摩的照片七:城市漫步(中)
- 视频编解码 — H264结构
- 【现代控制理论】传递函数建立状态空间表达式
- ROS2使用OpenCV基础