欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

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

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

技術面試題

1.Hadoop中有哪些組件?

              Hadoop=HDFS+Yarn+MapReduce+Hive+Hbase+...

            1).HDFS:分布式文件存儲系統(tǒng)

                 主:namenode,secondarynamenode

                 從:datanode

            2).Yarn:分布式資源管理系統(tǒng),用于同一管理集群中的資源(內(nèi)存等)

                     主:ResourceManager

                     從:NodeManager

            3).MapReduce:Hadoop的計算框架,用map和reduce方式實現(xiàn)數(shù)據(jù)的全局匯總

            4).Zookeeper:分布式協(xié)調(diào)服務,用于維護集群配置的一致性、任務提交的事物性、集群中服務的地址管理、集群管理等

                     主:QuorumPeerMain

                     從:QuorumPeerMain

            5).Hbase:Hadoop下的分布式數(shù)據(jù)庫,類似于NoSQL

                     主:HMaster,HRegionserver,Region

            7).Hive:分布式數(shù)據(jù)倉庫,其實說白了就是一個數(shù)據(jù)分析工具,底層用的還是MapReduce

            8).Sqoop:用于將傳統(tǒng)數(shù)據(jù)庫中數(shù)據(jù)導入到hbase或者Hdfs中一個導入工具

            9).Spark:基于內(nèi)存的分布式處理框架

                     主:Master

                     從:Worker

2.Hdfs中角色有哪些?

          NameNode:管理元數(shù)據(jù)信息,給子節(jié)點分配任務(FSImage是主節(jié)點啟動時對整個文件系統(tǒng)的快照,Edits是修改記錄)

          DataNode:負責數(shù)據(jù)存儲,實時上報心跳給主節(jié)點

          SecondaryNameNode:

                1)首先,它定時到NameNode去獲取edit logs,并更新到fsimage上。一旦它有了新的fsimage文件,它將其拷貝回                            NameNode中。

               2) NameNode在下次重啟時會使用這個新的fsimage文件,從而減少重啟的時間。

3.Hdfs和Yarn有什么區(qū)別?

              1)Hdfs是分布式文件存儲系統(tǒng),是用來存儲文件的; 

              2)Yarn是一個資源管理系統(tǒng),可為上層應用提供統(tǒng)一的資源管理和調(diào)度,它的引入為集群在利用率、資源統(tǒng)一管理和                        數(shù)據(jù)共享等方面帶來了巨大好處

4.MapReduce的shuffle過程?

              從Map產(chǎn)生輸出開始到Reduce取得數(shù)據(jù)作為輸入之前的過程稱作shuffle。

              1).Collect階段:將MapTask的結果輸出到默認大小為100M的環(huán)形緩沖區(qū),保存的是key/value,Partition分區(qū)信息等。

              2).Spill階段:當內(nèi)存中的數(shù)據(jù)量達到一定的閥值的時候,就會將數(shù)據(jù)寫入本地磁盤,在將數(shù)據(jù)寫入磁盤之前需要對數(shù)據(jù)                     進行一次排序的操作,如果配置了combiner,還會將有相同分區(qū)號和key的數(shù)據(jù)進行排序。

              3).Merge階段:把所有溢出的臨時文件進行一次合并操作,以確保一個MapTask最終只產(chǎn)生一個中間數(shù)據(jù)文件。

              4).Copy階段:ReduceTask啟動Fetcher線程到已經(jīng)完成MapTask的節(jié)點上復制一份屬于自己的數(shù)據(jù),這些數(shù)據(jù)默認會                       保存在內(nèi)存的緩沖區(qū)中,當內(nèi)存的緩沖區(qū)達到一定的閥值的時候,就會將數(shù)據(jù)寫到磁盤之上。

              5).Merge階段:在ReduceTask遠程復制數(shù)據(jù)的同時,會在后臺開啟兩個線程對內(nèi)存到本地的數(shù)據(jù)文件進行合并操作。

              6).Sort階段:在對數(shù)據(jù)進行合并的同時,會進行排序操作,由于MapTask階段已經(jīng)對數(shù)據(jù)進行了局部的排序,                                  ReduceTask只需保證Copy的數(shù)據(jù)的最終整體有效性即可。

5.MapReduce的Partition和Combine有什么區(qū)別?

                  1)combine分為map端和reduce端,作用是把同一個key的鍵值對合并在一起,可以自定義,該類的主要功能是合并相                         同的key鍵

                  2)partition是分割map每個節(jié)點的結果,按照key分別映射給不同的reduce,也是可以自定義的,partition的作用就是把                      這些數(shù)據(jù)歸類

6.Hadoop的高可用模式說一下?

7.Zookeeper在Hadoop中的作用?

                    1)Zookeepe主要用來解決分布式應用中經(jīng)常遇到的數(shù)據(jù)管理問題,如集群管理、統(tǒng)一命名服務、分布式配置管理、                        分布式消息隊列、分布式鎖、分布式協(xié)調(diào)等。

                    2)Zookeeper是一個由多個server組成的集群,一個leader,多個follower,每個server保存一份數(shù)據(jù)副本,全局數(shù)據(jù)                         一致、分布式讀寫,更新請求轉(zhuǎn)發(fā),由leader實施。

8.Sqoop的底層原理?

                    是用來實現(xiàn)結構型數(shù)據(jù)(如關系數(shù)據(jù)庫)和Hadoop之間進行數(shù)據(jù)遷移的工具。它充分利用了MapReduce的并行特                        點以批處理的方式加快數(shù)據(jù)的傳輸,同時也借助MapReduce實現(xiàn)了容錯

9.Sqoop是怎么連接的關系型數(shù)據(jù)庫?

                    sqoop import-all-tables –connect jdbc:mysql://192.168.52.110/hivemetadb --username root -password root

10.Java中抽象類怎么理解?

                    抽象類不能實例化,繼承的關鍵字仍然是extends,而且繼承過后可以不覆蓋方法,只是使用繼承而來的方法

                     A:抽象類和抽象方法必須用abstract關鍵字修飾;

                   B:抽象類中不一定有抽象方法,但是有抽象方法的類必須定義為抽象類;

                 C:抽象類不能直接實例化;(可以通過子類(重寫方法后的子類)的多態(tài)方式實例化);

                         1.它不是具體的;

                         2.抽象類有構造方法,用于子類訪問父類數(shù)據(jù)的初始化;

                D:抽象類的子類;

                         1.如果不想重寫抽象方法,該子類必須是抽象類;

                         2.成為具體類則必須重寫所有的抽象方法;

11.Hdfs的塊的大小多少能不能改成10M?

                    不能,假如數(shù)據(jù)塊設置過少,那需要讀取的數(shù)據(jù)塊就比較多,由于數(shù)據(jù)塊在硬盤上非連續(xù)存儲,普通硬盤因為需要                        移動磁頭,所以隨機尋址較慢,讀越多的數(shù)據(jù)塊就增大了總的硬盤尋道時間。當硬盤尋道時間比io時間還要長的多                        時,那硬盤尋道時間就成了系統(tǒng)的一個瓶頸

12.你的項目中你的Hive倉庫怎么設計的?分幾層?

                  1 )源數(shù)據(jù)層:此層數(shù)據(jù)無任何更改,不對外開放,為臨時存儲層,是接口數(shù)據(jù)的臨時存儲區(qū)域,為后一步的數(shù)據(jù)處                          理做準備。

                  2) 數(shù)據(jù)倉庫層(DW):DW層的數(shù)據(jù)應該是一致的、準確的、干凈的數(shù)據(jù),即對源系統(tǒng)數(shù)據(jù)進行了清洗(去除了                            雜質(zhì)后的數(shù)據(jù)。

                  2) 數(shù)據(jù)應用層(DA或APP):前端應用直接讀取的數(shù)據(jù)源;根據(jù)報表、專題分析需求而計算生成的數(shù)據(jù)。

13.Hive中的內(nèi)表和外表的區(qū)別?

                  1)在刪除內(nèi)部表的時候,Hive將會把屬于表的元數(shù)據(jù)和數(shù)據(jù)全部刪掉;

                  2)而刪除外部表的時候,Hive僅僅刪除外部表的元數(shù)據(jù),數(shù)據(jù)是不會刪除的

14.分區(qū)表和分桶表有什么區(qū)別?

                  1)分區(qū)就是分文件夾,在表文件夾下多一個文件夾,分區(qū)字段是虛擬的,用于標識文件,分區(qū)字段一定不是表中存                           在的字段,否則會便宜報錯;

                  2)分桶功能默認不開啟,需要手動開啟,分桶個數(shù)自定義,是相對于分區(qū)更細粒度的劃分,是分文件;

15.Hive優(yōu)化假如有數(shù)據(jù)傾斜怎么優(yōu)化?

 

16.假如你的分析的數(shù)據(jù)有很多小文件,你用SQL語句分析的話會出現(xiàn)什么情況?

17.能說說你項目中的模型表是怎么設計的嗎?

18.Yarn除了在Hadoop中應用,還有什么用到了Yarn?

19.Azkaban的特性?

       1、Web用戶界面 
  2、方便上傳工作流 
  3、方便設置任務之間的關系 
  4、調(diào)度工作流 
  5、認證/授權(權限的工作) 
  6、能夠殺死并重新啟動工作流 
  7、模塊化和可插拔的插件機制 
  8、項目工作區(qū) 
  9、工作流和任務的日志記錄和審計

20.怎么查看本機內(nèi)存CPU使用情況?

free -m

21.怎么查看目錄下的所有詳細情況?

       先使用 ls -a 查看當前目錄下的所有文件;

       然后使用 ls -a -l 查看所有文件的詳細信息,每一行是一個文件的所有信息;

       再使用 ls -a -l -h 查看所有文件的詳細信息

22.Hbase索引和Hive索引有什么區(qū)別?

                  1.Hive中的表為純邏輯表,僅僅對表的元數(shù)據(jù)進行定義。Hive沒有物理存儲的功能,它完全依賴HDFS和                                          MapReduce。HBase表則是物理表,適合存放非結構化的數(shù)據(jù)。

                  2.Hive是在MapReduce的基礎上對數(shù)據(jù)進行處理;而HBase為列模式,這樣使得對海量數(shù)據(jù)的隨機訪問變得可行。

                  3.HBase的存儲表存儲密度小,因而用戶可以對行定義成不同的列;而Hive是邏輯表,屬于稠密型,即定義列數(shù),每                       一行對列數(shù)都有固定的數(shù)據(jù)。

                  4.Hive使用Hadoop來分析處理數(shù)據(jù),而Hadoop系統(tǒng)是批處理系統(tǒng),所以數(shù)據(jù)處理存在延時的問題;而HBase是準實                       時系統(tǒng),可以實現(xiàn)數(shù)據(jù)的實時查詢。

                  5.Hive沒有row-level的更新,它適用于大量append-only數(shù)據(jù)集(如日志)的批任務處理。而基于HBase的查詢,支                         持和row-level的更新。

                  6.Hive全面支持SQL,一般可以用來進行基于歷史數(shù)據(jù)的挖掘、分析。而HBase不適用于有join,多級索引,表關系                         復雜的應用場景。

23.數(shù)據(jù)量大如何用Order by 全局排序?

24.Kafka,Flume中組件包括哪些?

       Kafka組件:

              Topic :消息根據(jù)Topic進行歸類

              Producer:發(fā)送消息者

              Consumer:消息接受者

              broker:每個kafka實例(server)

              Zookeeper:依賴集群保存meta信息。

       Flume組件:

              Agent:

              Source:

              Channel:

              Sink:

25.查看內(nèi)存使用情況/磁盤使用情況命令行?

     free -m

26.Hdfs的讀寫流程?

27.Flume中Agent各個組件包含什么?

             

28.Hive數(shù)據(jù)傾斜如何處理?內(nèi)部表,外部表,分區(qū),分桶

29.order by ,sort by ,destribute by,cluster by 區(qū)別?

       1)order by

              order by會對輸入做全局排序,因此只有一個Reducer(多個Reducer無法保證全局有序),然而只有一個Reducer,會導                  致當輸入規(guī)模較大時,消耗較長的計算時間。

       2)sort by

              sort by不是全局排序,其在數(shù)據(jù)進入reducer前完成排序,sort by只會保證每個reducer的輸出有序,并不保證全局有                    序。sort by的數(shù)據(jù)只能保證在同一個reduce中的數(shù)據(jù)可以按指定字段排序。

       3)distribute by

             distribute by是控制在map端如何拆分數(shù)據(jù)給reduce端的。hive會根據(jù)distribute by后面列,對應reduce的個數(shù)進行分                     發(fā),默認是采用hash算法。sort by為每個reduce產(chǎn)生一個排序文件。在有些情況下,你需要控制某個特定行應該到哪個               reducer,這通常是為了進行后續(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ù)庫?

31.where和having的區(qū)別?

     1)  “Where” 是一個約束聲明,使用Where來約束來自數(shù)據(jù)庫的數(shù)據(jù),Where是在結果返回之前起作用的,且Where中不能使              用聚合函數(shù)。

       2)“Having”是一個過濾聲明,是在查詢返回結果集以后對查詢結果進行的過濾操作,在Having中可以使用聚合函數(shù)。

32.左連接和右連接的區(qū)別?

       左連接where只影向右表,右連接where只影響左表

              1)Left Join

                     select * from tbl1 Left Join tbl2 where tbl1.ID = tbl2.ID

                     左連接后的檢索結果是顯示tbl1的所有數(shù)據(jù)和tbl2中滿足where 條件的數(shù)據(jù)。

              2)Right Join

                     select * from tbl1 Right Join tbl2 where tbl1.ID = tbl2.ID

                     檢索結果是tbl2的所有數(shù)據(jù)和tbl1中滿足where 條件的數(shù)據(jù)。

33.Hive中如何對大量數(shù)據(jù)進行全局排序?

34.Linux指令

35.Shell,Hive,Hbase,Spark,Sqoop

36.機架感應機制

項目面試題

1.大概介紹一下項目;

2.hbase表你們是怎么存數(shù)據(jù)的?一天數(shù)據(jù)量是多少?這么多數(shù)據(jù)你們都存hbase里嗎?一開始就是個文件,hbase是表結構,那你是怎么去獲取數(shù)據(jù)然后給存成表結構的?

3.假如現(xiàn)在我要查詢每個月的每個片區(qū)里訂單成交量最高的那個司機ID,你怎么實現(xiàn)?

4.hive怎么讀取數(shù)據(jù)的?我要只存里邊我需要的數(shù)據(jù),你給我想下怎么優(yōu)化?

5.你都用過哪些ETL工具?怎么用的?就像flume是怎么獲取數(shù)據(jù)的,你怎么配置的?那kafka怎么讀取數(shù)據(jù)的?hive是直接從kafka里獲取數(shù)據(jù)嗎?

6.你建過外表嗎?怎么建的?為什么要建外表?

7.你會寫shell嗎?寫過哪些?

8.你應該也經(jīng)常用linux命令吧,都用過哪些?我現(xiàn)在要查所有后綴是.txt的文件名,怎么查?grep用過嗎?

9.我現(xiàn)在不想查司機,我想查訂單,怎么去設計hbase表?

相關文章

最新評論