1. 程式人生 > >2018年大數據面試題總結

2018年大數據面試題總結

shuff 排序 2018年 split t對象 默認 數據庫 cmp one

目前面試了多家大數據開發工程師,成長了很多,也知道了很多知識,下面和大家分享一下我遇到的面試題和答案。

1.kafka集群的規模,消費速度是多少。

答:一般中小型公司是10個節點,每秒20M左右。

2.hdfs上傳文件的流程。

答:這裏描述的 是一個256M的文件上傳過程

① 由客戶端 向 NameNode節點節點 發出請求

②NameNode 向Client返回可以可以存數據的 DataNode 這裏遵循機架感應原則

③客戶端 首先 根據返回的信息 先將 文件分塊(Hadoop2.X版本 每一個block為 128M 而之前的版本為 64M

④然後通過那麽Node返回的DataNode信息 直接發送給DataNode 並且是 流式寫入 同時 會復制到其他兩臺機器

⑤dataNode 向 Client通信 表示已經傳完 數據塊 同時向NameNode報告 ⑥依照上面(④到⑤)的原理將 所有的數據塊都上傳結束 向 NameNode 報告 表明 已經傳完所有的數據塊

3.講述一下mapreduce的流程(shuffle的sort,partitions,group)

首先是 Mapreduce經過SplitInput 輸入分片 決定map的個數在用Record記錄 key value。然後分為以下三個流程:

Map:

輸入 key(long類型偏移量) value(Text一行字符串)

輸出 key value

Shuffle:、

合並(merge)map輸出時先輸出到環形內存,當內存使用率達到60%時開始溢出寫入到文件,溢出文件都是小文件,所以就要合並他們,在這個構成中就會排序,根據key值比較排序

排序(sort)如果你自定義了key的數據類型要求你的類一定是WriteableCompartor的子類,不想繼承WriteableCompartor,至少實現Writeable,這時你就必須在job上設置排序比較器job.setSortCmpartorClass(MyCompartor.class);而MyCompartor.class必須繼承RawCompartor的類或子類

分區(partition)會根據map輸出的結果分成幾個文件為reduce準備,有幾個reducetask就分成幾個文件,在job上設置分區器job.setPartitionerClass(MyPartition.class)Myrtition.class要繼承Partitioner這個類

分組(group)分區時會調用分組器,把同一分區中的相同key的數據對應的value制作成一個iterable,並且會在sort。在job上設置分組器。Job.setGroupCompartorClass(MyGroup.class)MyGroup.class必須繼承RawCompartor的類跟子類

上面的結果儲存到本地文件中,而不是hdfs上

上面只要有完成結果,reduce就開始復制上面的結果,通過http方式

Reduce

輸入key時map輸出時的key value是分組器分的iterable

輸出 key value

輸出結果保存在hdfs上而不是本地文件中

4.了解zookeeper嗎?介紹一下它,它的選舉機制和集群的搭建。

答:那當然是熟悉啦,ZooKeeper 是一個開源的分布式協調服務,是 Google Chubby 的開源實現。分布式應用程序可以基於 ZooKeeper 實現諸如數據發布/訂閱、負載均衡、命名服務、分布式協調/通知、集群管理、Master 選舉、分布式鎖和分布式隊列等功能。我們公司使用的flume集群,Kafka集群等等,都離不開ZooKeeper呀。每個節點上我們都要搭建ZooKeeper服務。首先我們要在每臺pc上配置zookeeper環境變量,在cd到zookeeper下的conf文件夾下在zoo_simjle.cfg文件中添加datadir路徑,再到zookeeper下新建data文件夾,創建myid,在文件裏添加上server的ip地址。在啟動zkserver.sh start便ok了。

5.spark streming在實時處理時會發生什麽故障,如何停止,解決

和Kafka整合時消息無序:

修改Kafka的ack參數,當ack=1時,master確認收到消息就算投遞成功。ack=0時,不需要收到消息便算成功,高效不準確。sck=all,master和server都要受到消息才算成功,準確不高效。

StreamingContext.stop會把關聯的SparkContext對象也停止,如果不想把SparkContext對象也停止的話可以把StremingContext.stop的可選參數stopSparkContext設為flase。一個SparkContext對象可以和多個streamingcontext對象關聯。只要對前一個stremingcontext.stop(stopsparkcontext=false),然後再創建新的stremingcontext對象就可以了。

6.mysql,mongodb,rides的端口。

面試數據庫介紹的再好,不知到默認端口,也證明你沒有經驗。mysql:3306,mongdb:27017,rides:6379。

7.說一下你對hadoop生態圈的認識。

沒有固定答案,主要從hdfs底層存儲,hbase數據庫,hive數據倉庫,flume收集,Kafka緩存,zookeeper分布式協調服務,spark大數據分析,sqoop數據互轉來說。

8.yarn的理解:

YARN是Hadoop2.0版本引進的資源管理系統,直接從MR1演化而來。
核心思想:將MR1中的JobTracker的資源管理和作業調度兩個功能分開,分別由ResourceManager和ApplicationMaster進程實現。

ResourceManager:負責整個集群的資源管理和調度 ApplicationMaster:負責應用程序相關事務,比如任務調度、任務監控和容錯等。 YARN的出現,使得多個計算框架可以運行在同一個集群之中。 1. 每一個應用程序對應一個ApplicationMaster。 2. 目前可以支持多種計算框架運行在YARN上面,比如MapReduce、storm、Spark、Flink。

9.數據來源的方式:

1.webServer :用戶訪問我們的網站,對日誌進行收集,記錄在反向的日誌文件裏 tomcat下logs

2js代碼嵌入前端頁面(埋點):js的sdk會獲取用戶行為,document會得到元素調用function,通過ngix集群進行日誌收集。

10.我們公司是做啥啥啥的,請你用大數據分析,請你想說就說啥。

這個是靠查你的思維,沒法有答案。

11.聊聊你的項目。

這是60%的時間都在這,你一定要把自己的項目了解搞清楚,數據的來源,數據的收集,數據的分析,數據的儲存,數據的展示。

主要解決了啥業務。遇到了啥問題,數據的格式,有哪些優化,等等等

祝大家都能拿到一份好offer。

2018年大數據面試題總結