Big Data>简答题
文章目录
- 第一部分简答题
- 第二部分简答题
第一部分简答题
- 1.一个文件100M,上传到HDFS占用几个快?一个块128M,剩余的28M怎么办?
事实上,128只是个数字,数据超过128M,便进行切分,如果没有超过128M,就不用切分,
有多少算多少,不足128M的也是一个快。这个快的大小就是100M,没有剩余28M这个概念。
- 2.大数据为什么这么快?与传统数据相比有什么不同点?
a.传统数据纵向扩展,服务器数量不发生变化,配置越来越高,大数据横向扩展,配置不发生变化,服务器数量越来越多b.传统的方式资源(cpu,内存,硬盘)集中,大数据的方式资源分布(相比前提是在同等配置的情况下)c.传统的数据备份方式单份备份,大数据备份方式多份备份d.传统的计算模型是移动数据到程序端,大数据计算模型是移动程序到数据段e.相比之下大数据IO和网络的使用率都非常低,且多节点储存,多节点计算(众人拾柴火焰高)
- 3.如何验证集群是否可用?请说出两种以上方式
a.jps查看进程b.namenode所在节点的IP+50070端口查看HDFS的web界面是否可用c.在HDFS系统中创建一个文件夹或文件,若可以创建则表示集群可以
- 4.Secondary NameNode在HDFS中是什么作用,他能不能替代NameNode
Secondary NameNode主要作用是辅助namenode管理元数据信息,负责辅助NameNode管理工作。他不能替代NameNode
- 5.请说出HDFS副本的存放机制
a.第一份数据存放在客户端b.第二份副本存放的位置与第一份数据在同一机架中,且不再同一节点,按照一定的规则找到一个节点存放c.第三个副本存放的位置是与第一第二分数据副本不再同一机架上,且逻辑与存放副本1和副本2的逻辑距离最近的机架上,按照一定的规则找到一个节点存放
- 6.Namenode的作用
a.维护,管理文件系统的名字空间(元数据信息)b.负责确定指定文件块到具体的DataNode节点的映射关系c.维护管理DataNode上报的心跳信息
- 7.请说出你对HDFS文件系统容量的理解
将多个节点上的容量汇总到一起,拼接成一个大的文件系统,在一个节点上传数据,在其他的节点上都能够访问使用
- 8.hadoop的组成部分有什么?
a.HDFS:海量数据的存储b.MapReduce:海量数据的计算c.YARN:资源调度
- 9.DataNode的作用
负责工作,进行读写数据。 周期向NameNode汇报。负责管理用户的文件数据块(一个大的数据拆分成多个小的数据块)
- 10.请说出YARN的管理者,工作者
a.管理者:ResourceManagerb.工作者:NodeManager
第二部分简答题
1.怎么理解分布式?
分布式就是不同的业务模块部署在不同的服务器上或者一个业务模块拆分成多个子业务,
部署在不同的服务器上,解决高并发的问题分布式计算:是一种计算方法,是将该应用分解成许多小的部分,分配给多台计算机进行处理。这样可以节约整体计算时间,大大提高计算效率。
分布式存储:是一种数据存储技术,通过网络使用企业中的每台机器上的磁盘空间,并将这些分散的存储资源构成一个虚拟的存储设备,数据分散的存储在企业的各个角落,多台服务器
2.hadoop 的组成部分
HDFS 分布式文件存储系统
管理者:NameNode
工作者:DataNode
辅助者:SecondayNameNode分布式离线计算框架 MapReduce Hadoop资源调度器 Yarn
管理者:ResourceManager
工作者:NodeManager
3.HDFS副本存放机制
第一副本来源于客户端
第二副本按照一定规则存放在与第一副本相同机架上的不同节点
第三副本按照一定规则存放在与第一二副本逻辑距离最近的不同机架上的随机节点上
4.Namenode作用
一:维护管理文件系统的命名空间(元数据)
二:维护管理DataNode周期性上报的心跳信息
三:确定用户的文件块指向具体的DataNode结点的映射关系
5.DataNode作用
一:执行数据的读写
二:周期性的向NameNode汇报心跳日志/报告
三:执行数据流水线的复制(一点一点复制)
6.什么是机架感知?
机架感知是一个脚本,记录着主机ip与交换机之前的对应关系
告诉Hadoop集群中哪台机器属于哪个机架
7.什么时候会用到机架感知?
NameNode分配节点的时候
Hadoop集群规模很大的情况下
8.HDFS数据完整性如何保证?
数据在写入之后进行校验和的计算,DataNode周期性进行校验和计算,将计算结果与第一次的结果进行对比。
若相同表示无数据丢失,若不相同表示数据有丢失,丢失进行数据恢复。数据读取之前对数据进行校验,与第一次的结果进行对比。
若相同表示数据没有丢失,可以读取。若不相同表示数据有所丢失。到其他副本读取。
9.HDFS 优点?
1、海量数据存储
HDFS可横向扩展,其存储的文件可以支持PB级别数据2、大文件存储
DFS采用数据块的方式存储数据,将一个大文件切分成多个小文件,分布存储3.高容错性a.数据自动保存多个副本;通过增加副本的形式,提高容错性b.某一个副本丢失以后,可以自动恢复,这是由 HDFS 内部机制实现的4.商用硬件便宜
不需要搭建在昂贵的服务器上,它是设计运行在较廉价(与小型机大型机比)的商业硬件中,实现线性扩展。
10.HDFS缺点?
1.不擅长低延时数据访问HDFS 针对一次性读取大量数据继续了优化,牺牲了延迟性。2.不擅长大量小文件存储A:由于NameNode将文件系统的元数据存储在内存中,因此该文件系统所能存储的文件总数受限于NameNode的内存容量。B:每个文件、目录和数据块的存储信息大约占150字节。
由于以上两个原因,所以导致HDFS不适合大量的小文件存储。3.不支持多用户并行写
不适合多次写入,一次读取(少量读取)。4.不支持文件的修改(增 删 改)
11.什么时候进入安全模式?
1.在集群重启(二次启动)的时候
2.人为进入
3.节点丢失块多的时候进入
12.安全模式有什么特点?
安全模式中只能读取数据
不能修改数据(增、删、改)
13.在安全模式下集群在做什么?
DataNode向NameNode做汇报集群恢复到上次关机前的状态
14.如何进入/退出安全模式?
进入:hdfs dfsadmin -safemode enter
退出:hdfs dfsadmin -safemode leave
15.Fsimage 和 Edits 的作用是什么?
1.恢复集群上次启动时的状态
2.fsimage记录NameNode文件系统镜像(该文件较小)
3.edits:记录客户端对HDFS文件系统的所有 增删改查 等操作
16.什么时候会使用Fsimage Edits?
1.在集群二次启动时,会使用fsimage和edits合并进行恢复元数据
2.SecondayNameNode周期性的拉取fsimage和edits进行合并生成新的fsimage
17.SecondaryNamenode 的工作机制是什么?
SecondaryNamenode周期性复制NameNode的FSImage和Edits到本机
将两个文件进行合并,最终生成全新的Fsimage,将最新的Fsimage发送回NameNode
18.SecondaryNamenode存在的意义是什么?
SNN存在的意义就是辅助NameNode进行Edits和Fsimage的合并工作
减少了日志大小,加快了集群的二次启动速度
19.SecondaryNamenode工作的触发因素有哪些?
1.时间维度,默认一小时触发一次
dfs.namenode.checkpoint.period :36002.次数维度,默认100万次触发一次
dfs.namenode.checkpoint.txns : 10000003、六十秒判断一次是否达到100W
20.使用SNN的FSimage和Edits还原Namenode流程是什么?
将最新版本的Fsimage和Edits拷贝至NameNode节点
21.如何合并小文件?
HDFS -> local : hadoop fs -getmerge 小文件目录 下载的目录 (下载到本地)local -> HDFS : 遍历所有的已有小文件追加到一个文件中,再上传 (本地上传)
22.设置 开启权限控制的key是什么?
dfs.permissions
23.使用java API 在hdfs创建一个全新的目录的过程是?
//实例化创建Configuration Configuration configuration = new Configuration();//实例化创建文件系统FileSystem fileSystem = FileSystem.get(new URI("hdfs://192.168.100.88:8082"),configuration);//使用文件系统对象调用mkdirs(相应的API )boolean mkdirs = fileSystem.mkdirs(new Path("目录路径"));总结:实例化Configuration 与 FileSystem 对象,在调用mkdir方法
24.HDFS数据写入流程?
详细步骤解析:(client:客户端)
1、 client发起文件上传请求,通过RPC与NameNode建立通讯,NameNode检查目标文件是否已存在,父目录是否存在,返回是否可以上传;
2、 client请求第一个block该传输到哪些DataNode服务器上;
3、 NameNode根据配置文件中指定的备份数量及机架感知原理进行文件分配,返回可用的DataNode的地址如:A,B,C;
4、 client请求3台DataNode中的一台A上传数据(本质上是一个RPC调用,建立pipeline),A收到请求会继续调用B,然后B调用C,将整个pipeline建立完成,后逐级返回client;
5、 client开始往A上传第一个block(先从磁盘读取数据放到一个本地内存缓存),以packet为单位(默认64K),A收到一个packet就会传给B,B传给C;A每传一个packet会放入一个应答队列等待应答。
6、 数据被分割成一个个packet数据包在pipeline上依次传输,在pipeline反方向上,逐个发送ack(命令正确应答),最终由pipeline中第一个DataNode节点A将pipelineack发送给client;
7、关闭写入流。
8、 当一个block传输完成之后,client再次请求NameNode上传第二个block到服务器。
25.HDFS数据读取流程?
详细步骤解析
1、客户端通过调用FileSystem对象的open()来读取希望打开的文件。
2、 Client向NameNode发起RPC请求,来确定请求文件block所在的位置;
3、 NameNode会视情况返回文件的部分或者全部block列表,对于每个block,NameNode 都会返回含有该 block 副本的 DataNode 地址; 这些返回的 DN 地址,会按照集群拓扑结构得出 DataNode 与客户端的距离,
然后进行排序,排序两个规则:网络拓扑结构中距离 Client 近的排靠前;心跳机制中超时汇报的 DN 状态为 STALE,这样的排靠后;
4、 Client 选取排序靠前的 DataNode 来读取 block,如果客户端本身就是DataNode,那么将从本地直接获取数据(短路读取特性);
5、 底层上本质是建立 Socket Stream(FSDataInputStream),重复的调用父类 DataInputStream 的 read 方法,直到这个块上的数据读取完毕;
6、并行读取,若失败重新读取
7、 当读完列表的 block 后,若文件读取还没有结束,客户端会继续向NameNode 获取下一批的 block 列表;
8、返回后续block列表
9、 最终关闭读流,并将读取来所有的 block 会合并成一个完整的最终文件说明:
1、读取完一个 block 都会进行 checksum 验证,如果读取 DataNode 时出现错误,客户端会通知 NameNode,然后再从下一个拥有该 block 副本的DataNode 继续读。
2、read 方法是并行的读取 block 信息,不是一块一块的读取;NameNode 只是返回Client请求包含块的DataNode地址,并不是返回请求块的数据;
26.集群扩容1 新节点需要做哪些准备?
01.克隆一台新的虚拟机02.修改mac配置文件03.修改IP地址04.重启1.关闭防火墙2.关闭selinux3.修改主机名4.修改hosts5.配置SSH免密钥6.配置JDK
27.集群扩容2 集群添加一个节点的流程?
1.在新节点上传解压Hadoop,并配置环境变量
2.将主节点的Hadoop安装目录下的etc/hadoop里的配置文件全部拷贝到新节点的同级目录
a)创建白名单dfs.hosts,将所有节点添加进该文件,编辑hdfs-site.xml文件配置dfs.hosts映射信息
b)使用 hdfs dfsadmin -refreshNodes 刷新NameNode
c)使用 yarn dfsadmin -refreshNodes 更新resourceManager
d)修改slaves文件增加新服务节点的主机名称
e)启动新增节点
f)浏览器查看新增节点信息
g)执行 start-balancer.sh 负载均衡
28.HDFS web界面 介绍详情
Overview -Live Nodes之前,Startup Progress,启动进度Snapshot ,快照Datanodes 数据节点
发布评论