大數(shù)據(jù)常見(jiàn)面試題與參考答案總結(jié)

技術(shù)面試題
1.Hadoop中有哪些組件?
Hadoop=HDFS+Yarn+MapReduce+Hive+Hbase+...
1).HDFS:分布式文件存儲(chǔ)系統(tǒng)
主:namenode,secondarynamenode
從:datanode
2).Yarn:分布式資源管理系統(tǒng),用于同一管理集群中的資源(內(nèi)存等)
主:ResourceManager
從:NodeManager
3).MapReduce:Hadoop的計(jì)算框架,用map和reduce方式實(shí)現(xiàn)數(shù)據(jù)的全局匯總
4).Zookeeper:分布式協(xié)調(diào)服務(wù),用于維護(hù)集群配置的一致性、任務(wù)提交的事物性、集群中服務(wù)的地址管理、集群管理等
主:QuorumPeerMain
從:QuorumPeerMain
5).Hbase:Hadoop下的分布式數(shù)據(jù)庫(kù),類(lèi)似于NoSQL
主:HMaster,HRegionserver,Region
7).Hive:分布式數(shù)據(jù)倉(cāng)庫(kù),其實(shí)說(shuō)白了就是一個(gè)數(shù)據(jù)分析工具,底層用的還是MapReduce
8).Sqoop:用于將傳統(tǒng)數(shù)據(jù)庫(kù)中數(shù)據(jù)導(dǎo)入到hbase或者Hdfs中一個(gè)導(dǎo)入工具
9).Spark:基于內(nèi)存的分布式處理框架
主:Master
從:Worker
2.Hdfs中角色有哪些?
NameNode:管理元數(shù)據(jù)信息,給子節(jié)點(diǎn)分配任務(wù)(FSImage是主節(jié)點(diǎn)啟動(dòng)時(shí)對(duì)整個(gè)文件系統(tǒng)的快照,Edits是修改記錄)
DataNode:負(fù)責(zé)數(shù)據(jù)存儲(chǔ),實(shí)時(shí)上報(bào)心跳給主節(jié)點(diǎn)
SecondaryNameNode:
1)首先,它定時(shí)到NameNode去獲取edit logs,并更新到fsimage上。一旦它有了新的fsimage文件,它將其拷貝回 NameNode中。
2) NameNode在下次重啟時(shí)會(huì)使用這個(gè)新的fsimage文件,從而減少重啟的時(shí)間。
3.Hdfs和Yarn有什么區(qū)別?
1)Hdfs是分布式文件存儲(chǔ)系統(tǒng),是用來(lái)存儲(chǔ)文件的;
2)Yarn是一個(gè)資源管理系統(tǒng),可為上層應(yīng)用提供統(tǒng)一的資源管理和調(diào)度,它的引入為集群在利用率、資源統(tǒng)一管理和 數(shù)據(jù)共享等方面帶來(lái)了巨大好處
4.MapReduce的shuffle過(guò)程?
從Map產(chǎn)生輸出開(kāi)始到Reduce取得數(shù)據(jù)作為輸入之前的過(guò)程稱(chēng)作shuffle。
1).Collect階段:將MapTask的結(jié)果輸出到默認(rèn)大小為100M的環(huán)形緩沖區(qū),保存的是key/value,Partition分區(qū)信息等。
2).Spill階段:當(dāng)內(nèi)存中的數(shù)據(jù)量達(dá)到一定的閥值的時(shí)候,就會(huì)將數(shù)據(jù)寫(xiě)入本地磁盤(pán),在將數(shù)據(jù)寫(xiě)入磁盤(pán)之前需要對(duì)數(shù)據(jù) 進(jìn)行一次排序的操作,如果配置了combiner,還會(huì)將有相同分區(qū)號(hào)和key的數(shù)據(jù)進(jìn)行排序。
3).Merge階段:把所有溢出的臨時(shí)文件進(jìn)行一次合并操作,以確保一個(gè)MapTask最終只產(chǎn)生一個(gè)中間數(shù)據(jù)文件。
4).Copy階段:ReduceTask啟動(dòng)Fetcher線程到已經(jīng)完成MapTask的節(jié)點(diǎn)上復(fù)制一份屬于自己的數(shù)據(jù),這些數(shù)據(jù)默認(rèn)會(huì) 保存在內(nèi)存的緩沖區(qū)中,當(dāng)內(nèi)存的緩沖區(qū)達(dá)到一定的閥值的時(shí)候,就會(huì)將數(shù)據(jù)寫(xiě)到磁盤(pán)之上。
5).Merge階段:在ReduceTask遠(yuǎn)程復(fù)制數(shù)據(jù)的同時(shí),會(huì)在后臺(tái)開(kāi)啟兩個(gè)線程對(duì)內(nèi)存到本地的數(shù)據(jù)文件進(jìn)行合并操作。
6).Sort階段:在對(duì)數(shù)據(jù)進(jìn)行合并的同時(shí),會(huì)進(jìn)行排序操作,由于MapTask階段已經(jīng)對(duì)數(shù)據(jù)進(jìn)行了局部的排序, ReduceTask只需保證Copy的數(shù)據(jù)的最終整體有效性即可。
5.MapReduce的Partition和Combine有什么區(qū)別?
1)combine分為map端和reduce端,作用是把同一個(gè)key的鍵值對(duì)合并在一起,可以自定義,該類(lèi)的主要功能是合并相 同的key鍵
2)partition是分割map每個(gè)節(jié)點(diǎn)的結(jié)果,按照key分別映射給不同的reduce,也是可以自定義的,partition的作用就是把 這些數(shù)據(jù)歸類(lèi)
6.Hadoop的高可用模式說(shuō)一下?
7.Zookeeper在Hadoop中的作用?
1)Zookeepe主要用來(lái)解決分布式應(yīng)用中經(jīng)常遇到的數(shù)據(jù)管理問(wèn)題,如集群管理、統(tǒng)一命名服務(wù)、分布式配置管理、 分布式消息隊(duì)列、分布式鎖、分布式協(xié)調(diào)等。
2)Zookeeper是一個(gè)由多個(gè)server組成的集群,一個(gè)leader,多個(gè)follower,每個(gè)server保存一份數(shù)據(jù)副本,全局?jǐn)?shù)據(jù) 一致、分布式讀寫(xiě),更新請(qǐng)求轉(zhuǎn)發(fā),由leader實(shí)施。
8.Sqoop的底層原理?
是用來(lái)實(shí)現(xiàn)結(jié)構(gòu)型數(shù)據(jù)(如關(guān)系數(shù)據(jù)庫(kù))和Hadoop之間進(jìn)行數(shù)據(jù)遷移的工具。它充分利用了MapReduce的并行特 點(diǎn)以批處理的方式加快數(shù)據(jù)的傳輸,同時(shí)也借助MapReduce實(shí)現(xiàn)了容錯(cuò)
9.Sqoop是怎么連接的關(guān)系型數(shù)據(jù)庫(kù)?
sqoop import-all-tables –connect jdbc:mysql://192.168.52.110/hivemetadb --username root -password root
10.Java中抽象類(lèi)怎么理解?
抽象類(lèi)不能實(shí)例化,繼承的關(guān)鍵字仍然是extends,而且繼承過(guò)后可以不覆蓋方法,只是使用繼承而來(lái)的方法
A:抽象類(lèi)和抽象方法必須用abstract關(guān)鍵字修飾;
B:抽象類(lèi)中不一定有抽象方法,但是有抽象方法的類(lèi)必須定義為抽象類(lèi);
C:抽象類(lèi)不能直接實(shí)例化;(可以通過(guò)子類(lèi)(重寫(xiě)方法后的子類(lèi))的多態(tài)方式實(shí)例化);
1.它不是具體的;
2.抽象類(lèi)有構(gòu)造方法,用于子類(lèi)訪問(wèn)父類(lèi)數(shù)據(jù)的初始化;
D:抽象類(lèi)的子類(lèi);
1.如果不想重寫(xiě)抽象方法,該子類(lèi)必須是抽象類(lèi);
2.成為具體類(lèi)則必須重寫(xiě)所有的抽象方法;
11.Hdfs的塊的大小多少能不能改成10M?
不能,假如數(shù)據(jù)塊設(shè)置過(guò)少,那需要讀取的數(shù)據(jù)塊就比較多,由于數(shù)據(jù)塊在硬盤(pán)上非連續(xù)存儲(chǔ),普通硬盤(pán)因?yàn)樾枰?nbsp; 移動(dòng)磁頭,所以隨機(jī)尋址較慢,讀越多的數(shù)據(jù)塊就增大了總的硬盤(pán)尋道時(shí)間。當(dāng)硬盤(pán)尋道時(shí)間比io時(shí)間還要長(zhǎng)的多 時(shí),那硬盤(pán)尋道時(shí)間就成了系統(tǒng)的一個(gè)瓶頸
12.你的項(xiàng)目中你的Hive倉(cāng)庫(kù)怎么設(shè)計(jì)的?分幾層?
1 )源數(shù)據(jù)層:此層數(shù)據(jù)無(wú)任何更改,不對(duì)外開(kāi)放,為臨時(shí)存儲(chǔ)層,是接口數(shù)據(jù)的臨時(shí)存儲(chǔ)區(qū)域,為后一步的數(shù)據(jù)處 理做準(zhǔn)備。
2) 數(shù)據(jù)倉(cāng)庫(kù)層(DW):DW層的數(shù)據(jù)應(yīng)該是一致的、準(zhǔn)確的、干凈的數(shù)據(jù),即對(duì)源系統(tǒng)數(shù)據(jù)進(jìn)行了清洗(去除了 雜質(zhì)后的數(shù)據(jù)。
2) 數(shù)據(jù)應(yīng)用層(DA或APP):前端應(yīng)用直接讀取的數(shù)據(jù)源;根據(jù)報(bào)表、專(zhuān)題分析需求而計(jì)算生成的數(shù)據(jù)。
13.Hive中的內(nèi)表和外表的區(qū)別?
1)在刪除內(nèi)部表的時(shí)候,Hive將會(huì)把屬于表的元數(shù)據(jù)和數(shù)據(jù)全部刪掉;
2)而刪除外部表的時(shí)候,Hive僅僅刪除外部表的元數(shù)據(jù),數(shù)據(jù)是不會(huì)刪除的
14.分區(qū)表和分桶表有什么區(qū)別?
1)分區(qū)就是分文件夾,在表文件夾下多一個(gè)文件夾,分區(qū)字段是虛擬的,用于標(biāo)識(shí)文件,分區(qū)字段一定不是表中存 在的字段,否則會(huì)便宜報(bào)錯(cuò);
2)分桶功能默認(rèn)不開(kāi)啟,需要手動(dòng)開(kāi)啟,分桶個(gè)數(shù)自定義,是相對(duì)于分區(qū)更細(xì)粒度的劃分,是分文件;
15.Hive優(yōu)化假如有數(shù)據(jù)傾斜怎么優(yōu)化?
16.假如你的分析的數(shù)據(jù)有很多小文件,你用SQL語(yǔ)句分析的話會(huì)出現(xiàn)什么情況?
17.能說(shuō)說(shuō)你項(xiàng)目中的模型表是怎么設(shè)計(jì)的嗎?
18.Yarn除了在Hadoop中應(yīng)用,還有什么用到了Yarn?
19.Azkaban的特性?
1、Web用戶界面
2、方便上傳工作流
3、方便設(shè)置任務(wù)之間的關(guān)系
4、調(diào)度工作流
5、認(rèn)證/授權(quán)(權(quán)限的工作)
6、能夠殺死并重新啟動(dòng)工作流
7、模塊化和可插拔的插件機(jī)制
8、項(xiàng)目工作區(qū)
9、工作流和任務(wù)的日志記錄和審計(jì)
20.怎么查看本機(jī)內(nèi)存CPU使用情況?
free -m
21.怎么查看目錄下的所有詳細(xì)情況?
先使用 ls -a 查看當(dāng)前目錄下的所有文件;
然后使用 ls -a -l 查看所有文件的詳細(xì)信息,每一行是一個(gè)文件的所有信息;
再使用 ls -a -l -h 查看所有文件的詳細(xì)信息
22.Hbase索引和Hive索引有什么區(qū)別?
1.Hive中的表為純邏輯表,僅僅對(duì)表的元數(shù)據(jù)進(jìn)行定義。Hive沒(méi)有物理存儲(chǔ)的功能,它完全依賴HDFS和 MapReduce。HBase表則是物理表,適合存放非結(jié)構(gòu)化的數(shù)據(jù)。
2.Hive是在MapReduce的基礎(chǔ)上對(duì)數(shù)據(jù)進(jìn)行處理;而HBase為列模式,這樣使得對(duì)海量數(shù)據(jù)的隨機(jī)訪問(wèn)變得可行。
3.HBase的存儲(chǔ)表存儲(chǔ)密度小,因而用戶可以對(duì)行定義成不同的列;而Hive是邏輯表,屬于稠密型,即定義列數(shù),每 一行對(duì)列數(shù)都有固定的數(shù)據(jù)。
4.Hive使用Hadoop來(lái)分析處理數(shù)據(jù),而Hadoop系統(tǒng)是批處理系統(tǒng),所以數(shù)據(jù)處理存在延時(shí)的問(wèn)題;而HBase是準(zhǔn)實(shí) 時(shí)系統(tǒng),可以實(shí)現(xiàn)數(shù)據(jù)的實(shí)時(shí)查詢。
5.Hive沒(méi)有row-level的更新,它適用于大量append-only數(shù)據(jù)集(如日志)的批任務(wù)處理。而基于HBase的查詢,支 持和row-level的更新。
6.Hive全面支持SQL,一般可以用來(lái)進(jìn)行基于歷史數(shù)據(jù)的挖掘、分析。而HBase不適用于有join,多級(jí)索引,表關(guān)系 復(fù)雜的應(yīng)用場(chǎng)景。
23.數(shù)據(jù)量大如何用Order by 全局排序?
24.Kafka,Flume中組件包括哪些?
Kafka組件:
Topic :消息根據(jù)Topic進(jìn)行歸類(lèi)
Producer:發(fā)送消息者
Consumer:消息接受者
broker:每個(gè)kafka實(shí)例(server)
Zookeeper:依賴集群保存meta信息。
Flume組件:
Agent:
Source:
Channel:
Sink:
25.查看內(nèi)存使用情況/磁盤(pán)使用情況命令行?
free -m
26.Hdfs的讀寫(xiě)流程?
27.Flume中Agent各個(gè)組件包含什么?
28.Hive數(shù)據(jù)傾斜如何處理??jī)?nèi)部表,外部表,分區(qū),分桶
29.order by ,sort by ,destribute by,cluster by 區(qū)別?
1)order by
order by會(huì)對(duì)輸入做全局排序,因此只有一個(gè)Reducer(多個(gè)Reducer無(wú)法保證全局有序),然而只有一個(gè)Reducer,會(huì)導(dǎo) 致當(dāng)輸入規(guī)模較大時(shí),消耗較長(zhǎng)的計(jì)算時(shí)間。
2)sort by
sort by不是全局排序,其在數(shù)據(jù)進(jìn)入reducer前完成排序,sort by只會(huì)保證每個(gè)reducer的輸出有序,并不保證全局有 序。sort by的數(shù)據(jù)只能保證在同一個(gè)reduce中的數(shù)據(jù)可以按指定字段排序。
3)distribute by
distribute by是控制在map端如何拆分?jǐn)?shù)據(jù)給reduce端的。hive會(huì)根據(jù)distribute by后面列,對(duì)應(yīng)reduce的個(gè)數(shù)進(jìn)行分 發(fā),默認(rèn)是采用hash算法。sort by為每個(gè)reduce產(chǎn)生一個(gè)排序文件。在有些情況下,你需要控制某個(gè)特定行應(yīng)該到哪個(gè) reducer,這通常是為了進(jìn)行后續(xù)的聚集操作。distribute by剛好可以做這件事。因此,distribute by經(jīng)常和sort by配合 使 用。
4)cluster by
cluster by除了具有distribute by的功能外還兼具sort by的功能。但是排序只能是倒敘排序,不能指定排序規(guī)則為ASC或 者DESC。
30.Sqoop怎么連接數(shù)據(jù)庫(kù)?
31.where和having的區(qū)別?
1) “Where” 是一個(gè)約束聲明,使用Where來(lái)約束來(lái)自數(shù)據(jù)庫(kù)的數(shù)據(jù),Where是在結(jié)果返回之前起作用的,且Where中不能使 用聚合函數(shù)。
2)“Having”是一個(gè)過(guò)濾聲明,是在查詢返回結(jié)果集以后對(duì)查詢結(jié)果進(jìn)行的過(guò)濾操作,在Having中可以使用聚合函數(shù)。
32.左連接和右連接的區(qū)別?
左連接where只影向右表,右連接where只影響左表
1)Left Join
select * from tbl1 Left Join tbl2 where tbl1.ID = tbl2.ID
左連接后的檢索結(jié)果是顯示tbl1的所有數(shù)據(jù)和tbl2中滿足where 條件的數(shù)據(jù)。
2)Right Join
select * from tbl1 Right Join tbl2 where tbl1.ID = tbl2.ID
檢索結(jié)果是tbl2的所有數(shù)據(jù)和tbl1中滿足where 條件的數(shù)據(jù)。
33.Hive中如何對(duì)大量數(shù)據(jù)進(jìn)行全局排序?
34.Linux指令
35.Shell,Hive,Hbase,Spark,Sqoop
36.機(jī)架感應(yīng)機(jī)制
項(xiàng)目面試題
1.大概介紹一下項(xiàng)目;
2.hbase表你們是怎么存數(shù)據(jù)的?一天數(shù)據(jù)量是多少?這么多數(shù)據(jù)你們都存hbase里嗎?一開(kāi)始就是個(gè)文件,hbase是表結(jié)構(gòu),那你是怎么去獲取數(shù)據(jù)然后給存成表結(jié)構(gòu)的?
3.假如現(xiàn)在我要查詢每個(gè)月的每個(gè)片區(qū)里訂單成交量最高的那個(gè)司機(jī)ID,你怎么實(shí)現(xiàn)?
4.hive怎么讀取數(shù)據(jù)的?我要只存里邊我需要的數(shù)據(jù),你給我想下怎么優(yōu)化?
5.你都用過(guò)哪些ETL工具?怎么用的?就像flume是怎么獲取數(shù)據(jù)的,你怎么配置的?那kafka怎么讀取數(shù)據(jù)的?hive是直接從kafka里獲取數(shù)據(jù)嗎?
6.你建過(guò)外表嗎?怎么建的?為什么要建外表?
7.你會(huì)寫(xiě)shell嗎?寫(xiě)過(guò)哪些?
8.你應(yīng)該也經(jīng)常用linux命令吧,都用過(guò)哪些?我現(xiàn)在要查所有后綴是.txt的文件名,怎么查?grep用過(guò)嗎?
9.我現(xiàn)在不想查司機(jī),我想查訂單,怎么去設(shè)計(jì)hbase表?
相關(guān)文章
java方向大數(shù)據(jù)面試題與參考答案整理匯總
這篇文章主要介紹了java方向大數(shù)據(jù)面試題與參考答案,整理總結(jié)了java大數(shù)據(jù)方向常見(jiàn)面試題、知識(shí)點(diǎn)與參考答案,需要的朋友可以參考下2020-01-16京東大數(shù)據(jù)方向Java實(shí)習(xí)面試經(jīng)歷簡(jiǎn)述【一面、二面】
這篇文章主要介紹了京東大數(shù)據(jù)方向Java實(shí)習(xí)面試經(jīng)歷,簡(jiǎn)單描述了京東大數(shù)據(jù)方向java面試一面與二面過(guò)程中所遇到的各種問(wèn)題,需要的朋友可以參考下2019-12-10大數(shù)據(jù)爬蟲(chóng)實(shí)習(xí)招聘面試題解析
這篇文章主要介紹了大數(shù)據(jù)爬蟲(chóng)實(shí)習(xí)招聘面試題,總結(jié)分析了大數(shù)據(jù)爬蟲(chóng)崗位招聘中的面試題及參考答案,需要的朋友可以參考下2019-11-29阿里大數(shù)據(jù)工程師面試流程與經(jīng)驗(yàn)總結(jié)
這篇文章主要介紹了阿里大數(shù)據(jù)工程師面試流程與經(jīng)驗(yàn),總結(jié)分析了阿里大數(shù)據(jù)工程師三輪面試的經(jīng)歷與相關(guān)問(wèn)題注意事項(xiàng),需要的朋友可以參考下2019-11-15百度大數(shù)據(jù)實(shí)習(xí)生職位電話面試總結(jié)
這篇文章主要介紹了百度大數(shù)據(jù)實(shí)習(xí)生職位電話面試,總結(jié)分析了百度大數(shù)據(jù)實(shí)習(xí)生職位招聘電話面試過(guò)程中所遇到的各種問(wèn)題與面試經(jīng)驗(yàn),需要的朋友可以參考下2019-11-07大數(shù)據(jù)spark經(jīng)典面試題目與參考答案總結(jié)
這篇文章主要介紹了大數(shù)據(jù)spark經(jīng)典面試題目,整理總結(jié)了大數(shù)據(jù)spark面試中遇到的比較經(jīng)典的簡(jiǎn)答題與選擇題,涉及spark概念、原理、配置、使用等相關(guān)知識(shí)點(diǎn),需要的朋友可以參2019-10-24大數(shù)據(jù)相關(guān)常見(jiàn)面試題與答案整理
這篇文章主要介紹了大數(shù)據(jù)相關(guān)常見(jiàn)面試題與答案,總結(jié)分析了大數(shù)據(jù)相關(guān)的概念、技術(shù)、原理,需要的朋友可以參考下2019-10-21- 這篇文章主要介紹了大數(shù)據(jù)spark精華面試題與參考答案,整理總結(jié)了大數(shù)據(jù)spark面試中經(jīng)常遇到的各類(lèi)問(wèn)題、概念與知識(shí)點(diǎn),需要的朋友可以參考下2019-10-15
- 這篇文章主要介紹了大數(shù)據(jù)工程師面試題與參考答案,總結(jié)整理了大數(shù)據(jù)相關(guān)的基本概念、原理、知識(shí)點(diǎn)與注意事項(xiàng),需要的朋友可以參考下2019-09-16
大數(shù)據(jù)基礎(chǔ)面試題考點(diǎn)與知識(shí)點(diǎn)整理
這篇文章主要介紹了大數(shù)據(jù)基礎(chǔ)面試題考點(diǎn)與知識(shí)點(diǎn),總結(jié)整理了大數(shù)據(jù)常見(jiàn)的各種知識(shí)點(diǎn)、難點(diǎn)、考點(diǎn)以及相關(guān)注意事項(xiàng),需要的朋友可以參考下2019-09-09