1. 程式人生 > >大資料常見面試題彙總

大資料常見面試題彙總

習得一身大資料技術,卻苦於沒有一套面試總結來幫助自己完成面試的第一關。話說,這大資料技術面試中的筆試,真的就像我們之前考試似的,沒有重點真的很抓瞎,不過幸虧你看到我這篇文章,可以坐收漁翁之利了!

1、用mr設計一個分組排重計數演算法
輸入檔案格式:二級域名,一級頻道,二級頻道,訪問ip地址,訪問者id
需求:按照二級域名,一級頻道,二級頻道分組,計算pageview數,計算獨立ip數和獨立訪問者id數。
2、hadoop中combiner的作用
當map生成的資料過大時,頻寬就成了瓶頸,怎樣精簡壓縮傳給Reduce的資料,有不影響最終的結果呢。有一種方法就是使用Combiner,Combiner號稱本地的Reduce,Reduce最終的輸入,是Combiner的輸出。
3、Linkedlist和ArrayList的區別
ArrayList是使用陣列方式儲存資料,此陣列元素數大於實際儲存的資料以便增加和插入元素,允許直接按序號索引元素,但是插入元素要涉及陣列元素移動等記憶體操作,所以索引資料快而插入資料慢。LinkedList使用雙向連結串列實現儲存,按序號索引資料需要進行前向或後向遍歷,但是插入資料時只需要記錄本項的前後項即可,所以插入速度較快。
4、列舉幾個配置檔案優化?
  1)Core-site.xml 檔案的優化
    a、fs.trash.interval,預設值: 0;說明: 這個是開啟hdfs檔案刪除自動轉移到垃圾箱的選項,值為垃圾箱檔案清除時間。一般開啟這個會比較好,以防錯誤刪除重要檔案。單位是分鐘。
    b、dfs.namenode.handler.count,預設值:10;說明:hadoop系統裡啟動的任務執行緒數,這裡改為40,同樣可以嘗試該值大小對效率的影響變化進行最合適的值的設定。
    c、mapreduce.tasktracker.http.threads,預設值:40;說明:map和reduce是通過http進行資料傳輸的,這個是設定傳輸的並行執行緒數。
5、HDFS讀寫資料的過程
(1)讀:
跟namenode通訊查詢元資料,找到檔案塊所在的datanode伺服器
挑選一臺datanode(就近原則,然後隨機)伺服器,請求建立socket流
datanode開始傳送資料(從磁盤裡面讀取資料放入流,以packet為單位來做校驗)
客戶端以packet為單位接收,現在本地快取,然後寫入目標檔案
 (2)寫:
根namenode通訊請求上傳檔案,namenode檢查目標檔案是否已存在,父目錄是否存在
namenode返回是否可以上傳
client請求第一個 block該傳輸到哪些datanode伺服器上
namenode返回3個datanode伺服器ABC
client請求3臺dn中的一臺A上傳資料(本質上是一個RPC呼叫,建立pipeline),A收到請求會繼續呼叫B,然後B呼叫C,將真個pipeline建立完成,逐級返回客戶端
client開始往A上傳第一個block(先從磁碟讀取資料放到一個本地記憶體快取),以packet為單位,A收到一個packet就會傳給B,B傳給C;A每傳一個packet會放入一個應答佇列等待應答
當一個block傳輸完成之後,client再次請求namenode上傳第二個block的伺服器。
以為就這樣結束了?!NO NO NO!未完待續~