91欧美超碰AV自拍|国产成年人性爱视频免费看|亚洲 日韩 欧美一厂二区入|人人看人人爽人人操aV|丝袜美腿视频一区二区在线看|人人操人人爽人人爱|婷婷五月天超碰|97色色欧美亚州A√|另类A√无码精品一级av|欧美特级日韩特级

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuàng)作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

關于MPP架構的介紹與批處理架構異同點及OLAP引擎詳解

電子工程師 ? 來源:維科網(wǎng) ? 作者:園陌 ? 2021-04-14 11:18 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

面試官:說下你知道的MPP架構的計算引擎?

這個問題不少小伙伴在面試時都遇到過,因為對MPP這個概念了解較少,不少人都卡殼了,但是我們常用的大數(shù)據(jù)計算引擎有很多都是MPP架構的,像我們熟悉的Impala、ClickHouse、Druid、Doris等都是MPP架構。

采用MPP架構的很多OLAP引擎號稱:億級秒開。

本文分為三部分講解,第一部分詳解MPP架構,第二部分剖析MPP架構與批處理架構的異同點,第三部分是采用MPP架構的OLAP引擎介紹。

一、MPP架構

MPP是系統(tǒng)架構角度的一種服務器分類方法。

目前商用的服務器分類大體有三種:

SMP(對稱多處理器結構)NUMA(非一致存儲訪問結構)MPP(大規(guī)模并行處理結構)

我們今天的主角是 MPP,因為隨著分布式、并行化技術成熟應用,MPP引擎逐漸表現(xiàn)出強大的高吞吐、低時延計算能力,有很多采用MPP架構的引擎都能達到“億級秒開”。

先了解下這三種結構:

1. SMP

即對稱多處理器結構,就是指服務器的多個CPU對稱工作,無主次或從屬關系。SMP服務器的主要特征是共享,系統(tǒng)中的所有資源(如CPU、內存、I/O等)都是共享的。也正是由于這種特征,導致了SMP服務器的主要問題,即擴展能力非常有限。

2. NUMA

即非一致存儲訪問結構。這種結構就是為了解決SMP擴展能力不足的問題,利用NUMA技術,可以把幾十個CPU組合在一臺服務器內。NUMA的基本特征是擁有多個CPU模塊,節(jié)點之間可以通過互聯(lián)模塊進行連接和信息交互,所以,每個CPU可以訪問整個系統(tǒng)的內存(這是與MPP系統(tǒng)的重要區(qū)別)。但是訪問的速度是不一樣的,因為CPU訪問本地內存的速度遠遠高于系統(tǒng)內其他節(jié)點的內存速度,這也是非一致存儲訪問NUMA的由來。

這種結構也有一定的缺陷,由于訪問異地內存的時延遠遠超過訪問本地內存,因此,當CPU數(shù)量增加時,系統(tǒng)性能無法線性增加。

3. MPP

即大規(guī)模并行處理結構。MPP的系統(tǒng)擴展和NUMA不同,MPP是由多臺SMP服務器通過一定的節(jié)點互聯(lián)網(wǎng)絡進行連接,協(xié)同工作,完成相同的任務,從用戶的角度來看是一個服務器系統(tǒng)。每個節(jié)點只訪問自己的資源,所以是一種完全無共享(Share Nothing)結構。

MPP結構擴展能力最強,理論可以無限擴展。由于MPP是多臺SPM服務器連接的,每個節(jié)點的CPU不能訪問另一個節(jié)點內存,所以也不存在異地訪問的問題。

MPP架構圖:

2021040610133620.jpg

MPP架構

每個節(jié)點內的CPU不能訪問另一個節(jié)點的內存,節(jié)點之間的信息交互是通過節(jié)點互聯(lián)網(wǎng)絡實現(xiàn)的,這個過程稱為數(shù)據(jù)重分配。

但是MPP服務器需要一種復雜的機制來調度和平衡各個節(jié)點的負載和并行處理過程。目前,一些基于MPP技術的服務器往往通過系統(tǒng)級軟件(如數(shù)據(jù)庫)來屏蔽這種復雜性。舉個例子,Teradata就是基于MPP技術的一個關系數(shù)據(jù)庫軟件(這是最早采用MPP架構的數(shù)據(jù)庫),基于此數(shù)據(jù)庫來開發(fā)應用時,不管后臺服務器由多少節(jié)點組成,開發(fā)人員面對的都是同一個數(shù)據(jù)庫系統(tǒng),而無需考慮如何調度其中某幾個節(jié)點的負載。

MPP架構特征:

任務并行執(zhí)行;數(shù)據(jù)分布式存儲(本地化);分布式計算;高并發(fā),單個節(jié)點并發(fā)能力大于300用戶;橫向擴展,支持集群節(jié)點的擴容;Shared Nothing(完全無共享)架構。

NUMA和MPP區(qū)別:

二者有許多相似之處,首先NUMA和MPP都是由多個節(jié)點組成的;其次每個節(jié)點都有自己的CPU,內存,I/O等;都可以都過節(jié)點互聯(lián)機制進行信息交互。

那它們的區(qū)別是什么呢,首先是節(jié)點互聯(lián)機制不同,NUMA的節(jié)點互聯(lián)是在同一臺物理服務器內部實現(xiàn)的,MPP的節(jié)點互聯(lián)是在不同的SMP服務器外部通過I/O實現(xiàn)的。

其次是內存訪問機制不同,在NUMA服務器內部,任何一個CPU都可以訪問整個系統(tǒng)的內存,但異地內存訪問的性能遠遠低于本地內存訪問,因此,在開發(fā)應用程序時應該盡量避免異地內存訪問。而在MPP服務器中,每個節(jié)點只訪問本地內存,不存在異地內存訪問問題。

二、批處理架構和MPP架構

批處理架構(如 MapReduce)與MPP架構的異同點,以及它們各自的優(yōu)缺點是什么呢?

相同點:

批處理架構與MPP架構都是分布式并行處理,將任務并行的分散到多個服務器和節(jié)點上,在每個節(jié)點上計算完成后,將各自部分的結果匯總在一起得到最終的結果。

不同點:

批處理架構和MPP架構的不同點可以舉例來說:我們執(zhí)行一個任務,首先這個任務會被分成多個task執(zhí)行,對于MapReduce來說,這些tasks被隨機的分配在空閑的Executor上;而對于MPP架構的引擎來說,每個處理數(shù)據(jù)的task被綁定到持有該數(shù)據(jù)切片的指定Executor上。

正是由于以上的不同,使得兩種架構有各自優(yōu)勢也有各自缺陷:

批處理的優(yōu)勢:

對于批處理架構來說,如果某個Executor執(zhí)行過慢,那么這個Executor會慢慢分配到更少的task執(zhí)行,批處理架構有個推測執(zhí)行策略,推測出某個Executor執(zhí)行過慢或者有故障,則在接下來分配task時就會較少的分配給它或者直接不分配,這樣就不會因為某個節(jié)點出現(xiàn)問題而導致集群的性能受限。

批處理的缺陷:

任何事情都是有代價的,對于批處理而言,它的優(yōu)勢也造成了它的缺點,會將中間結果寫入到磁盤中,這嚴重限制了處理數(shù)據(jù)的性能。

MPP的優(yōu)勢:

MPP架構不需要將中間數(shù)據(jù)寫入磁盤,因為一個單一的Executor只處理一個單一的task,因此可以簡單直接將數(shù)據(jù)stream到下一個執(zhí)行階段。這個過程稱為pipelining,它提供了很大的性能提升。

MPP的缺陷:

對于MPP架構來說,因為task和Executor是綁定的,如果某個Executor執(zhí)行過慢或故障,將會導致整個集群的性能就會受限于這個故障節(jié)點的執(zhí)行速度(所謂木桶的短板效應),所以MPP架構的最大缺陷就是——短板效應。另一點,集群中的節(jié)點越多,則某個節(jié)點出現(xiàn)問題的概率越大,而一旦有節(jié)點出現(xiàn)問題,對于MPP架構來說,將導致整個集群性能受限,所以一般實際生產中MPP架構的集群節(jié)點不易過多。

舉個例子來說下兩種架構的數(shù)據(jù)落盤:要實現(xiàn)兩個大表的join操作,對于批處理而言,如Spark將會寫磁盤三次(第一次寫入:表1根據(jù)join key進行shuffle;第二次寫入:表2根據(jù)join key進行shuffle;第三次寫入:Hash表寫入磁盤), 而MPP只需要一次寫入(Hash表寫入)。這是因為MPP將mapper和reducer同時運行,而MapReduce將它們分成有依賴關系的tasks(DAG),這些task是異步執(zhí)行的,因此必須通過寫入中間數(shù)據(jù)共享內存來解決數(shù)據(jù)的依賴。

批處理架構和MPP架構融合:

兩個架構的優(yōu)勢和缺陷都很明顯,并且它們有互補關系,如果我們能將二者結合起來使用,是不是就能發(fā)揮各自最大的優(yōu)勢。目前批處理和MPP也確實正在逐漸走向融合,也已經(jīng)有了一些設計方案,技術成熟后,可能會風靡大數(shù)據(jù)領域,我們拭目以待!

三、 MPP架構的OLAP引擎

采用MPP架構的OLAP引擎有很多,下面只選擇常見的幾個引擎對比下,可為公司的技術選型提供參考。

采用MPP架構的OLAP引擎分為兩類,一類是自身不存儲數(shù)據(jù),只負責計算的引擎;一類是自身既存儲數(shù)據(jù),也負責計算的引擎。

1)只負責計算,不負責存儲的引擎

1. Impala

Apache Impala是采用MPP架構的查詢引擎,本身不存儲任何數(shù)據(jù),直接使用內存進行計算,兼顧數(shù)據(jù)倉庫,具有實時,批處理,多并發(fā)等優(yōu)點。

提供了類SQL(類Hsql)語法,在多用戶場景下也能擁有較高的響應速度和吞吐量。它是由Java和C++實現(xiàn)的,Java提供的查詢交互的接口和實現(xiàn),C++實現(xiàn)了查詢引擎部分。

Impala支持共享Hive Metastore,但沒有再使用緩慢的 Hive+MapReduce 批處理,而是通過使用與商用并行關系數(shù)據(jù)庫中類似的分布式查詢引擎(由 Query Planner、Query Coordinator 和 Query Exec Engine 三部分組成),可以直接從 HDFS 或 HBase 中用 SELECT、JOIN 和統(tǒng)計函數(shù)查詢數(shù)據(jù),從而大大降低了延遲。

Impala經(jīng)常搭配存儲引擎Kudu一起提供服務,這么做最大的優(yōu)勢是查詢比較快,并且支持數(shù)據(jù)的Update和Delete。

2. Presto

Presto是一個分布式的采用MPP架構的查詢引擎,本身并不存儲數(shù)據(jù),但是可以接入多種數(shù)據(jù)源,并且支持跨數(shù)據(jù)源的級聯(lián)查詢。Presto是一個OLAP的工具,擅長對海量數(shù)據(jù)進行復雜的分析;但是對于OLTP場景,并不是Presto所擅長,所以不要把Presto當做數(shù)據(jù)庫來使用。

Presto是一個低延遲高并發(fā)的內存計算引擎。需要從其他數(shù)據(jù)源獲取數(shù)據(jù)來進行運算分析,它可以連接多種數(shù)據(jù)源,包括Hive、RDBMS(Mysql、Oracle、Tidb等)、Kafka、MongoDB、Redis等。

2)既負責計算,又負責存儲的引擎

1. ClickHouse

ClickHouse是近年來備受關注的開源列式數(shù)據(jù)庫,主要用于數(shù)據(jù)分析(OLAP)領域。

它自包含了存儲和計算能力,完全自主實現(xiàn)了高可用,而且支持完整的SQL語法包括JOIN等,技術上有著明顯優(yōu)勢。相比于hadoop體系,以數(shù)據(jù)庫的方式來做大數(shù)據(jù)處理更加簡單易用,學習成本低且靈活度高。當前社區(qū)仍舊在迅猛發(fā)展中,并且在國內社區(qū)也非常火熱,各個大廠紛紛跟進大規(guī)模使用。

ClickHouse在計算層做了非常細致的工作,竭盡所能榨干硬件能力,提升查詢速度。它實現(xiàn)了單機多核并行、分布式計算、向量化執(zhí)行與SIMD指令、代碼生成等多種重要技術。

ClickHouse從OLAP場景需求出發(fā),定制開發(fā)了一套全新的高效列式存儲引擎,并且實現(xiàn)了數(shù)據(jù)有序存儲、主鍵索引、稀疏索引、數(shù)據(jù)Sharding、數(shù)據(jù)Partitioning、TTL、主備復制等豐富功能。以上功能共同為ClickHouse極速的分析性能奠定了基礎。

2. Doris

Doris是百度主導的,根據(jù)Google Mesa論文和Impala項目改寫的一個大數(shù)據(jù)分析引擎,是一個海量分布式 KV 存儲系統(tǒng),其設計目標是支持中等規(guī)模高可用可伸縮的 KV 存儲集群。

Doris可以實現(xiàn)海量存儲,線性伸縮、平滑擴容,自動容錯、故障轉移,高并發(fā),且運維成本低。部署規(guī)模,建議部署4-100+臺服務器。

Doris3 的主要架構:DT(Data Transfer)負責數(shù)據(jù)導入、DS(Data Seacher)模塊負責數(shù)據(jù)查詢、DM(Data Master)模塊負責集群元數(shù)據(jù)管理,數(shù)據(jù)則存儲在 Armor 分布式 Key-Value 引擎中。Doris3 依賴 ZooKeeper 存儲元數(shù)據(jù),從而其他模塊依賴 ZooKeeper 做到了無狀態(tài),進而整個系統(tǒng)能夠做到無故障單點。

3. Druid

Druid是一個開源、分布式、面向列式存儲的實時分析數(shù)據(jù)存儲系統(tǒng)。

Druid的關鍵特性如下:

亞秒級的OLAP查詢分析:采用了列式存儲、倒排索引、位圖索引等關鍵技術;在亞秒級別內完成海量數(shù)據(jù)的過濾、聚合以及多維分析等操作;實時流數(shù)據(jù)分析:Druid提供了實時流數(shù)據(jù)分析,以及高效實時寫入;實時數(shù)據(jù)在亞秒級內的可視化;豐富的數(shù)據(jù)分析功能:Druid提供了友好的可視化界面;SQL查詢語言;高可用性與高可拓展性:Druid工作節(jié)點功能單一,不相互依賴;Druid集群在管理、容錯、災備、擴容都很容易;

4. TiDB

TiDB 是 PingCAP 公司自主設計、研發(fā)的開源分布式關系型數(shù)據(jù)庫,是一款同時支持OLTP與OLAP的融合型分布式數(shù)據(jù)庫產品。

TiDB 兼容 MySQL 5.7 協(xié)議和 MySQL 生態(tài)等重要特性。目標是為用戶提供一站式 OLTP 、OLAP 、HTAP 解決方案。TiDB 適合高可用、強一致要求較高、數(shù)據(jù)規(guī)模較大等各種應用場景。

5. Greenplum

Greenplum 是在開源的 PostgreSQL 的基礎上采用了MPP架構的性能非常強大的關系型分布式數(shù)據(jù)庫。為了兼容Hadoop生態(tài),又推出了HAWQ,分析引擎保留了Greenplum的高性能引擎,下層存儲不再采用本地硬盤而改用HDFS,規(guī)避本地硬盤可靠性差的問題,同時融入Hadoop生態(tài)。

3)常用的引擎對比

一張圖總結下常用的OLAP引擎對比:

常見OLAP引擎對比

20210406101337601.jpg

編輯:lyn

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權轉載。文章觀點僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報投訴
  • SMP
    SMP
    +關注

    關注

    0

    文章

    81

    瀏覽量

    20815
  • OLAP
    +關注

    關注

    0

    文章

    24

    瀏覽量

    10483
  • MPP
    MPP
    +關注

    關注

    0

    文章

    26

    瀏覽量

    11375
收藏 人收藏
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

    評論

    相關推薦
    熱點推薦

    從“人機交互”到“數(shù)字預演”:詳解 HMI、SCADA 與虛擬調試的閉環(huán)架構

    從“人機交互”到“數(shù)字預演”:詳解 HMI、SCADA 與虛擬調試的閉環(huán)架構
    的頭像 發(fā)表于 03-05 11:36 ?58次閱讀
    從“人機交互”到“數(shù)字預演”:<b class='flag-5'>詳解</b> HMI、SCADA 與虛擬調試的閉環(huán)<b class='flag-5'>架構</b>

    TAS3103A數(shù)字音頻處理器:特性、架構與應用詳解

    TAS3103A數(shù)字音頻處理器:特性、架構與應用詳解 引言 在當今數(shù)字化音頻處理領域,一款高性能、可配置的音頻處理器至關重要。德州儀器(Te
    的頭像 發(fā)表于 02-27 16:25 ?108次閱讀

    RK3588?平臺?MPP?編譯?+ VPU?格式測試

    ~ ? ? 一、什么是 ?MPP ? ? ? 瑞芯微 ?Media Process Platform ( MPP )是針對? RK? 芯片的通用媒體處理平臺,它封裝了芯片底層復雜邏輯,提供統(tǒng)一的音視頻編解碼
    的頭像 發(fā)表于 12-25 11:33 ?1889次閱讀
    RK3588?平臺?<b class='flag-5'>MPP</b>?編譯?+ VPU?格式測試

    嵌入式軟件分層架構設計原則

    嵌入式軟件分層架構的設計原則如下: 模塊化和可擴展性:每一層應當保持松耦合,這樣當硬件變化或某些功能擴展時,只需要修改對應的層次,而不影響整體架構。 硬件無關性:上層代碼應當盡量避免直接依賴硬件
    發(fā)表于 11-28 07:05

    芯源MCU架構是不是基本都是ARM架構?還有其他的架構嗎?

    芯源MCU架構是不是基本都是ARM架構?還有其他的架構嗎?
    發(fā)表于 11-20 06:21

    modbus消息幀的模塊化架構介紹

    MODBUS消息幀的模塊化架構 1. 地址字段:通信尋址的核心 Modbus RTU協(xié)議采用單字節(jié)(8位)地址字段,支持1-247個從站設備(0保留為廣播地址)。 廣播機制:地址0的報文會被所有從站
    發(fā)表于 11-17 08:15

    新能源汽車高壓架構詳解

    應讀者建議,講一下高壓電氣架構,花了一點時間做了一些圖,便于直觀理解,分析一下高壓架構的發(fā)展歷程和趨勢。
    的頭像 發(fā)表于 09-02 15:01 ?3065次閱讀
    新能源汽車高壓<b class='flag-5'>架構</b><b class='flag-5'>詳解</b>

    多節(jié)點并行處理架構

    多節(jié)點并行處理架構(如MPP架構)通過分布式計算和存儲實現(xiàn)高性能數(shù)據(jù)處理,其核心設計及典型應用如下: 一、核心
    的頭像 發(fā)表于 06-12 08:18 ?624次閱讀
    多節(jié)點并行<b class='flag-5'>處理</b><b class='flag-5'>架構</b>

    知識分享 | 評估模型架構——如何實現(xiàn)?

    確保良好的模型架構對于開發(fā)安全和可靠的軟件非常重要。本文為您介紹MES Model Examiner? (MXAM)如何優(yōu)化模型架構,簡化復雜度管理步驟,并最終提升軟件質量。
    的頭像 發(fā)表于 06-05 11:46 ?653次閱讀
    知識分享 | 評估模型<b class='flag-5'>架構</b>——如何實現(xiàn)?

    GPU架構深度解析

    GPU架構深度解析從圖形處理到通用計算的進化之路圖形處理單元(GPU),作為現(xiàn)代計算機中不可或缺的一部分,已經(jīng)從最初的圖形渲染專用處理器,發(fā)展成為強大的并行計算
    的頭像 發(fā)表于 05-30 10:36 ?1853次閱讀
    GPU<b class='flag-5'>架構</b>深度解析

    技術分享 | 如何在2k0300(LoongArch架構處理器上跑通qt開發(fā)流程

    技術分享 | 如何在2k0300開發(fā)板(LoongArch架構處理器上跑通qt開發(fā)流程
    的頭像 發(fā)表于 05-20 11:05 ?895次閱讀
    技術分享 | 如何在2k0300(LoongArch<b class='flag-5'>架構</b>)<b class='flag-5'>處理</b>器上跑通qt開發(fā)流程

    詳解電動汽車的區(qū)域控制架構

    故障情況。不同于傳統(tǒng)的域架構,區(qū)域控制架構采用集中控制和計算的方式,將分散在各個 ECU 上的軟件統(tǒng)一交由強大的中央計算機處理,從而為下游的電子控制和配電提供了更高的靈活性。
    的頭像 發(fā)表于 05-15 09:23 ?2100次閱讀
    <b class='flag-5'>詳解</b>電動汽車的區(qū)域控制<b class='flag-5'>架構</b>

    EM儲能網(wǎng)關 ZWS智慧儲能云應用(11) — 一級架構 主從架構

    ZWS智慧儲能云針對儲能場景下不同的架構體系進行了兼容,可以適配用戶面臨的復雜現(xiàn)場環(huán)境,滿足更深層次的管理和維護需求。簡介儲能系統(tǒng)包含PCS、BMS、EMS等多個組件,不同儲能架構管理和決策方式也有
    的頭像 發(fā)表于 04-17 13:00 ?767次閱讀
    EM儲能網(wǎng)關 ZWS智慧儲能云應用(11) — 一級<b class='flag-5'>架構</b> 主從<b class='flag-5'>架構</b>

    汽車電氣架構中的電源架構

    隨著汽車電子化、智能化的快速發(fā)展,汽車電氣架構(E/E架構)已成為現(xiàn)代汽車的核心技術之一。
    的頭像 發(fā)表于 03-29 11:25 ?998次閱讀

    博世GTM IP模塊架構介紹

    上篇文章我們介紹了博世GTM IP模塊的核心功能及基礎結構模塊。本篇文章將繼續(xù)解析GTM模塊架構,重點介紹I/O模塊,特殊功能模塊及內核模塊。這些模塊不僅增強了GTM的信號處理能力,還
    的頭像 發(fā)表于 03-07 17:50 ?2488次閱讀
    博世GTM IP模塊<b class='flag-5'>架構</b><b class='flag-5'>介紹</b>