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語句?
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的表設計還有優化?
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.數據結構和算法
1.Zookeeper的工做原理。過半機制,節點爲何是單數臺?
2.zookeeper有哪些組件?
3.zookeeper的機制等,各組件的原理?
4.Zookeeper究竟是幹嗎的?
5.zookeeper的二次開發?
6.Zookeeper實現分佈式鎖用哪一個jar包,以及寫mr、spark做業程序具體應該用哪些包?
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爲何能夠支持那麼大的吞吐量,怎麼實現的?
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
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解釋?