Wormhole:基於Docker構建配置Presto和Alluxio實現快速分析

這是一篇由Ashwin Sinha撰寫的客座博客,原始博客資源見文末鏈接1。


Wormhole:基於Docker構建配置Presto和Alluxio實現快速分析

該博客介紹Wormhole(見文末鏈接2),一個開源的基於Docker的Presto和Alluxio集群部署解決方案。通過該方案可以對文件系統進行快速分析(我們使用S3,GCS,OSS)。在數據分析方面,人們通常手動編寫SQL查詢並喜歡分析倉庫中的數據(例如MySQL數據庫)。但是隨著數據的增長,這些存儲開始能以支撐,因此需要在相同或更少的時間範圍內更快地獲得的結果。這可以通過分佈式計算解決,事實上Presto就是為此而設計的。當Presto與Alluxio連接後,它的工作速度甚至會更快。這就是Wormhole項目產生的全部動機。

下圖為解決方案的架構圖:

Wormhole:基於Docker構建配置Presto和Alluxio實現快速分析

讓我們按照Wormhole中配置順序來逐一介紹每個組件:

  • Consul — Consul是一種服務網絡解決方案,其功能是為跨任何運行平臺以及公有或私有云的應用提供網絡連接和保護服務。它通過容器的containerID來幫助識別容器,具體配置說見文末鏈接3。
  • Docker — Docker是一系列平臺即服務(platform-as-a-service)產品,它們在被稱為容器的包中使用操作系統級虛擬化支撐交付軟件。容器彼此隔離,並將它們自己的軟件、庫和配置文件捆綁在一起;它們可以通過完善定義的通道相互通信。在我們的配置中,我們將所有服務都放置在Docker容器中,具體配置說明見文末鏈接4。
  • Alluxio Master — Alluxio masters按高可用(HA)(見文末鏈接5)模式進行部署。它們負責制定查詢執行計劃,並將查詢分發給workers,然後將合併的各個結果返回併發送回請求者。具體配置說明見文末鏈接6。
  • Alluxio Worker — Alluxio workers是Alluxio的實際緩存存儲組件。從Alluxio文件系統(FS)查詢數據時,它從底層文件系統(可能是S3,GCS或任何已配置的FS)中獲取數據,並以LRU方式存儲在RAM中。下次無需訪問FS並從其自己的緩存中返回數據塊,具體配置說明見文末鏈接7。
  • Hive metastoreHive Metastore(見文末鏈接8)是所有Hive表的元數據的集合。在我們的配置中,我們在MySQL上創建元數據存儲以存儲Alluxio的定位數據,具體配置說明見文末鏈接9。
  • Presto Coordinator — Presto協調器按高可用(HA)(見文末鏈接5)模式進行部署。它們負責制定jiquery執行計劃,並將查詢分發給worker,然後將合併的各個結果返回併發送回請求者,具體配置說明見文末鏈接10。
  • Presto Worker — Presto workers負責處理底層Alluxio中的數據。它們提取數據,對其執行操作,然後將各個結果發送給協調器,具體配置說明,見文末鏈接11。

除了上述組件外,我們還需要一個Zookeeper(見文末鏈接12) quorum組件及配置,這是為了使Alluxio主服務器和Presto協調器高度可用(HA)。有關配置的完整文檔,請參閱此處(見文末鏈接13)。

實際運行

現在我們已經在Alluxio的頂層配置了Presto,那麼應當如何使它可供所有人使用呢?答案是需要使用其他一些工具,例如

Metabase(見文末鏈接14),提供與Presto的連接。我們只需要添加適當的配置,它們就可用於各種數據分析。

Presto和Alluxio還提供UI來跟蹤當前狀態,這對用戶作用很有幫助。

Wormhole:基於Docker構建配置Presto和Alluxio實現快速分析

Wormhole:基於Docker構建配置Presto和Alluxio實現快速分析

下一步計劃

後面我們的工作重點將是通過用戶界面使該解決方案提供自助服務,並使其實現自擴展(可能可以在Kubernetes(見文末鏈接15)上部署)。

關於作者

本文作者是一位專業的數據工程師,喜歡學習和使用分佈式系統。他也是一名開源愛好者,樂於貢獻社區,可以參考github(見文末鏈接16)和medium(見文末鏈接17)上的工作。此外,他還是喜歡探索遠方並享受長途騎行的旅行者。

參考鏈接:

鏈接1:https://medium.com/@tygrash/introducing-wormhole-dockerized-presto-alluxio-setups-for-blazing-fast-analytics-ce77109032b9

鏈接2:https://github.com/tygrash/wormhole

鏈接3:https://github.com/tygrash/wormhole/blob/master/Consul.md

鏈接4:

https://github.com/tygrash/wormhole/blob/master/Docker.md

鏈接5:https://searchdatacenter.techtarget.com/definition/high-availability

鏈接6:https://github.com/tygrash/wormhole/blob/master/alluxio-master/README.md

鏈接7:https://github.com/tygrash/wormhole/blob/master/alluxio-worker/README.md

鏈接8:https://dzone.com/articles/hive-metastore-a-basic-introduction

鏈接9:https://github.com/tygrash/wormhole/blob/master/hive/README.md

鏈接10:https://github.com/tygrash/wormhole/blob/master/presto-coordinator/README.md

鏈接11:https://github.com/tygrash/wormhole/blob/master/presto-worker/README.md

鏈接12:https://zookeeper.apache.org/

鏈接13:https://github.com/tygrash/wormhole

鏈接14:https://www.metabase.com/docs/latest/administration-guide/01-managing-databases.html

鏈接15:https://kubernetes.io/

鏈接16:https://github.com/tygrash

鏈接17:https://medium.com/@tygrash


分享到:


相關文章: