亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

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

  發(fā)布時(shí)間:2020-01-23 14:22:49   作者:老子天下最美   我要評(píng)論
這篇文章主要介紹了大數(shù)據(jù)常見(jiàn)面試題與參考答案,總結(jié)分析了大數(shù)據(jù)面試過(guò)程中常見(jiàn)的各種問(wèn)題、知識(shí)點(diǎn)及參考建議,需要的朋友可以參考下

技術(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)文章

最新評(píng)論