HAWQ技術總結:
1、 官網: http://hawq.incubator.apache.org/
2、 特性
2.1 sql支持完善
ANSI SQL標准,OLAP擴展,標准JDBC/ODBC支持。
2.2 具有MPP的性能。
2.3 支持外部數據整合。
HAWQ能夠訪問HDFS上的Json文件、Hive、HBase等外部數據。
2.4 支持ACID事務。
這是很多現有基於SqlonHadoop引擎無法做到的,能夠好的保證數據一致性。
3、 優缺點:
優點:
* sql支持度好:目前能支持SQL99,SQL2003標准
* 支持事務。
* 支持insert
缺點:
* 基於GreenPlum實現,技術實現復雜,包含多個組件。比如對於外部數據源,需要通過PXF單獨進行處理;
* C++實現,對內存的控制比較復雜,如果出現segmentfault直接導致當前node掛掉。
* 安裝配置復雜;
4、 關鍵技術:
4.1 系統架構與關鍵組件
HAWQ集群的主要組件。其中有幾個Master節點:包括HAWQ master節點,HDFS master節點NameNode,YARN master節點ResourceManager。每個Slave節點上部署有HDFS DataNode,YARN NodeManager以及一個HAWQ Segment。HAWQ Segment在執行查詢的時候會啟動多個QE (Query Executor, 查詢執行器)。
查詢執行器運行在資源容器里。在這個架構下,節點可以動態的加入集群,並且不需要數據重分布。當一個節點加入集群時,它會向HAWQ++ Master節點發送心跳,然后就可以接收未來查詢了。
上圖是HAWQ master節點內部架構圖。可以看到在HAWQ的 Master節點內部有如下重要組件:查詢解析器,優化器,資源代理,資源管理器,HDFS元數據緩存,容錯服務,查詢派遣器和元數據服務。在Slave節點上安裝有一個物理Segment,在查詢執行時,針對一個查詢,彈性執行引擎會啟動多個虛擬Segment同時執行查詢,節點間數據交換通過Interconnect(高速互聯網絡,基於UDP)進行。如果一個查詢啟動了1000個虛擬Segment,意思是這個查詢被均勻的分成了1000份任務,這些任務會並行執行。
其中,資源管理器通過資源代理向全局資源管理器(比如YARN)動態申請資源,並緩存資源。在不需要的時候返回資源。緩存資源的主要原因是減少HAWQ與yarn之間的交互代價。因為HAWQ是支持ms級查詢。如果每一個查詢都向資源管理器申請資源的話,性能會受到影響。位置信息存儲在HDFS NameNode上。如果每個查詢都訪問HDFS NameNode會造成NameNode的瓶頸。所以在HAWQ Master節點上建立了HDFS元數據緩存。查詢派遣器則是在優化完查詢以后,蔣計划派遣到各個節點上執行,並協調查詢執行。
4.2 PXF擴展框架
HAWQ通過名為Pivotal eXtension Framework(PXF)的模塊提供數據聯合功能。除了常見的數據聯合功能外,PXF還利用SQL on Hadoop提供可擴展的功能,PXF提供框架API 使得開發人員能夠數據堆棧開發新的連接器,從而增強強數據引擎的松散耦合。
4.3 GPORCA查詢優化器
在分區查詢、子查詢、去重聚合、insert上改進優化。
5、 Benchmark
完全支持TPC-DS.
圖中所示的基准測試是通過TPC-DS中的99個模板生成的111個查詢來執行的。圖中顯示了4種基於SQL-on-Hadoop常見系統的合規等級,綠色和藍色分別表示:每個系統可以優化的查詢個數;可以完成執行並返回查詢結果的查詢個數。從圖中可以看到,HAWQ完成了所有查詢