Hawq采用分層架構,將MPP shared-nothing的計算層架在HDFS之上。
Hawq集群中有三種角色:master, namenode和segment hosts。
1、Master負責認證、授權、從查詢解析、分析、優化到生成計划,啟動並分發計划,並收集執行狀態和結果。
2、segment host包含一個hdfs datanode和多個segment以更好地利用多核架構,datanode和segment放在一起可以更好地利用數據本地性。一個datanode對應多個segment,segment通過libhdfs3來訪問hdfs,libhdfs3是一個c++的hdfs client。對於segment,每個segment在hdfs上對應一個單獨的目錄,在負責讀寫分配給它的數據時,就是讀寫該目錄下的文件。
Hawq支持兩種分配方式:hash和random。hash distribution將某個指定的列進行hash來分配數據。對於hash數據分配方式,相同key的數據都由同一個segment負責讀取,而不需要再做shuffle或redistribute,既提升性能又節省網絡帶寬。
Hawq支持事務,對於catalog數據, 使用write ahead log(WAL)和mvcc多版本並發控制。

• A massively parallel processing SQL engine
• Inherits merits from MPP database and HDFS
• Stateless segment design supported by metadata dispatch and self-described execution plan
• UDP based interconnect to overcome TCP limitations
• Transaction management supported by a swimming lane model and truncate operation in HDFS
• Significant performance advantage over Stinger
