您好,登錄后才能下訂單哦!
怎樣使用Alluxio提速數據查詢,很多新手對此不是很清楚,為了幫助大家解決這個難題,下面小編將為大家詳細講解,有這方面需求的人可以來學習下,希望你能有所收獲。
下面介紹在生產環境中使用Alluxio的經驗,以及為什么Alluxio能夠帶來顯著的性能提升。使用Alluxio將原先的批處理查詢將轉換為交互式查詢,這使百度能夠以交互方式分析數據,從而提升了生產力,并改善了用戶體驗。
業務挑戰
百度作為中國最大的搜索引擎,這意味著我們有很多的數據,如何管理這種規模的數據并快速提取其中的有用信息一直是一個挑戰。
舉例來說,龐大的數據量常常會導致查詢需要花費數十分鐘甚至數小時才能完成,因此需要讓產品經理等待數小時才能開始下一個查詢。更令人沮喪的是,改動查詢后將需要重新運行整個過程。大約在一年前,我們意識到需要一個特殊的查詢引擎來解決這些問題。首先,我們提出了一個目標規范:該查詢引擎需要管理數PB的數據,并能在30秒內完成95%的查詢。
我們將查詢引擎從Hive切換到了Spark SQL(許多用例已經證明了它在延遲方面相對Hadoop MapReduce具有優勢),我們期望Spark SQL能將平均查詢時間降到幾分鐘之內。但是,它沒有達到我們所希望的查詢響應時間。雖然Spark SQL確實將平均查詢速度提升了4倍,但仍需10分鐘左右才能完成。
因此,我們再次仔細思考,挖掘分析更多細節。事實證明,這個階段的查詢瓶頸不再是CPU而是數據傳輸網絡。由于PB級別的數據分布在多個數據中心,因此數據查詢很可能需要將數據從遠程數據中心傳輸到計算所在數據中心,這就是導致用戶運行查詢時出現很大延遲的原因。由于數據存儲中心節點和數據計算中心節點具有不同的最優硬件規格,因此解決方案并不是將計算過程移動到存儲數據中心那么簡單。我們需要一個內存級的存儲系統來存儲常用的“熱”數據,并且該系統能夠位于計算節點上。
為什么選擇Alluxio
我們需要一個內存級的存儲系統。該存儲系統不僅能夠提供高性能和可靠性,還能管理數PB的數據。我們開發了一個使用Spark SQL作為其計算引擎的查詢系統,將Alluxio作為本地內存級存儲解決方案。我們使用百度內部的標準查詢作為壓力測試方案,需要從遠程數據中心提取6TB數據,然后在數據之上運行其他分析,整個壓力測試持續了1個月。
結果表明,Alluxio帶來了優異的性能提升。如果系統僅使用Spark SQL,平均查詢需要100-150秒才能完成。加上Alluxio后,平均查詢耗時10-15秒。此外,如果所有數據都存儲在Alluxio本地節點上,則只需要大約5秒鐘,比單獨使用Spark SQL快30倍。基于以上結果和系統可靠性方面考慮,我們圍繞Alluxio和Spark SQL構建了一個完整的大數據查詢系統。
我們的系統包含以下組件:
操作管理器:包裝Spark SQL的持久化Spark應用程序。它接受來自查詢UI的查詢,并提供查詢解析和查詢優化功能。
視圖管理器:管理緩存元數據并處理來自操作管理器的查詢請求。
Alluxio:用作存儲常用數據內存級存儲系統,提供計算本地性。
數據倉庫:基于HDFS系統的遠程數據中心,用于存儲數據。
下面,我們將介紹整個系統的執行流程:
查詢已提交。操作管理器分析查詢并詢問視圖管理器數據是否已在Alluxio中。
如果數據已經在Alluxio中,操作管理器從Alluxio中獲取數據并對其執行分析。
如果數據不在Alluxio中,那么該數據未命中緩存。操作管理器將直接從數據倉庫請求數據。同時,視圖管理器啟動另一個作業以從數據倉庫請求相同的數據并將數據存儲在Alluxio中。這樣下次提交相同的查詢時,數據已經在Alluxio中。
收益
系統部署后,我們使用典型的百度查詢測量其性能。使用原始的Hive系統,需要超過1,000秒才能執行完成該典型查詢。僅使用Spark SQL,耗時能夠降低至150秒,而加上Alluxio后,耗時能夠進一步降低至約20秒。該查詢運行速度提高了50倍,并滿足了我們為項目設置的交互式查詢要求。因此,通過使用Alluxio,能夠將執行耗時為15分鐘的批量查詢轉換為耗時不到30秒的交互式查詢。
在過去的一年中,該系統已部署在一個擁有100多個節點的集群中,Alluxio系統存儲管理了超過2 PB數據并且使用了Alluxio高級功能——分層存儲。此功能允許我們將內存作為一級存儲,SSD作為二級存儲,HDD作為最后級存儲。將這些存儲介質組合在一起,我們可以提供超過2 PB的存儲空間。
除了查詢性能方面的改進之外,對我們來說更重要的是整個系統的可靠性。在過去的一年中,Alluxio一直在我們的數據基礎設施中穩定運行,很少遇到問題,這給了我們很多信心。因此,我們正在準備大規模部署Alluxio。首先,我們通過部署擁有1000個Alluxio worker節點的集群來驗證Alluxio的可擴展性。在過去的一個月里,這個擁有1000個Alluxio worker節點的集群一直運行穩定,該集群提供超過50 TB的內存空間。據我們所知,這是目前世界上最大的Alluxio集群之一。
我們已經驗證了Alluxio能夠極大地提高性能,并且可靠可擴展。接下來,我們正在逐步將不同的百度工作負載任務遷移到Alluxio集群上。例如,為了提高在線圖像服務和在線圖像分析的性能,我們正在與Alluxio社區密切合作,試圖在Alluxio之上開發一個高性能的Key-Value存儲。這樣,只需要Alluxio一個存儲系統:Key-Value存儲可以執行有效的在線服務;對于離線分析,我們可以直接訪問Alluxio獲取圖像數據。這大大降低了我們的開發和運營成本。
作為Alluxio的早期使用者,我們驗證了它所描述的“以內存為中心的分布式存儲系統,以內存速度跨集群框架實現可靠的數據共享”。除了可靠且具有內存速度之外, Alluxio還提供了一種基于內存的擴展存儲以提供足夠存儲容量。
看完上述內容是否對您有幫助呢?如果還想對相關知識有進一步的了解或閱讀更多相關文章,請關注億速云行業資訊頻道,感謝您對億速云的支持。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。