使用Alluxio統一結構化大數據
理解在分析存儲於數據倉庫的結構化大數據時Alluxio所帶來的益處。
- 使用配置來整合數據存儲,而不是ETL
- 在文件系統和對象存儲之間統一大數據文件
- 對重要和經常使用的數據提供按需快速本地訪問,不保留永久副本
- 通過刪除數據副本和將數據遷移到商用存儲來降低存儲成本
1. 摘要
問題描述:對存儲在不同倉庫中的結構化大數據進行分析是大型企業面臨的挑戰
- 許多大型企業都有結構化大數據,這些數據通過多種存儲技術如HDFS、對象存儲和NFS等被存儲在不同的倉庫中。
- 商業用戶需要通過這些倉庫訪問數據來執行高性能的查詢並獲得有意義的洞察力。
傳統方法:數據湖
- 數據湖是解決這個問題的傳統方法,它提供一個單一系統,可以訪問相關數據。
- 傳統方式創建的數據湖是資源密集型,需要代價很高的永久數據拷貝並且在數據創建和分析之間造成了延遲。
- 隨著時間的推移,業務線可能會創建各自獨立的數據湖,從而創建了使用不兼容的存儲技術實現的數據倉庫。
- 大型企業也可能會部署一種「數據湖的數據湖」,以便在多個業務線之間訪問數據,從而創建另一個數據副本。
- 團隊可能會不斷嘗試新的存儲和計算技術,從而增加了數據管理的難度。
新方案:Alluxio虛擬分散式文件系統
- Alluxio是第一個在文件系統和對象存儲之間統一大數據文件的虛擬化存儲技術。
- 作為一個「虛擬數據湖」,應用程序可以訪問在Alluxio全局命名空間中的文件,就好像這些文件在一個傳統的Hadoop文件系統或對象存儲中一樣。
- Alluxio提供了按需快速本地訪問重要和頻繁使用的數據,不需要維護一個永久的副本。緩存的只是數據塊,而不是整個文件。
- 企業可以通過將更多的數據遷移到商用存儲中來減少存儲開銷。
- 底層存儲通過使用配置而不是ETL來整合。數據存在它的源系統中,有效地消除了過時數據的問題。
- 開發者使用工業標準介面(包括HDFS和S3A)與Alluxio進行交互。Alluxio系統的插件化架構能夠支持未來的出現的介面訪問技術。
- 可擴展性、靈活性、安全性和容錯性已經在系統中被原生地設計出來了。
SQL代碼示例:包括一個技術示例,用於在跨多個存儲集群的表中使用Spark SQL執行和持久化SQL join。
2. 介紹
隨著數據量的增長,大型企業正在採用大數據技術來處理涉及PetaByte規模的結構化和非結構化數據。大數據通常存儲在許多系統和業務單元中。企業要求技術團隊以高性能和成本有效的方式在這些系統中提供統一的、聚合的數據視圖。
這篇文章介紹了Alluxio和它如何獨特地解決了結構化大數據統一管理和訪問的難題。
3. 統一大數據的傳統方法
當大型企業不能保證其大數據存在於一個單源系統或數據湖中時,企業就需要解決大數據統一訪問的難題。這通常是通過自定義應用層解決方案或創建數據湖來解決的。事實上,這些解決方案通常會很困難:
自定義解決方案
- 需要編寫和維護自定義的應用層代碼,這項工作是勞動密集型的並且易於中斷。
- 沒有緩存,這對於提升查詢性能是一個重要的障礙。
傳統的數據湖
- 傳統的數據湖是資源密集型的,並且需要維護永久的數據副本,這是非常昂貴的。
- 每次複製數據時,都會引入延遲,而且用於分析的數據的版本不一定是最新的。
- 隨著時間的推移,業務線可能會創建各自獨立的數據湖,從而創建了使用不兼容的存儲技術實現的數據倉庫。
4. 統一大數據——Alluxio之道
Alluxio是世界上第一個內存級速度的虛擬分散式文件系統。它統一了數據訪問並且連接了計算框架和底層的存儲系統。應用程序只需要連接到Alluxio就可以訪問存儲在任何底層存儲系統中的數據。此外,Alluxio架構能夠以內存速度訪問數據,提供了最快的I/O。
在大數據生態系統中,Alluxio位於計算和存儲中間。它可以為生態系統帶來顯著的性能提升,尤其是跨數據中心和可用性區域。Alluxio是Hadoop和對象存儲兼容的,並且支持對底層存儲進行讀寫。現有的數據分析應用程序,如Hive、HBASE和Spark SQL,可以在不更改任何代碼的情況下運行在Alluxio上。
Alluxio的益處
- 統一訪問:充當一個「虛擬數據湖」。文件可以在Alluxio全局命名空間中被訪問,就好像它們存儲在一個單系統中。
- 性能:對重要頻繁使用的數據提供快速本地訪問,而不需要維護所有數據的永久副本。Alluxio只智能地緩存所需的數據塊,而不是整個文件。
- 靈活性:Alluxio中的數據可以在不同的工作負載之間被共享,不僅是查詢還可以用於批量分析,機器學習和深度學習。
- 存儲開銷最優化:透明地從源系統直接讀寫數據,因此不需要創建永久的數據副本。Alluxio的內置緩存可以:
- 利用計算節點上未使用的RAM和磁碟存儲來減少硬體開銷。
- 使企業能夠將更多的數據遷移到更低成本的商用存儲中。
- 配置驅動:使用配置整合底層存儲,而不是ETL。
- 更現代靈活的架構:促進計算和存儲的分離。即插即用的系統架構能夠支持未來的技術。
- 沒有產商鎖定:支持工業標準介面,包括HDFS和S3A。
- 維護企業數據安全和管理:與現有的企業系統集成以支持統一的數據管理。
Alluxio提供的創新功能
全局命名空間:用戶以一個單機虛擬文件系統中的掛載點的方式與底層存儲進行交互,從而簡化了訪問。
伺服器端API轉換:用戶通過HDFS或S3A來與Alluxio進行通信。但是,底層存儲系統不需要本地支持HDFS或S3A。任何具有兼容介面的存儲系統都可以作為底層存儲被掛載,並且Alluxio使得伺服器端API和應用程序選擇的介面的轉換變得容易。通過Alluxio的模塊化架構也可以添加新的自定義介面。Alluxio的轉換能力提升了你的企業架構的互通性並且簡化了開發。
兼容的底層存儲介面:HDFS,NFS,Amazon S3A,Azure Blob Storage或Google Cloud Storage。
帶內緩存:緩存對用戶是帶內或透明的,並使用集中管理策略進行控制。用戶不需要付出任何努力就可以從改進的性能中獲益,並且管理是有組織地進行維護。
樣本用例:
在這個示例企業中,與客戶交互相關的所有數據位於兩個不同的系統中:銷售系統包含客戶所購買的所有產品的信息,客戶支持系統包含客戶記錄的所有支持案例信息。這兩個系統是相互孤立的,但是為了了解客戶的所有交互情況,必須聯合這兩個孤立系統進行查詢,並將結果以客戶視圖的方式提供給用戶。
統一SQL查詢:一個示例
一旦底層存儲系統通過Alluxio進行統一後,SQL引擎就可以和底層表進行交互,就好像它們是單個系統的一部分一樣。
在下面的示例中,Spark SQL將載入來自不同集群的兩張表,這些表位於Alluxio的」/mnt/a」和「/mnt/b」中並且將結果寫入「/mnt/c」中的第三個集群。
5. 性能和存儲成本
大多數情況下,在一次分析中一個語料庫中只有一部分數據被使用。這個比例通常不到20%。傳統地,企業必須在對重要且經常使用的數據提供快速訪問和對所有數據提供統一訪問之間進行權衡,這會增加技術預算的重大成本。
Alluxio在允許對企業數據進行有效統一訪問的同時,也提供了按需快速本地訪問分析使用的數據。作為一個虛擬文件系統,Alluxio的全局命名空間允許用戶瀏覽並與被掛載系統中的文件元數據進行交互。但是,只有當用戶需要它時才會訪問數據,並且可以透明地緩存已請求的文件數據。這種即時的設計理念使Alluxio能夠同時解決性能和成本方面的難題。
設計挑戰和緩存
在設計高性能大數據架構時,必須解決現代基礎設施的兩個現實問題:
- 數據局部性;數據分布在多個數據中心
- 在廉價但緩慢的存儲中的冷數據
當對性能有需求時,Alluxio會用它的本地智能緩存來解決數據局部性和低成本存儲的難題。
緩存的管理方式有兩種:
- 動態使用升級、降級和TTL策略
- 對於已知的經常訪問的數據或需要高速訪問SLAs預先設置策略
管理員決定Alluxio可用的緩存空間大小來提供性能比的最佳成本,而智能策略將透明地管理留在緩存空間中的數據。當緩存空間滿時,數據訪問繼續正常進行,而智能緩存優先處理數據。
使用Alluxio的完全集成緩存,應用程序用戶能夠以一種透明的方式高速地訪問來自遠程或緩慢存儲系統的數據,同時允許企業控制存儲成本。
分層緩存
Alluxio可以並存在數據中心或計算和作業執行的可用性區域中,並且可以安裝在現有的計算節點、專用節點或兩者結合。Alluxio的緩存可以設置為RAM、SSD和HDD,通過配置為其預留空間。
用戶定義用於固定、多層升級/降級和TTL的策略。例如,一種常見的分層方法是:
默認情況下,數據被緩存到頂層,並根據需要將數據驅逐到下一層。管理員可以控制這些全局策略,還可以在底層存儲中設置定製的緩存策略,從而更好地控制了Alluxio的存儲資源。如果授權,用戶也可以每次請求都指定緩存覆蓋。
存儲成本優化
由於性能和互用性的考慮,現在CIOs通常必須選擇昂貴的存儲技術,而不是成本更低的替代方案。
通過使用Alluxio,CIOs可以加速企業存檔策略,將更多的數據轉到低成本的存儲技術。
- Alluxio的智能緩存提供了數據局部性,以克服低成本存儲的典型低性能。
- 當被掛載到Alluxio中,利用HDFS或S3A介面進行數據訪問的應用程序可以訪問那些本地不支持這些介面的存儲技術。
- 數據可以在存儲系統之間移動,而不需要在應用層進行任何的改變。
6. 企業級的考慮
PetaByte規模的數據
大多數大型企業都有PetaByte規模的結構化大數據。通常看到的邏輯大數據表都是TeraByte規模的。為了改進操作,這些大表通常被劃分為表分區文件。大數據存儲系統(例如,HDFS和對象存儲)將大型文件分割成MegaByte規模的數據塊。數據塊級存儲允許對大數據文件進行細粒度控制並且最小化整個網路的數據流。Alluxio被設計成可以和HDFS和對象存儲無縫地工作,並且只透明地返回滿足請求所需的塊。這保證了不會以I/O瓶頸或大規模數據移動為代價進行數據統一。
元數據的管理
Alluxio共享了一個在領先的大數據系統如HDFS和對象存儲中常見的基礎設計假設,即數據是不可變的,也就是說,它們一旦被寫入,就永遠不會被修改。不可變數據允許系統突破隨機寫入需求所造成的規模限制。Alluxio引入了不可變數據以確保元數據與底層存儲的同步是一種低開銷操作。當新文件被寫入時,如果通過Alluxio來添加,可以立即使用它們。文件如果被添加到Alluxio外的底層存儲時,將根據用戶定義的元數據刷新策略來與Alluxio同步。在這兩種情況下,Alluxio中的元數據都保持同步,從而簡化了用戶的數據訪問。
安全性
對於大型企業來說,數據安全性是極其重要的。除了數據統一管理訪問之外,Alluxio還可以作為跨多個存儲系統的統一安全層。
用戶身份認證
在一個具有統一身份服務的企業中,Alluxio簡單地認為服務是真理的來源,並且不負責在多個服務之間統一身份。身份服務如LDAP,通過不同的身份認證和IAM協議連接到不同的存儲庫中。
如果一個企業組織沒有統一的身份認證服務,Alluxio會提供一個靈活的憑證管理方法,以實現多個底層存儲的安全連接。在Alluxio中,用戶身份認證是通過Kerberos實現的,這與底層存儲身份認證是分離的,而是使用底層存儲支持的身份認證方法實現的。
訪問控制
Alluxio提供了一個類似於當前POSIX-compliant模型的統一訪問控制模型。此外,它還添加了類UNIX的訪問控制列表(ACLs)來支持任何用戶或組的細粒度許可權控制。
如果用戶在LDAP身份存儲中進行管理,Alluxio也可以與Active Directory和LDAP進行集成,以查詢用戶的組成員身份並實現訪問控制。
當訪問遠程安全的Hadoop集群中的數據時,Alluxio支持HDFS用戶模擬,這是一種安全的最佳實踐。通過模擬,Alluxio可以代表客戶端請求數據訪問。這使得Hadoop集群能夠維護完整的用戶授權,並使Alluxio成為一個透明的數據代理。管理員使用現有的Hadoop工具如Cloudera Sentry和Apache Ranger來管理安全性。
加密
Alluxio支持掛載加密的數據源。由於Alluxio本身對數據塊中的具體內容不作語義結構感知,所以加密的數據不會影響Alluxio的核心操作。
例如,如果一個SQL引擎需要訪問加密的HDFS數據,Alluxio會模擬客戶端的用戶並代表用戶請求訪問。一旦授權,數據將被解密並以正常的形式返回給用戶。如果同時啟用了緩存,數據將以未加密的方式存儲的Alluxio中。還可以啟用Kerberos以進一步安全訪問。
如果數據還沒有在底層存儲中加密,或者如果緩存在Alluxio需要加密,Alluxio也會代表客戶端應用支持加密/解密。即使加密不是由存儲系統本身進行全局配置的,也可以將由Alluxio加密的數據存儲回底層存儲中。
靈活性&集中性
許多大型企業都希望利用靈活性和集中性來優化它們的資源使用。為了實現這種轉變,應用程序堆棧正在被重新設計,以分離計算和存儲。Alluxio的設計促進了這種分離的關注。
系統本身也被設計成可以隨著資源需求的變化而上下伸縮,並且可以通過中間層的合作關係與中間層DC/OS和Kubernetes等企業資源管理人員一起使用。在這些環境下,可以使用Alluxio來統一駐留在這些集群之外的數據。
容錯
Alluxio是一個具有內置容錯功能的分散式可擴展系統。任何組件都沒有單點故障,並且在一個組件崩潰的情況下,也不會有數據丟失。建議使用多master方法來部署Alluxio。
底層存儲也可以通過Alluxio底層存儲複製特性來複制,這一特性支持Alluxio集群之外的高可用性需求。
7. 結論
隨著大型企業努力應對日益增長的大規模數據、越來越多的存儲技術和激增的應用程序,大數據的統一正成為使用傳統方法管理的難題。
Alluxio是第一個將大數據統一起來的存儲虛擬化技術,不需要擁有自己的永久副本並且充當一個「虛擬數據湖」。應用程序使用工業標準介面和一個全局命名空間訪問Alluxio中的文件,就像這些文件在一個傳統的數據湖中一樣。Alluxio獨特之處在於底層存儲的集成是通過配置完成而不是通過ETL進行,並且數據駐留在它的源系統中,有效地消除了陳舊的數據。
Alluxio將更多的數據遷移到低成本的存儲中,並且提供快速本地訪問重要且頻繁使用的數據,從而允許企業優化存儲成本。所有的這些都是在可擴展的、安全和容錯的分散式系統中實現的。
推薦閱讀:
※情感預測SHINE: Signed Heterogeneous Information Network Embedding for Sentiment Link Prediction引介
※鄭宇:跨域數據融合方法概述(總結)