Kyligence Analytics Platform(KAP)大數據智能分析平臺[1]是基于Apache Kylin構建的企業級數據倉庫產品,能夠在超大規模數據集上提供亞秒級分析能力,為業務用戶、分析師及工程師提供簡便、快捷的大數據分析服務。在繼承Apache Kylin的高性能查詢、易用建模,多協議支持、非侵入式架構等突出優點的同時,KAP在企業用戶所關注的實施效率、安全可控、性能優化、自助式敏捷BI、系統監控等方面進行了全方位的創新,被譽為目前最為成熟的OLAP on Hadoop產品。
Azure[2]是微軟的公有云平臺,旨在向用戶提供一個開放、靈活和可靠的企業級云計算平臺。提供了各個方面極為廣泛的服務,如計算、網絡、存儲、數據庫、各類編程語言框架、大數據分析、機器學習等等。在本文中,將會側重介紹KAP在Azure上所使用到的HDInsight[3]、Blob存儲[4]以及虛擬網絡服務[5]。
通過在Azure上提供KAP的部署和服務,可以幫助已經在Azure上開展業務的企業對其數據進行分析,加速企業發展和助力決策制定。企業數據無需在本地和云端反復流轉,在云端產生同時在云端分析,快速便捷。同時釋放了企業的IT運維壓力,更多的將精力集中在核心產品上。
KAP和Azure
KAP構建于Hadoop之上,兼容開源Hadoop及主流商業Hadoop發行版,可運行在Apache Hadoop,Cloudera CDH,Hortonworks HDP,Microsoft HDInsight,AWS EMR等發行版和平臺。圖1左側所示為KAP在本地部署的情況,主要依賴的組件包括Hadoop、Hive、HBase等。 如圖1右側所示,與本地部署不同的是,KAP在Azure上選擇使用HDInsight作為底層依賴,同時利用Azure Blob存儲和虛擬網絡等云端功能。下面將對為何選擇使用這些技術做出解釋。
為什么使用HDInsight?
HDInsight是一種由云技術驅動的 Hadoop 發行版。這意味著 HDInsight 能夠處理任何數量的數據,可按需將數據容量從數 TB 擴展至數 PB 級別。支持快速創建任意數量的節點,并只對實際使用的計算和存儲收取費用。
在Azure上部署Hadoop集群,有兩種選擇:1)創建虛擬機,自行在虛擬機上部署所需的Hadoop發行版。2)使用HDInsight。相比較在虛擬機上自行安裝Hadoop,使用HDInsight有如下優劣:
優勢:
部署簡單快速;
默認使用Azure Blob存儲作為HDFS文件系統,無需考慮磁盤的運維。使用虛擬機,需要規劃掛載多大的磁盤作為存儲,容量不夠時還需要處理擴容的問題;
支持動態伸縮;
由Azure提供99.9%SLA。
劣勢:
Hadoop發行版為HDP,無其它可選;
默認安裝時不可定制(安裝后可以通過Ambari進行調整)。
為了更好的利用云計算的各項功能,我們建議直接使用HDInsight,而不是使用虛擬機手動部署Hadoop。
為什么使用Azure Blob存儲?
Azure Blob 存儲是一種穩健、通用的存儲解決方案,它與 HDInsight 無縫集成。 將Azure Blob存儲作為HDFS的底層文件系統,可以直接訪問云端存儲的數據,并將計算結果直接寫入云端。
通過在 Azure 區域的存儲帳戶資源附近創建計算群集,使計算節點能夠通過高速網絡非常高效地訪問 Azure Blob 存儲中的數據。這種方式將計算和存儲解綁,因此只在需要計算時才創建計算節點,其余時間只保留存儲,從而節約了計算成本。
在 Azure Blob 存儲而非 HDFS 中存儲數據有幾個好處:
數據重用和共享:
若HDFS 中的數據位于計算群集內,那么僅有權訪問計算群集的應用程序才能通過 HDFS API 使用數據。而Azure Blob 存儲中的數據可通過 HDFS API 或 Blob 存儲 REST API 訪問,因此,可使用大量應用程序(包括其他 HDInsight 群集)和工具來生成和使用此類數據。
數據存檔:
通過在 Azure Blob 存儲中存儲數據,可以安全地刪除用于計算的 HDInsight 群集而不會丟失用戶數據。
數據存儲成本:
與在 Azure Blob 存儲中存儲數據相比,在 DFS 中長期存儲數據的成本更高,因為計算群集的成本高于Azure Blob 存儲容器的成本。此外,由于數據無需在每次生成計算群集時重新加載,也節省了數據加載成本。
彈性向外擴展:
盡管 HDFS 提供了向外擴展文件系統,但縮放的容量將由創建的節點數量決定,更改縮放的過程也會更復雜。
異地復制:
可對 Azure Blob 存儲容器進行異地復制。該功能可提供地理恢復和數據冗余功能,保障數據的安全。(但針對異地復制位置的故障轉移將大大影響性能,并且會產生額外成本。 因此,建議僅在數據的價值值得你支付額外成本時才選擇適當的地理復制。)
為什么使用Azure 虛擬網絡?
Azure 虛擬網絡 (VNet) 是網絡在云中的表示形式。它是一種對網絡進行的邏輯隔離。用戶可以完全控制該網絡中的 IP 地址池、DNS 設置、安全策略和路由表。還可以進一步將 VNet 細分成各個子網,并在子網內啟動 Azure IaaS 虛擬機 (VM) 和云服務(PaaS 角色實例)。此外,也可以將多個虛擬網絡連通,甚至連接到本地網絡。HDInsight將所有節點部署在同一個VNet中,這樣集群內部的通信,包括數據的傳輸都是在該內網中進行。虛擬網絡外的節點無法與內部進行通信,因此集群的數據不會被竊取,從而保障了集群內的通信快速、安全和可靠。
KAP在Azure上的使用優化
云上環境與本地有所不同,KAP的使用也有一些相應需要注意的地方,下面總結了一些在Azure上使用KAP的經驗。
KAP的部署:
KAP依賴于Hadoop、Hive和HBase,因此部署KAP的節點應當能夠與HDInsight集群中的各個組件正常通信,且配置正確。可以通過在HDInsight相同的虛擬網絡中創建虛擬機,然后手動安裝或者復制對應版本的Hadoop、Hive和HBase到該機器中。這樣雖然可行,但是卻無法使用HDInsight集成的Ambari對KAP節點進行管理,這導致所有后續的配置更改也無法自動更新到KAP節點。熟悉Ambari的朋友可能已經想到,可以直接通過Ambari添加Client節點作為KAP的安裝節點,這樣可以保證新節點能夠被Ambari統一管理。但是這個方法也是不可行的,因為HDInsight隱藏了部署新節點需要的軟件源。最佳的方案是使用HDInsight的邊緣節點(Edge Node)作為部署KAP的環境。邊緣節點包含連通HDInsight集群的所有信息,各個組件也自動配置妥當,同時會被自動注冊到Ambari服務器,能夠被Ambari統一管理。創建新的邊緣節點需要使用Azure Resource Manager方式部署,可以選擇使用空邊緣節點模版[6],也可以選擇使用Kyligence公司提供的KAP模版。
加載數據:
KAP支持Hive和Kafka作為構建Cube的數據源,通常情況下我們需要將準備好的數據上傳到集群中,然后在Hive中建表作為后續構建Cube的數據源。這對于那些數據原本就在云端的用戶來說,如果分析集群在本地,或使用虛擬機磁盤作為HDFS存儲,就需要先把本就在云端的數據下載到硬盤上,然后導入Hive中,這樣既浪費了數據轉移的時間,又帶來了額外的傳輸成本。通過使用Azure Blob存儲,將HDInsight集群和KAP節點部署在原數據相同的存儲賬號下,可以直接從Azure Blob存儲在Hive中建表,KAP能夠直接將其作為數據源進行Cube的構建。同樣的,構建出來的Cube也可以直接存儲到Azure Blob中。
(使用Azure Blob數據直接創建Hive表)
利用本地文件系統加速構建:
雖然使用Azure Blob存儲帶來了諸多便利,但是作為網絡存儲,性能上終歸是要比硬盤讀寫要低。比如Azure Blob不能有效利用HDFS的緩存機制。在KAP構建Cube的過程中,存在一些中間結果,比如Hive的臨時表、MapReduce任務的輸出文件等。KAP支持將這些結果寫在本地的文件系統中,提高IO效率,加速Cube的構建。
具體配置方式如下:
我們在相同的數據集上,對是否使用本地文件系統加速進行的對比測試,結果如下:
集群動態伸縮:
HDInsight提供的集群伸縮功能可以和KAP完美的結合起來。KAP對集群的使用主要分為兩大部分:構建Cube和查詢。Cube的構建(流式構建除外)通常是定期的任務,且需要較大的集群資源,而查詢通常是不定時的,對資源沒有過高的要求。利用KAP的這個特性,可以結合HDInsight的伸縮功能,在構建Cube時擴大集群規模,構建完畢后將集群收縮至能夠滿足查詢效率的較小規模。這樣極大的提高了資源利用率,降低了成本。
集群的快速刪除與恢復:
經常會遇到這樣一種場景,構建出來的Cube并不需要長期持續不斷的被查詢,可能只在一周的某一天或一個月的某幾天需要使用。另一種類似的場景是,有些測試集群只在某些測試場景下需要,測試完畢后只需要保存構建出的Cube,集群并不需要保留。通過將KAP與HDInsight結合使用,我們可以實現構建完畢后完全刪除集群,并在需要時恢復,所有構建的Cube不會丟失。
由于HDInsight不會保留Hive Metadata Store的數據庫,所以在創建HDInsight時要指定外部的數據庫,替換默認部署的數據庫。刪除時需要保留該數據庫,以便在恢復后重新將Hive Metadata Store的數據庫替換回來。KAP的所有必要數據無需手動備份及恢復,只需將定制的配置文件保留用于恢復即可。
本文對在Azure使用KAP所用到的技術作了簡要介紹,并總結了在Azure上使用KAP的一些實踐方法,利用這些方法能夠降低用戶的成本,提高工作效率,更好的利用KAP在云端進行大數據分析。希望能給讀者帶來一定的幫助。