資料蔣堂 第46期 大資料集群該不該透明化?

2021-08-17 01:27:09 字數 1817 閱讀 3242

摘要: 這好像是個多餘的問題,大部分大資料平台都把集群透明化作為乙個基本目標在努力實現。 所謂集群透明化,是指把乙個多台機器的集群模擬得像乙個巨大的單機,只是系統管理層面知道體系是由很多單機集群而成,應用程式則應當盡量少地感受到集群的存在,在概念上可以把整個集群理解成一台機器,甚至在**級都可能和單機運算相容。

這好像是個多餘的問題,大部分大資料平台都把集群透明化作為乙個基本目標在努力實現。

所謂集群透明化,是指把乙個多台機器的集群模擬得像乙個巨大的單機,只是系統管理層面知道體系是由很多單機集群而成,應用程式則應當盡量少地感受到集群的存在,在概念上可以把整個集群理解成一台機器,甚至在**級都可能和單機運算相容。

透明化主要有兩個方面。一方面是資料儲存,提供統一的集群檔案系統或者資料庫系統,應用程式不需要關心資料具體存放在**了,系統將自動尋找合適的節點,並提供一定的冗餘容錯機制;記憶體的透明化相對要困難一些,有時需要應用程式知道集群的存在。另一方面是任務分配,系統負責將大任務拆分成小任務並分配給各個節點機去執行,在有節點故障時能再將任務分配給其它節點;有時任務拆分比較困難,也需要程式設計師事先設計好拆分方案。

透明化顯然有好處,可以降低理解難度,開發程式時和單機情況差不多,也能提高**的相容性。從這個意義上講,只要能透明化就都應當去做,除非是實現難度太大(比如上面提到記憶體和任務拆分)的情況。

那麼,為什麼還要提出該不該透明化的問題呢?

因為,透明化難以獲得最優的效能,而高效能對於大資料計算又是乙個關鍵的目標。

高效能計算方案因運算目標和資料特徵而異,並沒有普適的優化方法。好演算法需要特定的資料分布及任務分配方案,而使用系統自動的機制就很可能無法實現了。有些優化手段還是互相矛盾的,如果不做透明化則可以根據場景選用哪種。而實現透明化時,為了保證在任何情況都能正常工作,經常只能選擇較保險的方案,常常這並不是效能最好的方案。

比如在做join運算時,我們可以從業務上區分維表和事實表,也事先知道維表的容量,如果維表資料量較小,則可以將維表主動儲存到所有節點中甚至讀入記憶體,而只把事實表分段儲存到節點中,並按此分布設計更優的演算法能。而透明化方案不能做這些假定,要處理一般情況,就不能區分維表和事實表,也不能假定維表足夠小。有些計算平台能夠臨時測定資料特徵以採用更優的計算 方案,針對join這種被研究得很透的運算有可能做到,但更複雜的情況就不一定了。

另外,透明化體系一般都會有乙個較複雜的框架來控制資料分布及實現任務排程,這個事並不簡單,本身也會消耗很多資源,而如果不搞透明化或透明化程度較弱時,則可以把這些資源本用到計算上。比如容錯機制,節點機可能有故障,集群體系要能在故障機數量不多時保證計算仍然可以進行下去,這需要重新設計資料的冗餘方案,要求高時還要及時儲存中間結果。

一定程度地犧牲透明化,可以換來更高的效能。資料儲存可以直接使用節點機的檔案系統,程式設計師可以根據運算的特徵以及節點的能力來決定資料的分布以及冗餘方案,對應用層並不提供乙個統一的網路檔案系統。任務分配也由程式設計師自行處理,也是根據運算特殊及資料分布以及節點能力來安排任務,養活框架消耗,將盡量多的資源都用到計算任務本身上。

當然,犧牲透明化會帶來程式的開發複雜度提高,與單機情況的相容性變差,這也是需要權衡的問題。透明化與否,並不是非黑即白的選擇。完全透明化,可能得不到最優的效能;徹底不透明,又會導致開發成本又過高。具體要透明到什麼程度,根據實際場來選擇。

一般來講,規模較大的集群要做好透明化,小規模集群則可以實施個性化管理。

大集群的節點多,如果不採用透明化方案,每個節點都個性化管理,那複雜度會提公升太多,雖然可能獲得一些效能提公升,但帶來的麻煩度很可能更高。而小集群則實施每個節點的個性化管理是管得過來的,節點儲存的資料各有不同。對於容錯,大集群在很短的時間段內就可能發生故障節點,一定要有較強的自動容錯能力,這時花在框架上的開銷是必須的;而小集群則沒有這個問題,幾個節點的集群保證連續正常工作許多天並不是個小概率事件,就沒必要在框架上消耗太多資源。

資料蔣堂 第46期 大資料集群該不該透明化?

摘要 這好像是個多餘的問題,大部分大資料平台都把集群透明化作為乙個基本目標在努力實現。所謂集群透明化,是指把乙個多台機器的集群模擬得像乙個巨大的單機,只是系統管理層面知道體系是由很多單機集群而成,應用程式則應當盡量少地感受到集群的存在,在概念上可以把整個集群理解成一台機器,甚至在 級都可能和單機運算...

資料蔣堂 第 46 期 大資料集群該不該透明化?

這好像是個多餘的問題,大部分大資料平台都把集群透明化作為乙個基本目標在努力實現。所謂集群透明化,是指把乙個多台機器的集群模擬得像乙個巨大的單機,只是系統管理層面知道體系是由很多單機集群而成,應用程式則應當盡量少地感受到集群的存在,在概念上可以把整個集群理解成一台機器,甚至在 級都可能和單機運算相容。...

開源大資料週刊 第52期

摘要 利用yarn capacity scheduler在emr集群上實現大集群的多租戶的集群資源隔離和quota限制 本文結合emr集群,講述了如何利用yarn capacity scheduler在emr集群上實現大集群的多租戶的集群資源quota限制與管控。本文根據姜偉華博士在數果智慧型新產品...