一区二区视频_久久久精品国产_一级在线观看_欧美福利_国产精品免费看_国产大片在线观看

當前位置: 首頁 / 技術(shù)干貨 / 正文
好程序員大數(shù)據(jù)培訓(xùn)之大數(shù)據(jù)面試題整理

2020-09-28

大數(shù)據(jù)培訓(xùn) 大數(shù)據(jù)面試題

  今天好程序員大數(shù)據(jù)培訓(xùn)老師給大家分享一篇關(guān)于大數(shù)據(jù)面試題整理的詳細介紹,下面我們一起來看一下吧。

好程序員

  一、.hdfs寫文件的步驟

  答案:

  (1)client向NameNode申請上傳…/xxx.txt文件

  (2)NN向client響應(yīng)可以上傳文件

  (3)Client向NameNode申請DataNode

  (4)NN向Client返回DN1,DN2,DN3

  (5)Client向DN1,DN2,DN3申請建立文件傳輸通道

  (6)DN3,DN2,DN1依次響應(yīng)連接

  (7)Client向DN1上傳一個block,DN1向DN2,DN3冗余文件

  大數(shù)據(jù)面試題整理

  二、hdfs讀取文件步驟

  答案:

  (1)client向NN請求下載…/xxx.txt文件

  (2)NN向client返回文件的元數(shù)據(jù)

  (3)Client向DN1請求訪問讀數(shù)據(jù)blk_1

  (4)DN1向Client傳輸數(shù)據(jù)

  (5)Client向DN2請求訪問讀數(shù)據(jù)blk_2

  (6)DN2向Client傳輸數(shù)據(jù)

  大數(shù)據(jù)面試題整理

  大數(shù)據(jù)面試題整理

  三、hadoop的shuffle過程

  1.Map端的shuffle

  Map端會處理輸入數(shù)據(jù)并產(chǎn)生中間結(jié)果,這個中間結(jié)果會寫到本地磁盤,而不是HDFS。每個Map的輸出會先寫到內(nèi)存緩沖區(qū)中,當寫入的數(shù)據(jù)達到設(shè)定的閾值時,系統(tǒng)將會啟動一個線程將緩沖區(qū)的數(shù)據(jù)寫到磁盤,這個過程叫做spill。

  在spill寫入之前,會先進行二次排序,首先根據(jù)數(shù)據(jù)所屬的partition進行排序,然后每個partition中的數(shù)據(jù)再按key來排序。partition的目是將記錄劃分到不同的Reducer上去,以期望能夠達到負載均衡,以后的Reducer就會根據(jù)partition來讀取自己對應(yīng)的數(shù)據(jù)。接著運行combiner(如果設(shè)置了的話),combiner的本質(zhì)也是一個Reducer,其目的是對將要寫入到磁盤上的文件先進行一次處理,這樣,寫入到磁盤的數(shù)據(jù)量就會減少。zui后將數(shù)據(jù)寫到本地磁盤產(chǎn)生spill文件(spill文件保存在{mapred.local.dir}指定的目錄中,Map任務(wù)結(jié)束后就會被刪除)。

  zui后,每個Map任務(wù)可能產(chǎn)生多個spill文件,在每個Map任務(wù)完成前,會通過多路歸并算法將這些spill文件歸并成一個文件。至此,Map的shuffle過程就結(jié)束了。

  2.Reduce端的shuffle

  Reduce端的shuffle主要包括三個階段,copy、sort(merge)和reduce。

  首先要將Map端產(chǎn)生的輸出文件拷貝到Reduce端,但每個Reducer如何知道自己應(yīng)該處理哪些數(shù)據(jù)呢?因為Map端進行partition的時候,實際上就相當于指定了每個Reducer要處理的數(shù)據(jù)(partition就對應(yīng)了Reducer),所以Reducer在拷貝數(shù)據(jù)的時候只需拷貝與自己對應(yīng)的partition中的數(shù)據(jù)即可。每個Reducer會處理一個或者多個partition,但需要先將自己對應(yīng)的partition中的數(shù)據(jù)從每個Map的輸出結(jié)果中拷貝過來。

  接下來就是sort階段,也成為merge階段,因為這個階段的主要工作是執(zhí)行了歸并排序。從Map端拷貝到Reduce端的數(shù)據(jù)都是有序的,所以很適合歸并排序。zui終在Reduce端生成一個較大的文件作為Reduce的輸入。

  zui后就是Reduce過程了,在這個過程中產(chǎn)生了zui終的輸出結(jié)果,并將其寫到HDFS上。

  四、fsimage和edit的區(qū)別?

  當NN,SN要進行數(shù)據(jù)同步時叫做checkpoint時就用到了fsimage與edit,fsimage是保存zui新的元數(shù)據(jù)的信息,當fsimage數(shù)據(jù)到一定的大小事會去生成一個新的文件來保存元數(shù)據(jù)的信息,這個新的文件就是edit,edit會回滾zui新的數(shù)據(jù)。

  五、簡單說一下hadoop的map-reduce模型

  首先maptask會從本地文件系統(tǒng)讀取數(shù)據(jù),轉(zhuǎn)換成key-value形式的鍵值對集合,使用的是hadoop內(nèi)置的數(shù)據(jù)類型,如Text,Longwritable等。

  將鍵值對集合輸入mapper進行業(yè)務(wù)處理過程,將其轉(zhuǎn)化成需要的key-value再輸出。

  之后會進行一個partition分區(qū)操作,默認使用的是hashpartitioner,可以通過重寫hashpartitioner的getPartition方法來自定義分區(qū)規(guī)則。

  之后會對key進行sort排序,grouping分組操作將相同key的value合并分組輸出,在這里可以使用自定義的數(shù)據(jù)類型,重寫WritableComparator的Comparator方法來自定義排序規(guī)則,重寫RawComparator的compara方法來自定義分組規(guī)則。

  之后進行一個combiner歸約操作,就是一個本地的reduce預(yù)處理,以減小shuffle,reducer的工作量。

  Reducetask會用過網(wǎng)絡(luò)將各個數(shù)據(jù)收集進行reduce處理,zui后將數(shù)據(jù)保存或者顯示,結(jié)束整個job。

  六、運行hadoop集群需要哪些守護進程?

  DataNode,NameNode,TaskTracker和JobTracker都是運行Hadoop集群需要的守護進程。

  七、hadoop的TextInputFormat作用是什么,如何自定義實現(xiàn)?

  InputFormat會在map操作之前對數(shù)據(jù)進行兩方面的預(yù)處理。

  1.是getSplits,返回的是InputSplit數(shù)組,對數(shù)據(jù)進行Split分片,每片交給map操作一次。

  2.是getRecordReader,返回的是RecordReader對象,對每個Split分片進行轉(zhuǎn)換為key-value鍵值對格式傳遞給map常用的InputFormat是TextInputFormat,使用的是LineRecordReader對每個分片進行鍵值對的轉(zhuǎn)換,以行偏移量作為鍵,行內(nèi)容作為值。

  自定義類繼承InputFormat接口,重寫createRecordReader和isSplitable方法在createRecordReader中可以自定義分隔符。

  八、hadoop和spark都是并行計算,那么他們有什么相同和區(qū)別?

  兩者都使用mr模型來進行并行計算,hadoop的一個作業(yè)稱為job,job里面分為maptask和reducetask,每個task都是在自己的進程中運行的,當task結(jié)束時,進程也會結(jié)束。

  Spark用戶提交的任務(wù)稱為application,一個application對應(yīng)一個SparkContext,app中存在多個job,沒觸發(fā)一個action操作就會產(chǎn)生一個job。

  這些job可以并行或者串行執(zhí)行,每個job有多個stage,stage是shuffle過程中DAGSchaduler通過RDD之間的依賴關(guān)系劃分job而來的,每個stage里面有多個task,組成taskset有TaskSchaduler分發(fā)到各個executor中執(zhí)行,executor的生命周期是和application一樣的,即使沒有job運行也是存在的,所以task可以快速啟動讀取內(nèi)存進行計算的。

  Hadoop的job只有map和reduce操作,表達能力比較欠缺而且在mr過程中會重復(fù)的讀寫hdfs,造成大量的io操作,多個job需要自己管理關(guān)系。

  Spark的迭代計算都是在內(nèi)存中進行的,API中提供了大量的RDD操作join,groupby等,而且通過DAG圖可以實現(xiàn)良好的容錯。

  九、為什么要用flume導(dǎo)入hdfs,hdfs的架構(gòu)是怎樣的?

  Flume可以實時的導(dǎo)入數(shù)據(jù)到hdfs中,當hdfs上的文件達到一個指定大小的時候會形成一個文件,或者超時所指定時間的話也形成一個文件。

  文件都是存儲在datanode上的,namenode存儲著datanode的元數(shù)據(jù)信息,而namenode的元數(shù)據(jù)信息是存在內(nèi)存中的,所以當文件切片很小或者很多的時候會卡死。

  十、MR程序運行的時候會有什么比較常見的問題?

  比如說作業(yè)中大部分都完成了,但是總有幾個reduce一直在運行。

  這是因為這幾個reduce中的處理的數(shù)據(jù)要遠遠大于其他的reduce,可能是對鍵值對任務(wù)劃分的不均勻造成的數(shù)據(jù)傾斜。

  解決的方法可以在分區(qū)的時候重新定義分區(qū)規(guī)則對于value數(shù)據(jù)很多的key可以進行拆分、均勻打散等處理,或者是在map端的combiner中進行數(shù)據(jù)預(yù)處理的操作。

  十一、簡單說一下hadoop和spark的shuffle過程

  Hadoop:map端保存分片數(shù)據(jù),通過網(wǎng)絡(luò)收集到reduce端。

  Spark:spark的shuffle實在DAGSchedular劃分Stage的時候產(chǎn)生的,TaskSchedular要分發(fā)Stage到各個worker的executor。減少shuffle可以提高性能。

  十二、hive中存放的是什么?

  表。

  存的是和hdfs的映射關(guān)系,hive是邏輯上的數(shù)據(jù)倉庫,實際操作的都是hdfs上的文件,HQL就是用SQL語法來寫的MR程序。

  十三、Hive與關(guān)系型數(shù)據(jù)庫的關(guān)系?

  沒有關(guān)系,hive是數(shù)據(jù)倉庫,不能和數(shù)據(jù)庫一樣進行實時的CRUD操作。

  是一次寫入多次讀取的操作,可以看成是ETL的工具。

  十四、Flume的工作及時是什么?

  核心概念是agent,里面包括source,channel和sink三個組件。

  Source運行在日志收集節(jié)點進行日志采集,之后臨時存儲在channel中,sink負責將channel中的數(shù)據(jù)發(fā)送到目的地。

  只有發(fā)送成功channel中的數(shù)據(jù)才會被刪除。

  首先書寫flume配置文件,定義agent、source、channel和sink然后將其組裝,執(zhí)行flume-ng命令。

  十五、Hbase行鍵列族的概念,物理模型,表的設(shè)計原則?

  行鍵:是hbase表自帶的,每個行鍵對應(yīng)一條數(shù)據(jù)。

  列族:是創(chuàng)建表時指定的,為列的集合,每個列族作為一個文件單獨存儲,存儲的數(shù)據(jù)都是字節(jié)數(shù)組,其中數(shù)據(jù)可以有很多,通過時間戳來區(qū)分。

  物理模型:整個hbase表會拆分成多個region,每個region記錄著行鍵的起始點保存在不同的節(jié)點上,查詢時就是對各個節(jié)點的并行查詢,當region很大時使用.META表存儲各個region的起始點,-ROOT又可以存儲.META的起始點。

  Rowkey的設(shè)計原則:各個列族數(shù)據(jù)平衡,長度原則、相鄰原則,創(chuàng)建表的時候設(shè)置表放入regionserver緩存中,避免自動增長和時間,使用字節(jié)數(shù)組代替string,zui大長度64kb,zui好16字節(jié)以內(nèi),按天分表,兩個字節(jié)散列,四個字節(jié)存儲時分毫秒。

  列族的設(shè)計原則:盡可能少(按照列族進行存儲,按照region進行讀取,不必要的io操作),經(jīng)常和不經(jīng)常使用的兩類數(shù)據(jù)放入不同列族中,列族名字盡可能短。

  十六、請列出正常的hadoop集群中hadoop都分別需要啟動哪些進程,他們的作用分別都是什么,請盡量列的詳細一些。

  namenode:負責管理hdfs中文件塊的元數(shù)據(jù),響應(yīng)客戶端請求,管理datanode上文件block的均衡,維持副本數(shù)量

  Secondname:主要負責做checkpoint操作;也可以做冷備,對一定范圍內(nèi)數(shù)據(jù)做快照性備份。

  Datanode:存儲數(shù)據(jù)塊,負責客戶端對數(shù)據(jù)塊的io請求

  Jobtracker:管理任務(wù),并將任務(wù)分配給tasktracker。

  Tasktracker:執(zhí)行JobTracker分配的任務(wù)。

  Resourcemanager、Nodemanager、Journalnode、Zookeeper、Zkfc

  十七、請說明hive中SortBy、OrderBy、ClusterBy,DistributeBy各代表什么意思?

  orderby:會對輸入做全局排序,因此只有一個reducer(多個reducer無法保證全局有序)。只有一個reducer,會導(dǎo)致當輸入規(guī)模較大時,需要較長的計算時間。

  sortby:不是全局排序,其在數(shù)據(jù)進入reducer前完成排序。

  distributeby:按照指定的字段對數(shù)據(jù)進行劃分輸出到不同的reduce中。

  clusterby:除了具有distributeby的功能外還兼具sortby的功能。

  十八、HBase簡單讀寫流程?

  讀:

  找到要讀數(shù)據(jù)的region所在的RegionServer,然后按照以下順序進行讀取:先去BlockCache讀取,若BlockCache沒有,則到Memstore讀取,若Memstore中沒有,則到HFile中去讀。

  寫:

  找到要寫數(shù)據(jù)的region所在的RegionServer,然后先將數(shù)據(jù)寫到WAL(Write-AheadLogging,預(yù)寫日志系統(tǒng))中,然后再將數(shù)據(jù)寫到Memstore等待刷新,回復(fù)客戶端寫入完成。

  十九、HBase的特點是什么?

  (1)hbase是一個分布式的基于列式存儲的數(shù)據(jù)庫,基于hadoop的HDFS存儲,zookeeper進行管理。

  (2)hbase適合存儲半結(jié)構(gòu)化或非結(jié)構(gòu)化數(shù)據(jù),對于數(shù)據(jù)結(jié)構(gòu)字段不夠確定或者雜亂無章很難按一個概念去抽取的數(shù)據(jù)。

  (3)hbase為null的記錄不會被存儲。

  (4)基于的表包括rowkey,時間戳和列族。新寫入數(shù)據(jù)時,時間戳更新,同時可以查詢到以前的版本。

  (5)hbase是主從結(jié)構(gòu)。Hmaster作為主節(jié)點,hregionserver作為從節(jié)點。

  二十、請描述如何解決Hbase中region太小和region太大帶來的結(jié)果。

  Region過大會發(fā)生多次compaction,將數(shù)據(jù)讀一遍并寫一遍到hdfs上,占用io,region過小會造成多次split,region會下線,影響訪問服務(wù),調(diào)整hbase.heregion.max.filesize為256m。

  以上就是關(guān)于好程序員大數(shù)據(jù)培訓(xùn)之面試題整理的全部內(nèi)容,想要了解更多關(guān)于大數(shù)據(jù)開發(fā)方面內(nèi)容的小伙伴,請關(guān)注好程序員大數(shù)據(jù)培訓(xùn)官網(wǎng)、微信等平臺,好程序員有專業(yè)的大數(shù)據(jù)講師為您指導(dǎo),

好程序員公眾號

  • · 剖析行業(yè)發(fā)展趨勢
  • · 匯聚企業(yè)項目源碼

好程序員開班動態(tài)

More+
  • HTML5大前端 <高端班>

    開班時間:2021-04-12(深圳)

    開班盛況

    開班時間:2021-05-17(北京)

    開班盛況
  • 大數(shù)據(jù)+人工智能 <高端班>

    開班時間:2021-03-22(杭州)

    開班盛況

    開班時間:2021-04-26(北京)

    開班盛況
  • JavaEE分布式開發(fā) <高端班>

    開班時間:2021-05-10(北京)

    開班盛況

    開班時間:2021-02-22(北京)

    開班盛況
  • Python人工智能+數(shù)據(jù)分析 <高端班>

    開班時間:2021-07-12(北京)

    預(yù)約報名

    開班時間:2020-09-21(上海)

    開班盛況
  • 云計算開發(fā) <高端班>

    開班時間:2021-07-12(北京)

    預(yù)約報名

    開班時間:2019-07-22(北京)

    開班盛況
IT培訓(xùn)IT培訓(xùn)
在線咨詢
IT培訓(xùn)IT培訓(xùn)
試聽
IT培訓(xùn)IT培訓(xùn)
入學(xué)教程
IT培訓(xùn)IT培訓(xùn)
立即報名
IT培訓(xùn)

Copyright 2011-2023 北京千鋒互聯(lián)科技有限公司 .All Right 京ICP備12003911號-5 京公網(wǎng)安備 11010802035720號

主站蜘蛛池模板: 久久国产欧美一区二区三区精品 | 国产欧美一区二区精品性色 | 欧美视频亚洲视频 | 成人一区二区电影 | 日本免费一区二区视频 | 成人亚洲免费视频 | 天堂中文字幕 | 在线免费观看黄色小视频 | 成人黄色免费观看 | 久久久激情 | 久久久91精品国产一区二区三区 | 欧美日韩免费在线 | 91视频观看 | 在线黄av | 日一日干一干 | 成人免费毛片嘿嘿连载视频 | 国产精品久久久久久久蜜臀 | 日产一区二区 | 欧美高清一区 | 91香蕉视频 | 日韩成人av在线 | 国产精品夜色一区二区三区 | 97香蕉久久国产超碰青草软件 | 久久久片 | 国产欧美日 | 国产乱码精品一品二品 | 一区二区三区四区在线 | 精品在线一区二区三区 | 一级黄色影片在线观看 | 国产精品成人一区二区三区夜夜夜 | 人人草在线视频 | 欧美一极片 | 亚洲精品一区久久久久久 | 岛国视频在线 | 国产九九精品 | 日韩欧美在线视频播放 | 国产精品2019 | 一区二区三区观看视频 | 国产精品大全 | 国产精品毛片久久久久久久 | 久久久久久久av |