摘要:
Apache Superset是一個開源的基於主流雲原生技術構建的資料可視分析平臺Business Intelligence(BI),給使用者提供輕量,直觀,可定製的操作介面來對接各種資料來源,實現資料的查詢,編排和視覺化。通過結合Amazon Elastic Container Service(Amazon ECS),Amazon Cloud Map等託管服務,我們可以將Apache Superset快速構建至託管的容器叢集,而無需安裝、操作和擴充套件額外的容器編排和叢集管理基礎設施,IT人員,資料分析師等角色可以專注於業務本身,更加高效的實現從資料驅動認知到資料驅動決策的轉變。
- Apache Superset:
https://superset.apache.org/
關鍵訊息:
Business Intelligence(BI),容器技術;
關鍵服務:
Amazon Elastic Container Service(ECS),Amazon Cloud Map,Amazon Elastic File System(EFS);
前言
當今BI平臺的技術演進向資料和分析兩端發展,資料端通過ODBC/JDBC等SQL應用介面對接資料來源,通過ETL加工後送入資料倉儲實現雲上,線下資料的統一管理,分析端利用大資料,AI/ML,NLP等技術實現資料的智慧查詢,深度分析和知識圖譜等能力。伴隨雲端計算技術成熟和發展,利用雲服務廠商所提供的託管服務打造的基礎平臺,在業務可靠性,應用靈活性以及現有服務對接方面相較傳統BI都存在較大優勢,以雲託管服務為基礎設施的一站式BI平臺逐漸成為趨勢。
在資料ETL,數倉託管,資料探勘,資料視覺化環節,亞馬遜雲科技都提供了成熟可靠的託管服務(如Amazon Glue,Amazon Redshift,Amazon EMR)來幫助客戶快速搭建起自有的全自動化資料處理流水線,實現從原始資料獲取到最終商業決策的快速落地,同時針對BI平臺未來智慧化,自動化的技術趨勢,亞馬遜雲科技也提供了從應用Amazon SaaS到基礎設施的全AI/ML產品體系,以更好支撐各垂直行業如金融,電商,製造的細分領域和具體應用。
架構概覽
Amazon Apache Superset各功能模組採用鬆耦合的方式獨立開發迭代,模組間的通訊通過Celery構建的分散式訊息佇列實現,對於容器技術如Docker,Kubernetes的支援相對完善。
其主要模組及採用的技術棧如下所示:
- web server(Gunicorn, Nginx, Apache)
- metadata database engine(MySQL, Postgres, MariaDB, etc.)
- message queue(Celery, Redis, RabbitMQ, SQS, etc.)
- results backend(S3, Redis, Memcached, etc.)
- caching layer(Memcached, Redis, etc.)
基於雲原生技術開發的理念,使用者可以按照自身需求靈活定製後端實現,如訊息佇列方面,使用者可以採用預設的Redis,也可以對接Amazon SQS實現更為經濟可靠,彈性高效的佇列功能。目前社群提供的容器版本通過Host Volume單節點執行的方式來實現應用的初始建立,資料掛載等功能,如下圖所示:
為了最大程度適配原有Apache Superset的架構設計,我們將其遷移執行到亞馬遜雲科技的基本思路是將平臺本身相對獨立的功能模組執行在Amazon ECS上,利用Amazon ECS Fargate實現資源的排程,服務的健康檢查,各Amazon ECS服務本身通過Amazon Cloud Map建立的私有DNS進行服務發現,定址和通訊,各Amazon ECS服務自身的資料儲存共享通過Amazon EFS實現,以獲取更好的可用性,靈活性和低成本。網路規劃我們遵循亞馬遜雲科技最佳實踐,使用者上行inbound訪問流量通過Amazon Application Load Balancer對接到Amazon ECS叢集的Superset Service,Superset Service的下行outbound流量如連線外部資料來源,獲取示例資料等則通過Amazon NAT Gateway實現,結合Amazon VPC安全組實現網路流量的埠控制(如Superset預設的埠8088),整體方案的軟體架構如下圖所示:
相較於Apache社群版本,執行在亞馬遜雲科技上的Apache Superset存在如下優勢:
- 核心模組(Superset,Cache,Database)高可用;
- 業務資料(後設資料,查詢資料,互動資料)持久化;
- 平臺資源彈性伸縮,使用者無需關心底層資源排程;
- 預裝SQL,PostgreSQL,Redshift,Athena,ClickHouse資料來源驅動,建立完畢即可連線已有資料
- 預裝時序預測演算法,基於匯入資料實現未來趨勢預測
- 視覺化看板實時監控亞馬遜雲服務各項指標以及應用綜合指標
建立步驟
該方案Apache Superset的所有功能模組通過預定義好的Amazon CloudFormation模版實現建立啟動,點選如下按鍵將跳轉到Amazon CloudFormation控制檯介面(Beijing)進行整體方案的一鍵部署。程式碼實施細節參見這裡。
- Amazon CloudFormation:
https://aws.amazon.com/cn/clo... - 這裡:
https://github.com/aws-quicks...
部署到已有Amazon VPC:
https://cn-north-1.console.am...
部署到新建Amazon VPC:
https://cn-north-1.console.am...
配置選項配置用於登陸Superset控制檯的使用者名稱和密碼,其中“Pre-populate example dashboard”用於配置是否要獲取官方內建示例資料集以及儀表板,”Install Prophet library”用於配置是否要安裝Prophet軟體包以實現資料的線上預測功能。
待Stack安裝完畢之後,我們可跳轉到Amazon ECS控制檯檢視所有的Superset元件是否正常啟動執行,如下圖所示,我們可以看到所有的服務處於Active狀態
點選其中包含SupersetService字樣的Service,在Load Balancing一欄可檢視所對接的Amazon ALB的Target Group,其預設開放的埠為8088,我們之後的操作訪問頁面也將通過這個埠;在Network Access一欄可檢視Superset所在Amazon VPC的基本資訊,包括子網,安全組等,在接下來的資料對接中,我們需要確保建立的Amazon Redshift在同一個Amazon VPC;在Service discovery一欄可檢視服務對應的內部DNS名稱,該興趣的讀者可以跳轉至Amazon Route 53介面檢視對應的Domain name和Record name以瞭解各服務之間如何發現,定址和通訊。
接下來我們在瀏覽器中輸入Outputs選項中輸出的登陸Superset的地址。
輸入之前建立應用時配置的使用者名稱和密碼,便可以開始使用Superset來進行資料分析。
資料對接
接下來我們將建立一個Amazon Redshift,具體的叢集建立,資料匯入等流程在此不再贅述,可參考官方網站詳細介紹。需要注意的是,我們在此建立的Amazon Redshift所在Amazon VPC需要同建立Superset所在的Amazon ECS一致,以確保在不開啟Amazon Redshift公共訪問許可權的情況下,Superset仍然能夠通過內部Amazon VPC網路實現資料的關聯。
Amazon Redshift建立完畢之後,記錄下對應的Endpoint地址。
接下來切換到Superset操作介面,點選Data,下拉框選擇Databases開始連線,URL格式為redshift+psycopg2://:@:5439/,更多其他資料來源的URL格式可以參考Superset官方文件。
- Superset官方文件:
https://superset.apache.org/d...
連線成功後,點選Datasets檢視對應的資料集是否正常顯示,這裡的示例資料是”daily”。
點選進去進行編輯,Visualization Type中選擇Time-series Chart,Time Range選擇No filter,Query中Column為要顯示的數值,Aggregate選擇Sum操作,點選Run可以看到資料按照時間序列繪製出來,同時在Data一欄展示了資料樣本,注意上述配置需要根據實際資料進行修改。需要注意橫向時間軸的最後時間為2014-02-22
如果在建立Superset的選項我們選擇了Install Prophet library為yes,我們可以進一步體驗Superset內建的時間序列預測功能。點選Predictive Analytics,勾選Enable Forecast選項,其他選項預設,重新執行RUN。
可以看到Superset在之前的資料基礎上對未來10天的資料走勢進行了預測(此時橫向時間軸的最後時間為2014-03-04)並繪製出了資料的置信區間,其中紫色圓點為原始的時間序列離散點,紫色實線為使用時間序列擬合所得到的取值,實線周圍的淺色區域則為資料的置信區間,即合理的上界和下界。在該操作中我們需要輸入的是包含時間戳和值的原始資料,需要預測的時間序列長度,得到的輸出為未來時間序列趨勢以及對應的置信區間。
最後
利用Amazon Elastic Container Service(ECS)及其支援的無伺服器計算特性(Fargate),我們可將原有容器負載或新開發的雲原生負載非常平滑的遷移到亞馬遜雲科技平臺,通過設計隔離各軟體模組來提高服務的安全性和可靠性,而無需預置和管理伺服器,結合Amazon Route 53,Amazon Cloud Map,Amazon Elastic File System實現服務通訊和資料儲存,Amazon CloudFormation實現服務部署和擴充套件,最終降低Amazon BI平臺的使用門檻,IT人員,資料分析師等角色可以專注於業務本身,更加高效的實現從資料驅動認知到資料驅動決策的轉變。
本篇作者
易珂
亞馬遜雲科技解決方案架構師
開源專案和新興技術愛好者,負責亞馬遜雲科技解決方案的諮詢,構建和實施,擁有近十年研發及技術團隊管理經驗,其技術領域包括無伺服器(Serverless),容器,AI/ML。