Hadoop面试题汇总.docx
《Hadoop面试题汇总.docx》由会员分享,可在线阅读,更多相关《Hadoop面试题汇总.docx(27页珍藏版)》请在冰豆网上搜索。
Hadoop面试题汇总
单选题
1.下面哪个程序负责数据存储。
a)b)c)d)e)
答案C
2.中的默认保存几份?
a)3份b)2份c)1份d)不确定
答案A默认3分
3.下列哪个程序通常与在一个节点启动?
a)b)c)d)
答案D
4.作者
a)b)c)
答案C
5.默认
a)32b)64c)128
答案:
1版本是64M
2版本是128M
6.下列哪项通常是集群的最主要瓶颈
a)b)网络c)磁盘d)内存
答案:
C磁盘
7所创立的项目的名称都受到其家人的启发,以下项目不是由他创立的项目是
A.
B.
C.
D.
答案:
D
8.配置时,包含在哪一个配置文件中
A.
B.
C.
D.
答案:
B
9.配置文件中,显示覆盖里的内容。
在版本0.20中,被分离成三个文件,不包括
A.
B.
C.
D.
答案:
A
10默认的当前工作目录是$,的值需要在哪个配置文件内说明
A.
B.
C.
D.以上均不是
答案:
B
11.关于单机模式和伪分布式模式的说法,正确是
A.两者都起守护进程,且守护进程运行在一台机器上
B.单机模式不使用,但加载守护进程
C.两者都不与守护进程交互,避免复杂性
D.后者比前者增加了输入输出以及可检查内存使用情况
答案:
D
12.下列关于的说法错误的是
A.的文件不是通用的,只用于文件系统
B.类的默认实例化方法是以系统的资源配置为基础的
C.对象存储文件和目录的元数据
D.是的子类
答案:
A
13的负责管理文件系统的命名空间,将所有的文件和文件夹的元数据保存在一个文件系统树中,这些信息也会在硬盘上保存成以下文件:
A.日志
B.命名空间镜像
C.两者都是
答案:
C
14.的保存了一个文件包括哪些数据块,分布在哪些数据节点上,这些信息也存储在硬盘上。
A.正确
B.错误
答案:
B
知识点:
在系统启动的时候从数据节点收集而成的
15就是出现问题时的备用节点
A.正确
B.错误
答案:
B
知识点:
它和元数据节点负责不同的事情。
其主要功能就是周期性将元数据节点的命名空间镜像文件和修改日志合并,以防日志文件过大。
合并过后的命名空间镜像文件也在保存了一份,以防失败的时候,可以恢复。
16的是基于流数据模式访问和处理超大文件的需求而开发的,默认的最基本的存储单位是64M,具有高容错、高可靠性、高可扩展性、高吞吐率等特征,适合的读写任务是
A.一次写入,少次读写
B.多次写入,少次读写
C.一次写入,多次读写
D.多次写入,多次读写
答案:
C
17无法高效存储大量小文件,想让它能处理好小文件,比较可行的改进策略不包括
A.利用、、等方式归档小文件
B.多设计
C.大小适当调小
D.调大内存或将文件系统元数据存到硬盘里
答案:
D
18.关于的文件写入,正确的是
A.支持多用户对同一文件的写操作
B.用户可以在文件任意位置进行修改
C.默认将文件块复制成三份存放
D.复制的文件块默认都存在同一机架上
答案:
C
19中的和命令操作对象是
A.文件
B.目录
C.两者都是
答案:
C
20在启动时自动进入安全模式,在安全模式阶段,说法错误的是
A.安全模式目的是在系统启动时检查各个上数据块的有效性
B.根据策略对数据块进行必要的复制或删除
C.当数据块最小百分比数满足的最小副本数条件时,会自动退出安全模式
D.文件系统允许有修改
答案:
D
21.下列关于为存储并行切分和处理的数据做的设计,错误的是
A. 扩展了以支持随机读
B. 为实现细粒度并行,输入分片()应该越小越好
C. 一台机器可能被指派从输入文件的任意位置开始处理一个分片
D. 输入分片是一种记录的逻辑划分,而数据块是对输入数据的物理分割
答案:
B
多选题
1.关于哪项是正确的?
a)它是的热备
b)它对内存没有要求
c)它的目的是帮助合并编辑日志,减少启动时间
d)应与部署到一个节点
答案CD
2.下列哪项可以作为集群的管理?
a)b)c)d)
答案1:
3.配置机架感知的下面哪项正确
a)如果一个机架出问题,不会影响数据读写
b)写入数据的时候会写到不同机架的中
c)会根据机架获取离自己比较近的网络数据
答案
具体可以参考
机架感知加强集群稳固性,该如何配置机架感知
4.端上传文件的时候下列哪项正确
a)数据经过传递给
b)端将文件切分为,依次上传
c)只上传数据到一台,然后由负责复制工作
答案B
5.下列哪个是运行的模式
a)单机版b)伪分布式c)分布式
答案
6.提供哪几种安装的方法
a)b)c)d)
答案:
具体可以参考
四种安装方式总结及实例指导
简答题
1集群可以运行的3个模式?
1)单机(本地)模式;
2)伪分布式模式;
3)全分布式模式;
2.单机(本地)模式中的注意点?
在单机模式()中不会存在守护进程,所有东西都运行在一个上。
这里同样没有,使用的是本地文件系统。
单机模式适用于开发过程中运行程序,这也是最少使用的一个模式。
3.伪分布模式中的注意点?
伪分布式()适用于开发和测试环境,在这个模式中,所有守护进程都在同一台机器上运行。
4.全分布模式又有什么注意点?
全分布模式通常被用于生产环境,这里我们使用N台主机组成一个集群,守护进程运行在每台主机之上。
这里会存在运行的主机,运行的主机,以及运行的主机。
在分布式环境下,主节点和从节点会分开。
5.是否遵循模式?
是的,在用例下,还拥有“”目录。
6.的核心配置是什么?
的核心配置通过两个文件来完成:
1,;2,。
这些文件都使用格式,因此每个中都有一些属性,包括名称和值,但是当下这些文件都已不复存在。
7.那当下又该如何配置?
现在拥有3个配置文件:
1,;2,;3,。
这些文件都保存在子目录下。
8.只是单一的目录?
只是一个目录。
9.的3个主要属性?
决定的是元数据存储的路径以及的存储方式(磁盘或是远端)
决定的是数据存储的路径
用于第二
10.如何退出输入模式?
退出输入的方式有:
1,按;2,键入(如果你没有输入任何当下)或者键入(如果你已经输入当下),并且按下。
11.“”命令的用处?
这个命令可以检查、、、是否正常工作。
12.如何重启?
点击,再点击。
键入(),(),(),及0.20()。
13.的全名?
全名是:
。
14.命令的作用?
可以让你知道哪个节点是。
15.命令的作用是?
说明了守护进程(服务)的位置或状态,其实是特性,和关系不大。
16.如何在浏览器中查找?
如果你确实需要在浏览器中查找,你不再需要:
8021,的端口号是50070。
17.是用于做什么的?
提供了中.的运行环境。
18.文件是否提供了多个入口?
是的你可以拥有多个文件接口。
19.文件当下的位置?
现在位于。
20.在中,代表了什么?
代表了“”。
21.用于做什么?
用来存储。
22.需求什么样的网络?
核心使用()来驱动从节点上的服务器进程,并在主节点和从节点之间使用连接。
23.全分布式环境下为什么需求?
这主要因为集群中通信过于频繁,需要尽可能快的给发布任务。
24.工作的端口号是?
工作的端口号是.22,当然可以通过它来配置,22是默认的端口号。
25.为什么本地主机需要密码?
在中使用密码主要是增加安全性,在某些情况下也根本不会设置密码通信。
26.如果在中添加,是否还需要设置密码?
是的,即使在中添加了,还是需要设置密码。
27.假如中没有数据会怎么样?
没有数据的就不能称之为,通常情况下,肯定会有数据
28.当宕掉时,会发生什么?
当失败时,集群仍然可以正常工作,只要没问题。
29.是否可以在上运行?
你最好不要这么做,或者是才是的最佳操作系统。
在安装中,通常不会被使用,因为会出现各种各样的问题。
因此,绝对不是的推荐系统。
30.简要描述如何安装配置一个开源版,描述即可,列出步骤更好
1.配置主机名
2.配置
3.配置面密码互通
4.安装
5.安装
6.配置
(1)修改
(2)修改
(3)修改
(4)修改
(5)修改
(6)修改
7.配置的环境变量
8.格式化
32.请列出正常工作的集群中都需要启动哪些进程,他们的作用分别是什么?
名字节点,存储元数据
辅助实现文件和文件的合并
存储数据的节点
负责集群中所有资源的统一管理和分,它接收来自各个节点()的资源汇报信息,并把这些信息按照一定的策略分配给各个应用程序
是中每个节点上的代理,它管理集群中单个计算节点,包括与保持通信,监督的生命周期管理,监控每个的资源使用(内存、等)情况,追踪节点健康状况,管理日志和不同应用程序用到的附属服务()
33.请写出以下执行命令
1)杀死一个?
–
2)删除上的目录
3加入一个新的存储节点和删除一个计算节点需要刷新集群状态命令?
5.请列出你所知道的调度器,并简要说明其工作方法?
(1)默认的调度器
(2)计算能力调度器
(3)公平调度器
(4)适用于异构集群的调度器
(5)适用于实时作业的调度器和
6.请列出在你以前工作中所使用过的开发的语言?
7.当前日志采样格式为
34有哪些方式保存元数据,各有哪些特点?
原生使用作为元数据库,无法并发调用
可以将元数据保存在数据库中
远程服务器模式,在服务器端启动一个,客户端利用协议通过访问元数据库
35.请简述怎么样实现二级排序?
有两种方法进行二次排序,分别为:
和。
对于,主要思想是:
在()函数中,将某个对应的所有保存下来,然后进行排序。
这种方法最大的缺点是:
可能会造成。
对于,主要思想是:
将和部分拼接成一个组合(实现接口或者调用函数),这样获取的结果便是先按排序,后按排序的结果,需要注意的是,用户需要自己实现,以便只按照进行数据划分
36.简述实现的几种方法?
2.1
是一种最简单的方式,其主要思想如下:
在阶段,函数同时读取两个文件1和2,为了区分两种来源的数据对,对每条数据打一个标签(),比如:
0表示来自文件1,2表示来自文件2。
即:
阶段的主要任务是对不同文件中的数据打标签。
在阶段,函数获取相同的来自1和2文件的,然后对于同一个,对1和2中的数据进行(笛卡尔乘积)。
即:
阶段进行实际的连接操作。
2.2
之所以存在,是因为在阶段不能获取所有需要的字段,即:
同一个对应的字段可能位于不同中。
是非常低效的,因为阶段要进行大量的数据传输。
是针对以下场景进行的优化:
两个待连接表中,有一个表非常大,而另一个表非常小,以至于小表可以直接存放到内存中。
这样,我们可以将小表复制多份,让每个内存中存在一份(比如存放到中),然后只扫描大表:
对于大表中的每一条记录,在中查找是否有相同的的记录,如果有,则连接后输出即可。
为了支持文件的复制,提供了一个类,使用该类的方法如下:
(1)用户使用静态方法()指定要复制的文件,它的参数是文件的(如果是上的文件,可以这样:
:
9000,其中9000是自己配置的端口号)。
在作业启动之前会获取这个列表,并将相应的文件拷贝到各个的本地磁盘上。
(2)用户使用()方法获取文件目录,并使用标准的文件读写读取相应的文件。
2.3
,也叫半连接,是从分布式数据库中借鉴过来的方法。
它的产生动机是:
对于,跨机器的数据传输量非常大,这成了操作的一个瓶颈,如果能够在端过滤掉不会参加操作的数据,则可以大大节省网络。
实现方法很简单:
选取一个小表,假设是1,将其参与的抽取出来,保存到文件3中,3文件一般很小,可以放到内存中。
在阶段,使用将3复制到各个上,然后将2中不在3中的对应的记录过滤掉,剩下的阶段的工作与相同。
2.4+
在某些情况下,抽取出来的小表的集合在内存中仍然存放不下,这时候可以使用以节省空间。
最常见的作用是:
判断某个元素是否在一个集合里面。
它最重要的两个方法是:
()和()。
最大的特点是不会存在,即:
如果()返回,则该元素一定不在集合中,但会存在一定的,即:
如果()返回,则该元素可能在集合中。
因而可将小表中的保存到中,在阶段过滤大表,可能有一些不在小表中的记录没有过滤掉(但是在小表中的记录一定不会过滤掉),这没关系,只不过增加了少量的网络而已。
37.请用实现非递归二分查找?
([]){
第一个位置.
0;
最高位置.数组长度-1,因为下标是从0开始的.
1;
当"指针"和不重复的时候.
(<){
中间位置计算最高位置减去最低位置,右移一位,相当于除2.也可以用()/2
(()>>1);
与最中间的数字进行判断,是否相等,相等的话就返回对应的数组下标.
([]){
;
如果小于的话则移动最高层的"指针"
}(<[]){
1;
移动最低的"指针"
}{
1;
}
}
-1;
}
38.请简述中,,作用?
:
分区操作是操作中的一个重要过程,作用就是将的结果按照规则分发到不同中进行处理,从而按照分区得到多个输出结果
:
每一个可能会产生大量的输出,的作用就是在端对输出先做一次合并,以减少传输到的数据量
39用如何处理数据倾斜问题
1.增加的内存
2.增加个数
3.
4.其他优化的讨论.
5.排序算法的讨论
6.正在实现中的.
7.
8.
9.尤其是
40中内部表和外部表的区别
内部表现有表后有数据,数据在的目录下管理
外部表先有数据后有表,数据不再的目录下管理
删除表时,内部表对应文件被删除
删除表时,外部表对应的文件不会被删除
41用使用非递归二分查找
参看题37
42如何处理大量小文件
(1)
或者,是一个高效地将小文件放入块中的文件存档工具,它能够将多个小文件打包成一个文件,这样在减少内存使用的同时,仍然允许对文件进行透明的访问。
对某个目录下的所有小文件存档成:
当然,也可以指定的大小(使用)。
是在之上的一个文件系统,因此所有命令对文件均可用,只不过是文件路径格式不一样,的访问路径可以是以下两种格式:
(本节点)
可以这样查看文件存档中的文件:
输出:
1
2
使用时需要两点,第一,对小文件进行存档后,原文件并不会自动被删除,需要用户自己删除;第二,创建文件的过程实际上是在运行一个作业,因而需要有一个集群运行此命令。
此外,还有一些缺陷:
第一,一旦创建,便不可改变。
要增加或移除里面的文件,必须重新创建归档文件。
第二,要归档的文件名中不能有空格,否则会抛出异常,可以将空格用其他符号替换(使用和参数)。
(2)
由一系列的二进制组成,如果为小文件名,为文件内容,则可以将大批小文件合并成一个大文件。
0.21.0中提供了,包括,和类进行写,读和排序操作。
如果版本低于0.21.0的版本,实现方法可参见[3]。
(3)
是一种新的,用于将多个文件合并成一个单独的,另外,它会考虑数据的存储位置。
43中的默认保存几份?
3份
44继承那个类
创建类继承
自己编写一个方法,返回值和参数任意。
45.请列出正常工作的集群中都需要启动哪些进程,他们的作用分别是什么?
参看题32
46、处理过程
1)输入文件()
2)格式化输入文件()
3)分割器()
4)
5)
6)分区和洗牌(&)
7)
8)
9)格式化输出()
47、流程
参看题48
48、上传细节
使用提供的客户端开发库,向远程的发起请求;
会检查要创建的文件是否已经存在,创建者是否有权限进行操作,成功则会为文件创建一个记录,否则会让客户端抛出异常;
当客户端开始写入文件的时候,开发库会将文件切分成多个,并在内部以数据队列""的形式管理这些,并向申请新的,获取用来存储的合适的列表,列表的大小根据在中对的设置而定。
开始以(管道)的形式将写入所有的中。
开发库把以流的方式写入第一个,该把该存储之后,再将其传递给在此中的下一个,直到最后一个,这种写数据的方式呈流水线的形式。
最后一个成功存储之后会返回一个,在里传递至客户端,在客户端的开发库内部维护着"",成功收到返回的后会从""移除相应的。
如果传输过程中,有某个出现了故障,那么当前的会被关闭,出现故障的会从当前的中移除,剩余的会继续剩下的中继续以的形式传输,同时会分配一个新的,保持设定的数量。
49、的做什么的
是一个开放源码的分布式协调服务,是一种典型的分布式数据一致性解决方案。
由雅虎创建,贡献给了。
利用可以实现数据发布订阅、负载均衡、命名服务、分布式协调/通知、集群管理、分布式锁、分布式队列等功能。
50、是什么
是4提供的一种新的方式,也叫做非阻塞式,特点是可以在非阻塞模式下进行工作,时都不会产生阻塞,从而可以解决在高并发场景下遇到的问题。
51、的细节
中的表在行的方向上分隔为多个,分散在不同的中
这样做的目的是在查询时可以将工作量分布到多个中以提高速度
由[)表示
是分布式存储和负载均衡的最小单元
要注意不在中,而是在的内存中,在内存(其实也有数据在本地文件系统中,因为内存空间毕竟是有限的)中存储数据以提高查询性能,对于修改会将数据同步到中,以持久化数据。
中的数据按照的字典顺序(字典顺序!
!
!
先比较第一位如果相同再比较第二位。
。
。
)按序存储,所以当以查询数据时,可以提高速度。
的分裂,当变的很大时会分裂成两个,存放到不同的中,防止一个过大,导致查询其中数据时速度很慢
的系统结构:
主要有
52、什么是分布式
分布式处理则是将不同地点的,或具有不同功能的,或拥有不同数据的多台计算机通过通信网络连接起来,在控制系统的统一管理控制下,协调地完成大规模信息处理任务的计算机系统。
53函数式编程的好处:
1.代码简洁,开发快速
2.接近自然语言,易于理解
3.更方便的代码管理
4.易于“并发编程”
5.代码的热升级(函数式编程没有副作用,只要保证接口不变,内部实现是外部无关的。
所以,可以在运行状态下直接升级代码,不需要重启,也不需要停机。
)
54在中,比如启动,会打印很多日志,什么命令可以不显示这些日志?
可以通过在命令前增加上命令来实现
55的加锁是加部分锁是加的哪部分?
数据分段上
56环形缓冲区集群搭配的作用和优化?
每个有一个环形内存缓冲区,用于存储任务的输出。
默认大小100(属性),一旦达到阀值0.8(),一个后台线程把内容写到()磁盘的指定目录()下的新建的一个溢出写文件。
写磁盘前,要。
如果有后续的数据,将会继续写入环形缓冲区中,最终写入下一个溢出文件中。
环形缓冲区是一种缓冲区技术,通过首尾相接的方式循环使用缓冲区,解决了数据量过大时缓冲区大小过大的问题。
57、原理
和所有的都可以提供查询功能
只有能够提供增删改的功能,如果客户端连接表示要进行增删改,会将请求转发给来处理。
所有的增删改的操作都会有一个版本号,这个版本号是递增唯一的,用来记录提案的顺序。
如何选老大?
选老大情况1:
集群刚启动时,谁当老大都可以,一般是最先启动的做老大
选老大情况2:
老大挂了,集群会暂时停止对外服务进入选举阶段,所有都会广播一个自己的所持有的最高版本给整个集群,当大家收到其他发过来的最高版本信息后,就会进行投票,投给收到的版本信息最高的,每个机器只能发一票,此时选择集群中数据版本最高的机器做老大,任意一个当发现自己收到了过半的投票(自己也可以投给自己),可以认为获得了选举胜利,可以成为了。
老大如何决定一个提案是否通过?
如果老大自己说了算,那么如果刚好老大挂了,其他人不知道老大同一的提案,可能就造成新选出来的不知道之前老大同意过的提案,从而造成违反一致性。
不可行
如果老大把提案发给所有人,所有人都同意了才能通过提案,这时如果集群中任意一台机器出问题,投票都无法进行,相当于存在单节点故障的可能。
不可取。
折中一下,老大收到提案后,发给所有人,所有人收到后都要回复老大,当老大收到过半同意的投票时,则通过这个提案。
这样一来,极端的情况下只要集群中有过半的机器还活着,选出来的老大是一定知道之前老大最后提案的。
!
!
!
引申出来的结论是,集群必须过半存活才能正常工作!
!
!
!
又引申出来的结论是,偶数台机器提供的集群可靠性和偶数-1台机器提供的可靠性是相同的!
所以集群中机器的数量最好是基数个。
58、的可以存那些数据
包括文件和之间关系的信息、数量信息、和之间的关系信息
59和
传统的面临的问题:
在执行如下操作时会产生阻塞:
在高并发场景下,如上的方法产生的阻塞可能会产生一些无法避免的问题。
在开发服务器程序时,通常针对于每一个客户端都要创建一个线程来处理,而线程的开辟和运行是相当耗费资源的,服务器能够运行的并发线程数量是很有限的。
在高并发场景下,大量的客户端并发连接导致服务器创建大量线程,会直接影响服务器的性能。
而一些场景下客户端连接后传输的数据并不多,只是保持连接的状态,此时创建的大量线程闲置着浪费服务器资源。
所以我们想到用少量的线程来处理多个客户端的连接,但是这种方式下传统会有阻塞的问题决定了是无法实现的。
也叫做非阻塞式,特点是可以在非阻塞模式下进行工作,时都不会产生阻塞,从而可以解决在高并发场景下遇到的问题。
:
面向流操作的是字节或字符
流只能单向传输数据操作的是字节或字符
:
面向通道操作的是缓冲区
通道可以双向的传输数据操作的是缓冲区
60聚类包括那些?
一堆数据,怎么用聚类中的一个算法实现?
算法接受输入量k;然后将n个数据对象划分为k个聚类以便使得所获得的聚类满足:
同一聚类中的对象相似度较高;而不同聚类中的对象相似度较小。
聚类相似度是利用各聚类中对象的均值所获得一个“中心对象”(引力中心)来进行计算的。
算法的工作过程说明如下:
首先从n个数据对象任意选择k个对象作为初始聚类中心;而对于所剩下其它对象,则根据它们与这些聚类中心的相似度(距离),分别将它们分配给与其最相似的(聚类中心所代表的)聚类;
然后再计算每个所获新聚类的聚类中心(该聚类中所有对象的均值);不断重复这一过程直到标准测度函数开始收敛为止。
一般都采用均方差作为标准测度函数.k个聚类具有以下特点:
各聚类本身尽可能的紧凑,而各聚类之间尽可能的分开。
(中心法)
有其缺点:
产生类的大小相差不会很大,对于脏数据很敏感。
改进的算法:
k—方法。
这儿选取一个对象叫做来代替上面的中心的作用,这样的一个就标识了这个类。
和不一样的地方在于中心点的选取,在中,我们将中心点取为当前中所有数据点的平均值,在算法中,我们将从当前中选取这样一个点——它到其他所有(当前中的)点的距离之和最小——作为中心点
上面