採集
0、使用TaildirSource,能夠實現斷點續傳
一、FileChannel的logDir中配置多個目錄對應不一樣的硬盤,來增大吐吞量
二、寫入HDFS時,使用hdfs.rollSize、hdfs.rollInterval解決產生小文件的問題(理解小文件的弊端)
三、原來使用Flume作ETL處理,很是影響性能,後來Flume只用來作數據採集,吞吐量提高30%(16線程CPU,32G內存,logDir4個,吞吐量60M)
四、Kafka JVM heap設置爲4G,且垃圾收集器爲G1mysql
離線項目亮點:
一、清洗時發現 username \n致使換行
二、原來使用TextFile格式,使用ORC/Parquet以後,空間縮減爲原有的10%/30%,查詢性能提高3-5倍
三、使用Sqoop導出時發現數據存在不一致性,後面研究官網發現使用--staging-table解決
四、Sqoop與Mysql傳輸數據時發現mysql中的null導入到Hive時會成爲"null"字符串,深刻研究後發現Hive底層使用\N表示NULL,因此在sqoop命令時使用--null-string "\N"等參數sql
實時項目亮點:
0、使用Kafka Direct模式實現精確消費一次的事務性語義(offset和output操做使用同一個事務)
一、由於使用了checkpoint保存狀態變量,因此使用getOrCreate方式使得錯誤時從Driver中恢復數據
二、使用mapWithState代替updateStateByKey來作狀態管理。優點是性能高,能夠設置狀態的超時時間
三、咱們爲何不使用ZK保存offset(說出本身的理解)
四、反壓服務器
工做中遇到的問題:
0、集羣運行一段時間後,BI同事反饋查詢半年數據愈來愈慢,這個時侯選擇擴展服務器
1)添加服務器後,必定要rebalance(數據本地化計算)
2)使用分層存儲,將半年的數據存入SSD,其它數據仍然在機械硬盤,性能提高5-10倍
一、實習生查詢1年行爲數據且多表鏈接生成臨時表,沒有寫On條件,致使生成上百T的臨時大表,集羣報警
解決方案:對/user/hive/warehouse/tmp.db目錄設置限額,最大能夠存儲3T,超出時SQl語句自動報錯ide
其它:
0、HBase解決熱點問題oop