SQL on Hadoop的最新進展及7項相關技術分享
在互聯網企業和有大數據處理需求的傳統企業中,基于Hadoop構建的數據倉庫的數據來源主要有以下幾個:
·通過Flume/Scribe/Chukwa這樣的日志收集和分析系統把來自Apache/Nginx的日志收集到HDFS上,然后通過Hive查詢。
·通過Sqoop這樣的工具把用戶和業務維度數據(一般存儲在Oracle/MySQL中)定期導入Hive,那么OLTP數據就有了一個用于OLAP的副本了。
·通過ETL工具從其他外部DW數據源里導入的數據。
目前所有的SQL on Hadoop產品其實都是在某個或者某些特定領域內適合的,沒有silver bullet。像當年Oracle/Teradata這樣的滿足幾乎所有企業級應用的產品在大數據時代是不現實的。所以每一種SQL on Hadoop產品都在盡量滿足某一類應用的特征。典型需求:
·interactive query (ms~3min)
·data analyst,reporting query (3min~20min)
·data mining,modeling and large ETL (20 min ~ hr ~ day)
機器學習需求(通過MapReduce/MPI/Spark等計算模型來滿足)
Hive
Hive是目前互聯網企業中處理大數據、構建數據倉庫最常用的解決方案,甚至在很多公司部署了Hadoop集群不是為了跑原生MapReduce程序,而全用來跑Hive SQL的查詢任務。
對于有很多data scientist和analyst的公司,會有很多相同表的查詢需求。那么顯然每個人都從Hive中查數據速度既慢又浪費資源。如果能把經常訪問的數據放到內存組成的集群中供用戶查詢那樣效率就會高很多。Facebook針對這一需求開發了Presto,一個把熱數據放到內存中供SQL查詢的系統。這個設計思路跟Impala和Stinger非常類似了。使用Presto進行簡單查詢只需要幾百毫秒,即使是非常復雜的查詢,也只需數分鐘即可完成,它在內存中運行,并且不會向磁盤寫入。Facebook有超過850名工程師每天用它來掃描超過320TB的數據,滿足了80%的ad-hoc查詢需求。
目前Hive的主要缺點:
·data shuffle時網絡瓶頸,Reduce要等Map結束才能開始,不能高效利用網絡帶寬。
·一般一個SQL都會解析成多個MR job,Hadoop每次Job輸出都直接寫HDFS,大量磁盤IO導致性能比較差。
·每次執行Job都要啟動Task,花費很多時間,無法做到實時。
·由于把SQL轉化成MapReduce job時,map、shuffle和reduce所負責執行的SQL解析出得功能不同。那么就有Map->MapReduce或者MapReduce->Reduce這樣的需求,這樣可以降低寫HDFS的IO數量,從而提高性能。但是目前MapReduce框架還不支持M->MR或者MR->R這樣的任務執行。
目前Hive主要的改進(主要是體現在 Hive 0.11版本上):
1. 同一條hive SQL解析出的多個MR任務的合并。由Hive解析出來的MR jobs中有非常多的Map->MapReduce類型的job,可以考慮把這個過程合并成一個MRjob。
2. Hive query optimizer(查詢優化器是Hive需要持續不斷優化的一個topic)
例如JOIN順序的優化,就是原來一個大表和多個小表在不同column匹配的條件下JOIN需要解析成多個Map join + MR job,現在可以合并成一個MR job。
這個改進方向要做的就是用戶不用給太多的hint,hive可以自己根據表的大小、行數等,自動選擇最快的join的方法(小表能裝進內存的話就用Map join,Map join能和其他MR job合并的就合并)。這個思路跟cost-based query optimizer有點類似了,用戶寫出來的SQL在翻譯成執行計劃之前要計算那種執行方式和JOIN順序效率更高。
3. ORCFile
ORCFile是一種列式存儲的文件,對于分析型應用來說列存有非常大的優勢。
原來的RCFile中把每一列看成binary blob,沒有任何語義,所以只能用通用的zlib,LZO,Snappy等壓縮方法。ORCFile能夠獲取每一列的類型(int還是string),那么就可以使用諸如dictionary encoding, bit packing, delta encoding, run-length encoding等輕量級的壓縮技術。這種壓縮技術的優勢有兩點:一是提高壓縮率;二是能夠起到過濾無關數據的效果。
Predicate Pushdown:原來的Hive是把所有的數據都讀到
責任編輯:廖生玨
-
權威發布 | 新能源汽車產業頂層設計落地:鼓勵“光儲充放”,有序推進氫燃料供給體系建設
2020-11-03新能源,汽車,產業,設計 -
中國自主研制的“人造太陽”重力支撐設備正式啟運
2020-09-14核聚變,ITER,核電 -
探索 | 既耗能又可供能的數據中心 打造融合型綜合能源系統
2020-06-16綜合能源服務,新能源消納,能源互聯網
-
新基建助推 數據中心建設將迎爆發期
2020-06-16數據中心,能源互聯網,電力新基建 -
泛在電力物聯網建設下看電網企業數據變現之路
2019-11-12泛在電力物聯網 -
泛在電力物聯網建設典型實踐案例
2019-10-15泛在電力物聯網案例
-
權威發布 | 新能源汽車產業頂層設計落地:鼓勵“光儲充放”,有序推進氫燃料供給體系建設
2020-11-03新能源,汽車,產業,設計 -
中國自主研制的“人造太陽”重力支撐設備正式啟運
2020-09-14核聚變,ITER,核電 -
能源革命和電改政策紅利將長期助力儲能行業發展
-
探索 | 既耗能又可供能的數據中心 打造融合型綜合能源系統
2020-06-16綜合能源服務,新能源消納,能源互聯網 -
5G新基建助力智能電網發展
2020-06-125G,智能電網,配電網 -
從智能電網到智能城市