面試規律總結

Hive的面試題:

1.hive優化?
a. 好的模型設計。b. 解決數據傾斜問題。c. 減小job數。
d. 設置合理的map reduce的task數,能有效提高性能。(好比,10w+級別的計算,用160個reduce,那是至關的浪費,1個足夠)。
e. 本身動手寫sql解決數據傾斜問題是個不錯的選擇。set hive.groupby.skewindata=true;這是通用的算法優化,但算法優化老是漠視業務,習慣性提供通用的解決方法。 Etl開發人員更瞭解業務,更瞭解數據,因此經過業務邏輯解決傾斜的方法每每更精確,更有效。
f. 對count(distinct)採起漠視的方法,尤爲數據大的時候很容易產生傾斜問題.
g. 對小文件進行合併,是提升調度效率的方法。
h. 優化時把握總體,單個做業最優不如總體最優。java

2.hive建表語句?
create table tab_name(id int,name string) row format delimited fields terminated by '\t';node

3.hive底層如何實現?linux

4.hive的數據類型?
Hive支持兩種數據類型,一類叫原子數據類型(TINYINT,SMALLINT,INT,BIGINT,BOOLEAN,FLOAT,DOUBLE,STRING,BINARY,TIMESTAMP,DECIMAL,CHAR,VARCHAR,DATE。),一類叫複雜數據類型android

5.hive建立表的幾種方式?
直接建表法,查詢建表法,like建表法nginx

6.介紹下hive的udf和udaf都寫過哪些代碼?
用戶定義函數(user-defined function)UDF;
用戶定義彙集函數(user-defined aggregate function,UDAF);
用戶定義表生成函數(user-defined table-generating function,UDTF)。
UDF操做做用於單個數據行,而且產生一個數據行做爲輸出。大多數函數都屬於這一類(好比數學函數和字符串函數)。
UDAF 接受多個輸入數據行,併產生一個輸出數據行。像COUNT和MAX這樣的函數就是彙集函數。
UDTF 操做做用於單個數據行,而且產生多個數據行-------一個表做爲輸出。lateral view explore()
簡單來講:UDF:返回對應值,一對一。UDAF:返回聚類值,多對一。UDTF:返回拆分值,一對多web

7.hive用哪一個版本?面試

8.hive窗口函數?redis

9.寫sql:1月100,2月200,3月100,4月200.統計以下效果:1月100,2月300,3月500,4月600(就是每個月統計一次前面全部的月的總額)加個over,就能夠orderby與partitionby相似?算法

10.用hive時,怎麼合併小文件?
能夠經過合併Map和Reduce的結果文件來消除這樣的影響。
用於設置合併屬性的參數有:
是否合併Map輸出文件:hive.merge.mapfiles=true(默認值爲真)
是否合併Reduce 端輸出文件:hive.merge.mapredfiles=false(默認值爲假)
合併文件的大小:hive.merge.size.per.task=256*1000*1000(默認值爲 256000000)sql

11.列出了三張關聯的表,其中一張表有點擊數量的統計。算一天的全部點擊數量寫出hivesql?

12.hive左右鏈接?
左鏈接 left join
假設:A表和B表,分別有key, value字段。
語法:A left join B on 鏈接條件 where 篩選條件
示例:select * from A left join B on A.id = B.id where A.value >= 2
釋義:以A表爲準,把B表中id相同的數據拼接到A表中該id所在的行,並篩選出A中value>=2的部分。注意:此時數據基準爲left join關鍵字左邊的表
右鏈接 right join
語法:B left join A on 鏈接條件 where 篩選條件
示例:select * from B right join A on A.id = B.id where A.value >= 2
釋義:以A表爲準,把B表中id相同的數據拼接到A表中該id所在的行,並篩選出A中value>=2的部分。注意:此時數據基準爲right join 右邊的表
內鏈接 inner join
語法:A inner join B on 鏈接條件 where 篩選條件
示例:select * from A inner join B on A.id = B.id where A.value >= 2
釋義:選擇A,B中相同id的數據,並篩選出A中value>=2的部分
注意:此時沒有基準表,相似於求A,B的交集
鏈接多張表
其實語法很相似,以左鏈接爲例:
A left join B on A.id = B.id left join C on A.id = C.id
注意這麼作之後數據拼接的比較慢,注意開銷

13.hive使用的三種形式?
CLI命令行,HWI(hie web interface)瀏覽器 以及 Thrift客戶端鏈接方式

14.hive分區?

15.hive的工做原理?
流程步驟爲:
a.用戶提交查詢等任務給Driver。
b.編譯器得到該用戶的任務Plan。
c.編譯器Compiler根據用戶任務去MetaStore中獲取須要的Hive的元數據信息。
d.編譯器Compiler獲得元數據信息,對任務進行編譯,先將HiveQL轉換爲抽象語法樹,而後將抽象語法樹轉換成查詢塊,將查詢塊轉化爲邏輯的查詢計劃,重寫邏輯查詢計劃,將邏輯計劃轉
化爲物理的計劃(MapReduce), 最後選擇最佳的策略。
e.將最終的計劃提交給Driver。
f.Driver將計劃Plan轉交給ExecutionEngine去執行,獲取元數據信息,提交給JobTracker或者SourceManager執行該任務,任務會直接讀取HDFS中文件進行相應的操做。
g.獲取執行的結果。
h.取得並返回執行結果。

16.hive中的rlike是怎麼回事,哪裏用到?

17.sql優化

18.hive怎麼解決數據傾斜?
數據傾斜主要表如今,map /reduce程序執行時,reduce節點大部分執行完畢,可是有一個或者幾個reduce節點運行很慢,致使整個程序的處理時間很長,
這是由於某一個key的條數比其餘key多不少(有時是百倍或者千倍之多),這條key所在的reduce節點所處理的數據量比其餘節點就大不少,從而致使某幾個節點遲遲運行不完。
數據傾斜可能會發生在group過程和join過程。

19.幾道sql問題,聯表查,exists,group by保留所有字段?

20.不用hadoop本身設計方案實現TB級別數據量,數據傾斜問題怎麼解決?

21.hive執行sql時的工做流程?

22.hive的默認分隔符?

23.hive rank(以某個字段分組,在組內排序,找出各組的TOP k)?

24.hine怎麼優化?HIVE經常使用的幾個配置是哪些?

25.hive何時不能用combiner?

26.添加自定義UDF的時候都是臨時的,怎麼永久添加?

27.hive動態分區?

28.寫一個表的查詢的sql語句?

Hbase的面試題:

1.hbase有哪些組件,以及hbase裏面的buffer?

2.hbase rowkey的設計?

3.hbase優化?

4.hbase數據插入優化?

5.hbase如何優化的?

6.hbase的writebuffer?

7.hbase對於複雜表如何設計rowkey?

8.Hbase執行過程?

9.Hbase優化?

10.關係型數據庫是怎麼把數據導出到Hbase裏的?

11.hbase優化問題?

12.hbase的性能優化?

13.Hbase解決了什麼問題?

14.Hbase的相對多些,基礎和優化?

15.hbase最主要的特色是什麼?

16.hbase部署?

17.和hbase一樣功能的分佈式數據庫瞭解多少?

18.HBase的存儲原理?

19.說說hbase的API都有哪些filter?

20.問我major compack設置爲手動會出現什麼問題?

21.mongoDB和hbase的區別?

22.Hbase的表設計還有優化?

關於yarn的面試題:

1.介紹下yarn?

2.yarn有哪些組件,調度算法?

3.說說yarn工做流程?

4.yarn優缺點?

HDFS的面試題:

1.hadoop寫文件流程?

2.hdfs瞭解多少?讀寫流程,架構?

3.寫流程中備份三,其中一個寫失敗了怎麼弄的?

4.hdfs HA(過程,啓動流程)?

5.hadoop的優化?

7.hadoop有哪些組件?

8.hadoop數據傾斜問題?

9.hdfs存儲的是什麼類型?

10.Hadoop1.x和2.x的差異?

11.hadoop中都每一個配置文件都配置了什麼吧?

12.Hadoop集羣的優化?

13.hdfs的實現?

14.hdfs文件建立--工做流程?

15.hdfs異步讀?--參考博客:http://blog.csdn.net/androidlushangderen/article/details/52452215

16.hdfs api源碼解答:文件建立工做流程?

17.hdfs api新特性?

18.hadoop中一個job提交到resourcemanager以後,resourcemanager會生成一個什麼樣的容器來放這個job?

19.hadoop集羣中的某個block不能copy數據到其餘節點,怎麼辦?若是併發量大了,有多個block不能copy數據,怎麼辦?

20.Zookeeper怎麼實現Hadoop的高可用?

21.Hadoop體系?

22.MR的過程?

數據結構和算法的面試題:

1.數據結構和算法

Zookeeper的面試題:

1.Zookeeper的工做原理。過半機制,節點爲何是單數臺?

2.zookeeper有哪些組件?

3.zookeeper的機制等,各組件的原理?

4.Zookeeper究竟是幹嗎的?

5.zookeeper的二次開發?

6.Zookeeper實現分佈式鎖用哪一個jar包,以及寫mr、spark做業程序具體應該用哪些包?

Kafka的面試題:

1.怎麼保證kafka傳過來的數據之正確的處理一次?

2.flume和kafka什麼區別?

3.kafka爲何要分多個partition?

4.kafka和spark Streaming 的整合?

5.怎麼保證數據kafka裏的數據安全?

6.kafka的key爲null能夠嗎?

7.怎麼往kafka集羣寫數據的?

8.kafka用到的什麼設計模式?
發佈訂閱模式

9.kafka的原理?若是生產數據是消費數據100倍,該如何處理?

10.有不少消息隊列技術,爲何選擇kafka?----kafka的特性方面回答

11.kafka爲何能夠支持那麼大的吞吐量,怎麼實現的?

Flume的面試題:

1.flume何時用?
分佈式的數據收集

2.flume處理日誌重複問題?

3.flume監控問題?自身支持ganlia集羣監控

4.flume是如何拿數據的?

5.flume是如何導入數據到kafka?具體?Kafka Sink channnel裏面配置相應的topic

6.flume的實時採集數據和定時採集數據的方法?tail -f;Spooling

7.主要問Flume如何使用?整合Flume+Storm和整合Flume+Kafka

Spark的面試題:

1.spark優化?
架構參數優化:shuffle,內存管理,推測執行,數據本地化:HDFS的DataNode和Spark Worker共享一臺機器
代碼層面:並行度--調整finalRDD partition;緩存機制的選擇--CPU使用和內存使用的權衡:checkpoint;算子的使用和選擇-groupbykey,map vs mappartitions等,使用廣播變量,累加器等; 序列化:壓縮,存儲格式的選擇
數據傾斜:重寫partition規則,抽樣看數據的分佈,結合具體的業務
架構的選擇:統一使用yarn結合hadoop,仍是使用本身的standalone計算框架

2.spark源碼-DAG-Task--任務調度部分?
spark是粗粒度的資源申請,任務調度:sparkContext-DAGSheduler切分stage,TaskSheduler發送任務到申請好的Executor中的線程池執行

3.submit相關配置?通常指定多大的資源?
submit --master/yarn --class --deploy model clster/client
Executor cores 默認一個Executor 1 core,lg內存,1G,2--3個task

4.寫完spark程序如何知道多少個task?(即資源如何調配的)
看你的並行度的設置,block的數量,web UI

5.spark和mr性能是否是差異不少?
通常來講Spark比Hadoop快:
緣由:
a.MR有大量的磁盤io,溢寫等,Spark則能夠基於內存緩存機制計算
b.MR和Spark的資源申請的方式:粗粒度和細粒度的區別
c.DAG計算引擎中的pipeline計算模型,MR就是MapReduce模型
d.算子的豐富程度
使用場景:大於pb級別的數據量通常選擇MR
生態的區別:Spark一站式的大數據處理平臺,Hadoop還須要和其餘的整合,升級,版本兼容等一堆問題,CDH版本若是須要更多的功能須要考慮成本的問題

6.spark任務yarn執行流程(client)?

7.spark運行在Yarn上流程(cluster)?
使用場景的區別:基於yarn的好處,兼容hadoop,一套計算框架,能好的維護

8.spark調優?

9.shuffle主要介紹下?
shuffle發生?---shuffle的過程---shuffle實現的選擇---shuffle的優化

10.寬窄依賴?
看父RDD和子RR的關係,除了父RDD和子RDD一對多外,其餘的都是窄依賴

11.shuffle怎麼落地的?
shuffle的實現類型:hash Shuffle仍是sortShuffle?Shuffle數據落地?

12.Spark RDD 是什麼?
彈性分佈式數據集---源碼的五大特性-----RDD的計算模型:pipeline計算模型

13.Spark算子?
map,flatmap,filter,foreach,first,take(n),join,cogroup,reducebykey,sortBy,distinct,mapPartition等等

14.spark 優點?
一棧式大數據處理平臺,靈活的編程模型,相比MR速度快

15.spark on yarn 和mapreduce中yarn有什麼區別?
沒什麼區別,yarn就是一個資源管理框架

16.spark原理?
pipeline計算模型+任務調度和資源調度

17.spark運行的job在哪裏能夠看到?
Driver進程所在的節點;web UI

18.如何監測集羣中cpu,內存的使用狀況,好比說:有一個spark特別佔資源,特別慢,怎麼排查這種狀況?
spark WEB UI;集羣監控工具,找到taskid

20.rdd的處理過程是什麼,不要說概念?
畫切分Stage,pipeline的計算模型的圖

21.spark的工做流程?
Spark的資源調度和任務調度+pipeline的計算模型

22.SparkSQL和Spark架構,運行流程圖,Spark運行的兩種方式。經常使用的Spark函數有哪些?
spark架構圖+運行流程圖(資源的調度+任務調度)+Spark client和SparkCluster+transformation算子+action算子+持久化操做算子

23.Spark瞭解多少?
spark生態-架構-運行模式+任務調度和資源調度

24:GroupByKey的做用?
根據key分組

Spark Sql的面試題:

1.sparkSQL介紹下(RDD、DataFrame)

關於Spark Streaming的面試題:

2.sparkStreaming怎麼跟kafka對接的,數據拉取到哪裏?

3.日流量10G不必sparkstreaming?

4.spark streaming 例子。問維護作過沒?說sparkStreaming的維護成本很高。 我告訴他是的,好比說可能會丟數據,wal會慢。這一起不是我維護。沒細問。

5.spark streming調優?

6.sparkstreaming原理?

7.spark Streaming介紹下?和Storm比較?

8.spark Streaming某一個task掛了,怎麼解決的?

9.spark streaming?spark的相關算法,好比推薦系統須要什麼算法?

10.park streaming工做流程?

11.sparkstreanming沒有問題,但沒法計算,怎麼排查問題?

12.storm和spark streaming的區別?

Redis面試題:

1.redis用來作什麼?
模型等,頻繁調用的放在redis中,取其快

2.redis的經常使用數據類型?

3.redis工做原理?

4.redis緩存機制?

5.redis支持的最大數據量是多少?redis集羣下怎麼從某一臺集羣查key-value。

關於項目的面試題:

1.項目流程,專網日誌分析項目的數據流程?

2.一個work給分配多少資源?怎麼分配的,預先分配嗎?

3.怎麼收集的數據?

4.項目都負責哪一塊?

5.推薦系統建模週期,這期間遇到過什麼問題?

6.sample正負例樣本表,標籤是怎麼打的?

7.數據來源是什麼?

8.標籤值是否是很少?(正負例樣本表是標籤+-1),他指的標籤是維度

10.講項目?

13.還有服務器多少臺?

14.介紹最近的項目?遇到的問題?

15.什麼是協同過濾,協同過濾的值怎麼求得,

16.具體的pv/uv量,

17.訓練數據量,

18.有多少個維度,

19.特徵怎麼選取的,

20.模型效果怎麼評估

21.另外一個項目問到了數據怎麼收集的?

22.你具體負責哪一塊?

23.對本身每一個項目作講解,項目中的疑難點?

24.服務器如何選擇?項目服務器多少臺?namenode多少臺?dotanode多少臺?kafka多少臺?yarn多少臺?

25.問我數據量多大問題,和mapreduce運行時間問題,因爲我實現沒有準備好,回答很差,訂單的我回答50G,微博我回答1TB,mapreduce運行時間我回答 1~2小時?

26.推薦系統矩陣列表是怎麼實現的?

27.日誌處理具體怎麼寫的mapreduce流程?

28.storm項目中遇到了那些問題,怎麼解決?

29.用到hbase的項目提問,實際如何處理的,java是怎麼調用的,數據太多怎麼優化,所設定的數據要處理多久?

30.如何搭建實時日誌分析平臺,須要那些條件?

31.從設計架構,業務實現,爲何這樣作,性能如何,等等問題,不少地方深刻到項目中實現細節?

32.訓練集和測試集的比例多大?

33.描述一下邏輯迴歸的特色?

34.說說項目中用到的框架?

35.項目中的業務簡單說一下?

36.兩個項目專網日誌分析和電錶集中器,分別用了什麼架構,怎麼進行搭建?有幾臺flume機器,怎麼從其餘系統獲取的數據,kafka幾臺?

kafka吞吐量10萬條信息每秒,咱們用了2臺,接着問那一臺kafka掛了呢?

37.沒搞過kafka高可用,說多臺kafka也是坑,處處都是陷阱。

38.項目中負責那一塊?

39.storm處理完數據寫入哪裏?回答hdfs和hbase 又問storm怎麼寫入hdfs和hbase的具體說一下。

40.線性迴歸的原理,什麼場景適合線性迴歸,舉兩個例子說下。

41.模型生成完之後是怎麼知道預測的好壞的?

42.對了還問了storm處理的時候利用率怎麼樣?怎麼檢測storm沒有問題的,程序跑通就必定沒有問題嗎?反正我也不知道怎麼回答了,不知道大數據有沒有測試人員,怎麼測試改需求?

43.怎麼從其餘系統獲取的數據,回答flume+kafka+storm這樣的流程。

44.接着問flume有幾臺,經過什麼協議獲取的數據?

45.flume收集信息的時候遇到了什麼問題?怎麼解決的?

46.kafka幾臺,我回答一臺,由於kafka最大支持吞吐量10萬條每秒,接着問kafka傳輸的實際吞吐量每秒多少條?一直追問這個,我沒遇到過真不知道怎麼回答,kafka傳輸數據的時候遇到什麼錯誤嗎?怎麼解決的?又是坑,說沒有遇到過。接着又問大家kafka處理的時候都沒遇到過什麼問題嗎?弄得我無言以對,沉默。

47.日誌表中的數據使用hive怎麼實現,mapreduce怎麼實現?

48.項目中使用的技術,解決了什麼問題?

49.flume在實際項目怎麼進行數據採集?

50.感受本身工做中作的最好的是哪一塊?

54:關於集羣數據量,運行時間的參考

剛纔面試面試官問了大家天天有多少數據,

用了多少臺機器,

通常根據你寫的項目,天天產生的數據量規劃,假如一天數據量100g

通常集羣規劃是年數據的3倍,還有hadoop集羣3倍冗餘

假如一臺服務器磁盤6T

100G*365*3*3/6*1024g=53.4 這樣的集羣(通常在60臺左右的服務器)

機器的配置,

配置cpu找一個稍微老一點至強cpu

內存每臺16g或32g

天天運行多久

通常一個做業10分鐘到-幾個小時不等

通常一個做業也就幾十分鐘。。運行幾天的不多

有多少個MR,

30-50個左右

通常公司不少個做業。。

你能夠大家部門的,其餘你不清楚就別說,好比數據清洗的(這裏面就有不少做業了,去掉不完整數據,數據格式轉換,數據字段鏈接,字段抽取等等),相應你簡歷上寫的項目,,不少模板都有做業。。你細化一下

好比推薦的做業,統計彙總的做業,用戶定位的做業,

遇到bug怎麼解決,上線以後的bug怎麼解決,

通常在測試階段就那部分線上數據測試過了。。

若是在線上還有問題

通常kill掉做業。。固然能夠作mapreduce裏面設計日誌輸出到單獨文件,,

根據hadoop異常日誌出什麼問題了。固然hadoop每臺都會有日誌,固然hadoop本身的日子很龐大,能夠採用chukwa(大概看看幹什麼的就行,就是收集方便查看hadoop自己的日誌)處理,

而後分析做業代碼。。

有沒有關心過運行時候的狀態,

mapreduce運行狀態,hadoop有監控頁面

固然也能夠本身寫監控程序,mapreduce有做業監聽方法,能夠獲取進度。

http://m.blog.csdn.net/blog/u014313009/38045435

其餘面試題:

1.各個軟件的版本號?

2.spark程序用什麼語言寫的?

3.用Python寫的什麼?

4.標籤數據庫?

5.數據清洗流程(源,過程)?

6.nginx瞭解嗎?

7.數據清洗怎麼發現的?

8.清洗完後面都有哪些要求?

9.DSL和SQL用哪一個比較多?

10.爲何會發生數據傾斜,你怎麼知道發生數據傾斜的?

11.事物方面比較詳細說下?

12.hadoop的生態圈?

13.會配置本地yum源碼?

14.是否用過maven?

15.談談redis?

16.平實喜歡關注什麼關鍵技術,論壇?

17.用到哪些全文檢索的技術?

18.免密碼登錄如何設置?

19.linux命令,都是平時用到的命令?

20.是否配過yum本地源?

21.集羣多大 天天流量多少?

22.集羣中定時任務是怎麼作的?

32.Mysql主從複製一段時間後忽然數據同步不了怎麼辦?

33.說說你的都用了naginx 中都用了那些模塊在什麼條件下使用的?

34.Lvs解決什麼 而後就是畫圖說負載的問題mapreduce的執行過程是否帶過團隊?

35.ha原理?

36.給與用戶的天天通話數據,如何在五天內給出一個可行可以評判用戶信任度的系統

43.項目業務場景,問題,架構,人員分配,項目中遇到問題,規模等等?

44.聊聊SOA,實現技術,最基本的特徵啥的?

45.說說kettle的簡單流程?

46.談談lvs和keepalived怎麼用的?跟其餘負載均衡的區別?什麼缺點?具體用在什麼情景?

知不知道另一種負載均衡的技術,比lvs要好,能同時做用與第四層和第七層。還說lvs通常只作DB的負載均衡

47.oracle的優化,能夠自主選擇索引的那種?

48.面試官問我之前的企業有多少人怎麼說?問組內有多少人怎麼說?問之前項目的數據量怎麼說?問集羣節點數量怎麼說等等一系列比較菜鳥的問題,
這些問題說重要倒不很重要,可是說不重要的話若是人家忽然問到,你胡亂回答卻容易鬧笑話,讓對方瞬間揭穿你毫無經驗的事實。
因此個人回答通常都是說用的測試數據,項目上線時候我本人沒有參與。也許這麼回答不是那麼精妙,可是站我本身的角度感到最起碼沒有大的問題。
(好比筆者第一家面試的時候,人家問我當初寫的mapreduce程序運行一次多久,我說2小時。。。而後對方表示很震驚,問我多大數據量,我頓時碉堡了,
感受說多少都不合適,因而就找個機會岔開了一下話題,我說您是想問我mapreduce調優這一塊吧?不等對方回答,我趕忙把背好mapreduce調優說了一下,
來回胡扯了幾句,結果居然混過去了對方最後沒再追問,還給了offer。。。第2家開始,全部面試問到運行了幾分鐘時候我通常會回答1到3分鐘之間,
項目用的測試數據,因此數據不大,節點的話就依照平時咱虛擬機裝的節點規模稍微大一點

49.問了下openstack,回答openstack的各個模塊和做用

50.hbase+solr,讓我說了一下,解釋了一下,問solr大家怎麼建索引的,建了多少索引,根據什麼去建的這些索引?最後還問solr的索引表是單張表,仍是多張表,這些表是存在hbase裏面了仍是分開的?爲何沒有存hbase裏面,搞得我無言以對。

51.本身熟悉大數據的部分說一下?

52.hadoop與storm、spark的比較?

53.事務都有哪些特色?

55.使用過其餘什麼開源框架?

56.最擅長那種技術?

57.在實際開發的過程當中遇到了什麼問題,怎麼解決?

58.是否參加過CodeReview?有什麼心得?

59.Hadoop用的什麼版本?

60.PV UV IP解釋?

相關文章
相關標籤/搜索