Hadoop面试题目及答案.docx
- 文档编号:12591832
- 上传时间:2023-04-20
- 格式:DOCX
- 页数:19
- 大小:26.42KB
Hadoop面试题目及答案.docx
《Hadoop面试题目及答案.docx》由会员分享,可在线阅读,更多相关《Hadoop面试题目及答案.docx(19页珍藏版)》请在冰豆网上搜索。
Hadoop面试题目及答案
Hadoop面试45个题目及答案
1.Hadoop集群可以运营3个模式?
单机(本地)模式
伪分布式模式
全分布式模式
2. 单机(本地)模式中注意点?
在单机模式(standalone)中不会存在守护进程,所有东西都运营在一种JVM上。
这里同样没有DFS,使用是本地文献系统。
单机模式合用于开发过程中运营MapReduce程序,这也是至少使用一种模式。
3. 伪分布模式中注意点?
伪分布式(Pseudo)合用于开发和测试环境,在这个模式中,所有守护进程都在同一台机器上运营。
4. VM与否可以称为Pseudo?
不是,两个事物,同步Pseudo只针对Hadoop。
5. 全分布模式又有什么注意点?
全分布模式普通被用于生产环境,这里咱们使用N台主机构成一种Hadoop集群,Hadoop守护进程运营在每台主机之上。
这里会存在Namenode运营主机,Datanode运营主机,以及tasktracker运营主机。
在分布式环境下,主节点和从节点会分开。
6. Hadoop与否遵循UNIX模式?
是,在UNIX用例下,Hadoop还拥有“conf”目录。
7. Hadoop安装在什么目录下?
Cloudera和Apache使用相似目录构造,Hadoop被安装在cd/usr/lib/hadoop-0.20/。
8. Namenode、Jobtracker和tasktracker端标语是?
Namenode,70;Jobtracker,30;Tasktracker,60。
9. Hadoop核心配备是什么?
Hadoop核心配备通过两个xml文献来完毕:
1,hadoop-default.xml;2,hadoop-site.xml。
这些文献都使用xml格式,因而每个xml中均有某些属性,涉及名称和值,但是当下这些文献都已不复存在。
10. 那当下又该如何配备?
Hadoop当前拥有3个配备文献:
1,core-site.xml;2,hdfs-site.xml;3,mapred-site.xml。
这些文献都保存在conf/子目录下。
11. RAM溢出因子是?
溢出因子(Spillfactor)是暂时文献中储存文献大小,也就是Hadoop-temp目录。
12. fs.mapr.working.dir只是单一目录?
fs.mapr.working.dir只是一种目录。
13. hdfs-site.xml3个重要属性?
dfs.name.dir决定是元数据存储途径以及DFS存储方式(磁盘或是远端)
dfs.data.dir决定是数据存储途径
fs.checkpoint.dir用于第二Namenode
14. 如何退出输入模式?
退出输入方式有:
1,按ESC;2,键入:
q(如果你没有输入任何当下)或者键入:
wq(如果你已经输入当下),并且按下Enter。
15. 当你输入hadoopfsck/导致“connectionrefusedjavaexception’”时,系统究竟发生了什么?
这意味着Namenode没有运营在你VM之上。
16. 咱们使用Ubuntu及Cloudera,那么咱们该去哪里下载Hadoop,或者是默认就与Ubuntu一起安装?
这个属于Hadoop默认配备,你必要从Cloudera或者Edurekadropbox下载,然后在你系统上运营。
固然,你也可以自己配备,但是你需要一种Linuxbox,Ubuntu或者是RedHat。
在Cloudera网站或者是EdurekaDropbox中有安装环节。
17. “jps”命令用处?
这个命令可以检查Namenode、Datanode、TaskTracker、JobTracker与否正常工作。
18. 如何重启Namenode?
点击stop-all.sh,再点击start-all.sh。
键入sudohdfs(Enter),su-hdfs(Enter),/etc/init.d/ha(Enter),及/etc/init.d/hadoop-0.20-namenodestart(Enter)。
19. Fsck全名?
全名是:
FileSystemCheck。
20. 如何检查Namenode与否正常运营?
如果要检查Namenode与否正常工作,使用命令/etc/init.d/hadoop-0.20-namenodestatus或者就是简朴jps。
21. mapred.job.tracker命令作用?
可以让你懂得哪个节点是JobTracker。
22. /etc/init.d命令作用是?
/etc/init.d阐明了守护进程(服务)位置或状态,其实是LINUX特性,和Hadoop关系不大。
23. 如何在浏览器中查找Namenode?
如果你的确需要在浏览器中查找Namenode,你不再需要localhost:
8021,Namenode端标语是50070。
24. 如何从SU转到Cloudera?
从SU转到Cloudera只需要键入exit。
25. 启动和关闭命令会用到哪些文献?
Slaves及Masters。
26. Slaves由什么构成?
Slaves由主机列表构成,每台1行,用于阐明数据节点。
27. Masters由什么构成?
Masters同样是主机列表构成,每台一行,用于阐明第二Namenode服务器。
28. hadoop-env.sh是用于做什么?
hadoop-env.sh提供了Hadoop中.JAVA_HOME运营环境。
29. Master文献与否提供了各种入口?
是你可以拥有各种Master文献接口。
30. Hadoop-env.sh文献当下位置?
hadoop-env.sh当前位于conf。
31. 在Hadoop_PID_DIR中,PID代表了什么?
PID代表了“ProcessID”。
32. /var/hadoop/pids用于做什么?
/var/hadoop/pids用来存储PID。
33. hadoop-metrics.properties文献作用是?
hadoop-metrics.properties被用做“Reporting”,控制Hadoop报告,初始状态是“nottoreport”。
34. Hadoop需求什么样网络?
Hadoop核心使用Shell(SSH)来驱动从节点上服务器进程,并在主节点和从节点之间使用password-lessSSH连接。
35. 全分布式环境下为什么需求password-lessSSH?
这重要由于集群中通信过于频繁,JobTracker需要尽量快给TaskTracker发布任务。
36. 这会导致安全问题吗?
完全不用紧张。
Hadoop集群是完全隔离,普通状况下无法从互联网进行操作。
与众不同配备,因而咱们完全不需要在乎这种级别安全漏洞,例如说通过互联网侵入等等。
Hadoop为机器之间连接提供了一种相对安全方式。
37. SSH工作端标语是?
SSH工作端标语是NO.22,固然可以通过它来配备,22是默认端标语。
38. SSH中注意点还涉及?
SSH只是个安全shell通信,可以把它当做NO.22上一种合同,只需要配备一种密码就可以安全访问。
39. 为什么SSH本地主机需要密码?
在SSH中使用密码重要是增长安全性,在某些状况下也主线不会设立密码通信。
40. 如果在SSH中添加key,与否还需要设立密码?
是,虽然在SSH中添加了key,还是需要设立密码。
41. 如果Namenode中没有数据会怎么样?
没有数据Namenode就不能称之为Namenode,普通状况下,Namenode必定会有数据。
42. 当JobTracker宕掉时,Namenode会发生什么?
当JobTracker失败时,集群依然可以正常工作,只要Namenode没问题。
43. 是客户端还是Namenode决定输入分片?
这并不是客户端决定,在配备文献中以及决定分片细则。
44. 与否可以自行搭建Hadoop集群?
是,只要对Hadoop环境足够熟悉,你完全可以这样做。
45. 与否可以在Windows上运营Hadoop?
你最佳不要这样做,RedHatLinux或者是Ubuntu才是Hadoop最佳操作系统。
在Hadoop安装中,Windows普通不会被使用,由于会浮现各种各样问题。
因而,Windows绝对不是Hadoop推荐系统。
第一某些、十道海量数据解决面试题
1、海量日记数据,提取出某日访问XX次数最多那个IP。
一方面是这一天,并且是访问XX日记中IP取出来,逐个写入到一种大文献中。
注意到IP是32位,最多有个2^32个IP。
同样可以采用映射办法,例如模1000,把整个大文献映射为1000个小文献,再找出每个小文中浮现频率最大IP(可以采用hash_map进行频率记录,然后再找出频率最大几种)及相应频率。
然后再在这1000个最大IP中,找出那个频率最大IP,即为所求。
或者如下阐述(雪域之鹰):
算法思想:
分而治之+Hash
1.IP地址最多有2^32=4G种取值状况,因此不能完全加载到内存中解决;
2.可以考虑采用“分而治之”思想,按照IP地址Hash(IP)%1024值,把海量IP日记分别存储到1024个小文献中。
这样,每个小文献最多包括4MB个IP地址;
3.对于每一种小文献,可以构建一种IP为key,浮现次数为valueHashmap,同步记录当前浮现次数最多那个IP地址;
4.可以得到1024个小文献中浮现次数最多IP,再根据常规排序算法得到总体上浮现次数最多IP;
2、搜索引擎会通过日记文献把顾客每次检索使用所有检索串都记录下来,每个查询串长度为1-255字节。
假设当前有一千万个记录(这些查询串重复度比较高,虽然总数是1千万,但如果除去重复后,不超过3百万个。
一种查询串重复度越高,阐明查询它顾客越多,也就是越热门。
),请你记录最热门10个查询串,规定使用内存不能超过1G。
典型TopK算法,还是在这篇文章里头有所阐述,详情请参见:
十一、从头到尾彻底解析Hash表算法。
文中,给出最后算法是:
第一步、先对这批海量数据预解决,在O(N)时间内用Hash表完毕记录(之前写成了排序,特此订正。
July、.04.27);
第二步、借助堆这个数据构造,找出TopK,时间复杂度为N‘logK。
即,借助堆构造,咱们可以在log量级时间内查找和调节/移动。
因而,维护一种K(该题目中是10)大小小根堆,然后遍历300万Query,分别和根元素进行对比因此,咱们最后时间复杂度是:
O(N)+N’*O(logK),(N为1000万,N’为300万)。
ok,更多,详情,请参照原文。
或者:
采用trie树,核心字域存该查询串浮现次数,没有浮现为0。
最后用10个元素最小推来对浮现频率进行排序。
3、有一种1G大小一种文献,里面每一行是一种词,词大小不超过16字节,内存限制大小是1M。
返回频数最高100个词。
方案:
顺序读文献中,对于每个词x,取hash(x)%5000,然后按照该值存到5000个小文献(记为x0,x1,…x4999)中。
这样每个文献大概是200k左右。
如果其中有文献超过了1M大小,还可以按照类似办法继续往下分,直到分解得到小文献大小都不超过1M。
对每个小文献,记录每个文献中浮现词以及相应频率(可以采用trie树/hash_map等),并取出浮现频率最大100个词(可以用含100个结点最小堆),并把100个词及相应频率存入文献,这样又得到了5000个文献。
下一步就是把这5000个文献进行归并(类似与归并排序)过程了。
4、有10个文献,每个文献1G,每个文献每一行存储都是顾客query,每个文献query都也许重复。
规定你按照query频度排序。
还是典型TOPK算法,解决方案如下:
方案1:
顺序读取10个文献,按照hash(query)%10成果将query写入到此外10个文献(记为)中。
这样新生成文献每个大小大概也1G(假设hash函数是随机)。
找一台内存在2G左右机器,依次对用hash_map(query,query_count)来记录每个query浮现次数。
运用迅速/堆/归并排序按照浮现次数进行排序。
将排序好query和相应query_cout输出到文献中。
这样得到了10个排好序文献(记为)。
对这10个文献进行归并排序(内排序与外排序相结合)。
方案2:
普通query总量是有限,只是重复次数比较多而已,也许对于所有query,一次性就可以加入到内存了。
这样,咱们就可以采用trie树/hash_map等直接来记录每个query浮现次数,然后按浮现次数做迅速/堆/归并排序就可以了。
方案3:
与方案1类似,但在做完hash,提成各种文献后,可以交给各种文献来解决,采用分布式架构来解决(例如MapReduce),最后再进行合并。
5、给定a、b两个文献,各存储50亿个url,每个url各占64字节,内存限制是4G,让你找出a、b文献共同url?
方案1:
可以预计每个文献安大小为5G×64=320G,远远不不大于内存限制4G。
因此不也许将其完全加载到内存中解决。
考虑采用分而治之办法。
遍历文献a,对每个url求取hash(url)%1000,然后依照所获得值将url分别存储到1000个小文献(记为a0,a1,…,a999)中。
这样每个小文献大概为300M。
遍历文献b,采用和a相似方式将url分别存储到1000小文献(记为b0,b1,…,b999)。
这样解决后,所有也许相似url都在相应小文献(a0vsb0,a1vsb1,…,a999vsb999)中,不相应小文献不也许有相似url。
然后咱们只规定出1000对小文献中相似url即可。
求每对小文献中相似url时,可以把其中一种小文献url存储到hash_set中。
然后遍历另一种小文献每个url,看其与否在刚才构建hash_set中,如果是,那么就是共同url,存到文献里面就可以了。
方案2:
如果容许有一定错误率,可以使用Bloomfilter,4G内存大概可以表达340亿bit。
将其中一种文献中url使用Bloomfilter映射为这340亿bit,然后挨个读取此外一种文献url,检查与否与Bloomfilter,如果是,那么该url应当是共同url(注意会有一定错误率)。
Bloomfilter日后会在本BLOG内详细阐述。
6、在2.5亿个整数中找出不重复整数,注,内存局限性以容纳这2.5亿个整数。
方案1:
采用2-Bitmap(每个数分派2bit,00表达不存在,01表达浮现一次,10表达多次,11无意义)进行,共需内存2^32*2bit=1GB内存,还可以接受。
然后扫描这2.5亿个整数,查看Bitmap中相相应位,如果是00变01,01变10,10保持不变。
所描完事后,查看bitmap,把相应位是01整数输出即可。
方案2:
也可采用与第1题类似办法,进行划分小文献办法。
然后在小文献中找出不重复整数,并排序。
然后再进行归并,注意去除重复元素。
7、腾讯面试题:
给40亿个不重复unsignedint整数,没排过序,然后再给一种数,如何迅速判断这个数与否在那40亿个数当中?
与上第6题类似,我第一反映时迅速排序+二分查找。
如下是其他更好办法:
方案1:
oo,申请512M内存,一种bit位代表一种unsignedint值。
读入40亿个数,设立相应bit位,读入要查询数,查看相应bit位与否为1,为1表达存在,为0表达不存在。
dizengrong:
方案2:
这个问题在《编程珠玑》里有较好描述,人们可以参照下面思路,探讨一下:
又由于2^32为40亿多,因此给定一种数也许在,也也许不在其中;
这里咱们把40亿个数中每一种用32位二进制来表达
假设这40亿个数开始放在一种文献中。
然后将这40亿个数提成两类:
1.最高位为0
2.最高位为1
并将这两类分别写入到两个文献中,其中一种文献中数个数<=20亿,而另一种>=20亿(这相称于折半了);
与要查找数最高位比较并接着进入相应文献再查找
再然后把这个文献为又提成两类:
1.次最高位为0
2.次最高位为1
并将这两类分别写入到两个文献中,其中一种文献中数个数<=10亿,而另一种>=10亿(这相称于折半了);
与要查找多次最高位比较并接着进入相应文献再查找。
…….
以此类推,就可以找到了,并且时间复杂度为O(logn),方案2完。
附:
这里,再简朴简介下,位图办法:
使用位图法判断整形数组与否存在重复
判断集合中存在重复是常用编程任务之一,当集合中数据量比较大时咱们普通但愿少进行几次扫描,这时双重循环法就不可取了。
位图法比较适合于这种状况,它做法是按照集合中最大元素max创立一种长度为max+1新数组,然后再次扫描原数组,遇到几就给新数组第几位置上1,如遇到5就给新数组第六个元素置1,这样下次再遇到5想置位时发现新数组第六个元素已经是1了,这阐明这次数据必定和此前数据存在着重复。
这种给新数组初始化时置零其后置一做法类似于位图解决办法故称位图法。
它运算次数最坏状况为2N。
如果已知数组最大值即能事先给新数组定长话效率还能提高一倍。
欢迎,有更好思路,或办法,共同交流。
8、怎么在海量数据中找出重复次数最多一种?
方案1:
先做hash,然后求模映射为小文献,求出每个小文献中重复次数最多一种,并记录重复次数。
然后找出上一步求出数据中重复次数最多一种就是所求(详细参照前面题)。
9、上千万或上亿数据(有重复),记录其中浮现次数最多钱N个数据。
方案1:
上千万或上亿数据,当前机器内存应当能存下。
因此考虑采用hash_map/搜索二叉树/红黑树等来进行记录次数。
然后就是取出前N个浮现次数最多数据了,可以用第2题提到堆机制完毕。
10、一种文本文献,大概有一万行,每行一种词,规定记录出其中最频繁浮现前10个词,请给出思想,给出时间复杂度分析。
方案1:
这题是考虑时间效率。
用trie树记录每个词浮现次数,时间复杂度是O(n*le)(le表达单词平准长度)。
然后是找出浮现最频繁前10个词,可以用堆来实现,前面题中已经讲到了,时间复杂度是O(n*lg10)。
因此总时间复杂度,是O(n*le)与O(n*lg10)中较大哪一个。
附、100w个数中找出最大100个数。
方案1:
在前面题中,咱们已经提到了,用一种含100个元素最小堆完毕。
复杂度为O(100w*lg100)。
方案2:
采用迅速排序思想,每次分割之后只考虑比轴大一某些,懂得比轴大一某些在比100多时候,采用老式排序算法排序,取前100个。
复杂度为O(100w*100)。
方案3:
采用局部裁减法。
选用前100个元素,并排序,记为序列L。
然后一次扫描剩余元素x,与排好序100个元素中最小元素比,如果比这个最小要大,那么把这个最小元素删除,并把x运用插入排序思想,插入到序列L中。
依次循环,懂得扫描了所有元素。
复杂度为O(100w*100)。
道谢:
。
第二某些、十个海量数据解决办法大总结
ok,看了上面这样多面试题,与否有点头晕。
是,需要一种总结。
接下来,本文将简朴总结下某些解决海量数据问题常用办法,而日后,本BLOG内会详细阐述这些办法。
下面办法所有来自,对海量数据解决办法进行了一种普通性总结,固然这些办法也许并不能完全覆盖所有问题,但是这样某些办法也基本可以解决绝大多数遇到问题。
下面某些问题基本直接来源于公司面试笔试题目,办法不一定最优,如果你有更好解决办法,欢迎讨论。
一、Bloomfilter
合用范畴:
可以用来实现数据字典,进行数据判重,或者集合求交集
基本原理及要点:
对于原理来说很简朴,位数组+k个独立hash函数。
将hash函数相应值位数组置1,查找时如果发现所有hash函数相应位都是1阐明存在,很明显这个过程并不保证查找成果是100%对的。
同步也不支持删除一种已经插入核心字,由于该核心字相应位会牵动到其她核心字。
因此一种简朴改进就是countingBloomfilter,用一种counter数组代替位数组,就可以支持删除了。
尚有一种比较重要问题,如何依照输入元素个数n,拟定位数组m大小及hash函数个数。
当hash函数个数k=(ln2)*(m/n)时错误率最小。
在错误率不不不大于E状况下,m至少要等于n*lg(1/E)才干表达任意n个元素集合。
但m还应当更大些,由于还要保证bit数组里至少一半为0,则m应当>=nlg(1/E)*lge大概就是nlg(1/E)1.44倍(lg表达以2为底对数)。
举个例子咱们假设错误率为0.01,则此时m应大概是n13倍。
这样k大概是8个。
注意这里m与n单位不同,m是bit为单位,而n则是以元素个数为单位(精确说是不同元素个数)。
普通单个元素长度都是有诸多bit。
因此使用bloomfilter内存上普通都是节约。
扩展:
Bloomfilter将集合中元素映射到位数组中,用k(k为哈希函数个数)个映射位与否全1表达元素在不在这个集合中。
Countingbloomfilter(CBF)将位数组中每一位扩展为一种counter,从而支持了元素删除操作。
SpectralBloomFilter(SBF)将其与集合元素浮现次数关联。
SBF采用counter中最小值来近似表达元素浮现频率。
问题实例:
给你A,B两个文献,各存储50亿条URL,每条URL占用64字节,内存限制是4G,让你找出A,B文献共同URL。
如果是三个乃至n个文献呢?
依照这个问题咱们来计算下内存占用,4G=2^32大概是40亿*8大概是340亿,n=50亿,如果按出错率0.01算需要大概是650亿个bit。
当前可用是340亿,相差并不多,这样也许会使出错率上升些。
此外如果这些urlip是一一相应,就可以转换成ip,则大大简朴了。
二、Hashing
合用范畴:
迅速查找,删除基本数据构造,普通需要总数据量可以放入内存
基本原理及要点:
hash函数选取,针对字符串,整数,排列,详细相应hash办法。
碰撞解决,一种是openhashing,也称为拉链法;另一种就是closedhashing,也称开地址法,openedaddressing。
扩展:
d-lefthashing中d是各种意思,咱们先简化这个问题,看一看2-lefthashing。
2-lefthashing指是将一种哈希表提成长度相等两半,分别叫做T1和T2,给T1和T2分别配备一种哈希函数,h1和h2。
在存储一种新key时,同时用两个哈希函数进行计算,得出两个地址h1[key]和h2[key]。
这时需要检查T1中h1[key]位置和T2中h2[key]位置,哪一种位置已经存储(有碰撞)key比较多,然后将新key存储在负载少位置。
如果两边同样多,例如两个位置都为空或者都存储了一种key,就把新key存储在左边T1子表中,2-left也由此而来。
在查找一种key时,必要进行两次hash,同步查找两个位置。
问题实例:
1).海量日记数据,提取出某日访问XX次数最多那个IP。
IP数目还是有限,最多2^32个,因此可以考虑使用hash将ip直接存入内存,然后进行记录。
三、bit-map
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- Hadoop 面试 题目 答案