成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

MPP架構與Hadoop架構是一回事嗎?

開發 開發工具 架構 Hadoop
非常多的人拿MPP架構與大規模并行處理領域最著名的開源框架Hadoop相關框架做對比,這實在是讓人困惑——難道Hadoop不是“大規模并行處理”架構了?

計算機領域的很多概念都存在一些傳播上的“謬誤”。

MPP這個概念就是其中之一。它的“謬誤”之處在于,明明叫做“Massively Parallel Processing(大規模并行處理)”,卻讓非常多的人拿它與大規模并行處理領域最著名的開源框架Hadoop相關框架做對比,這實在是讓人困惑——難道Hadoop不是“大規模并行處理”架構了?

[[432747]]

很多人在對比兩者時,其實并不知道MPP的含義究竟是什么、兩者的可比性到底在哪里。實際上,當人們在對比兩者時,與其說是對比架構,不如說是對比產品。雖然MPP的原意是“大規模并行處理”,但由于一些歷史原因,現在當人們說到MPP架構時,它們實際上指代的是“分布式數據庫”,而Hadoop架構指的則是以Hadoop項目為基礎的一系列分布式計算和存儲框架。不過由于MPP的字面意思,現實中還是經常有人糾結兩者到底有什么聯系和區別,兩者到底是不是同一個層面的概念。

這種概念上的含混不清之所以還在流傳,主要是因為不懂技術的人而喜歡這些概念的大有人在,所以也并不在意要去澄清概念。“既然分布式數據庫是MPP架構,那么MPP架構就等于分布式數據庫應該也沒什么問題吧。”于是大家就都不在意了。

不過,作為一個技術人員,還是應該搞清楚兩種技術的本質。本文旨在做一些概念上的澄清,并從技術角度論述兩者同宗同源且會在未來殊途同歸。

到底什么是MPP架構?

MPP架構與Hadoop架構在理論基礎上幾乎是在講同一件事,即,把大規模數據的計算和存儲分布到不同的獨立的節點中去做。

有人可能會問:“既然如此,為什么人們不說Hadoop是MPP(大規模并行處理)架構呢?”

關于這個問題嘛,請先問是不是,再問為什么。

在GreenPlum的官方文檔中就寫道:“Hadoop就是一種常見的MPP存儲與分析工具。Spark也是一種MPP架構。”來看下面的圖,更能體會到兩者的相似性。

問:這是什么架構?

答:MPP架構。

相信了解過MPP架構的讀者對這幅圖不會陌生。也許在不同的分布式數據庫產品中,節點角色的名稱會有差異,但總體而言都是一個主節點加上多個從節點的架構。

但是,還可以有其他答案,比如MapReduce on Yarn:

這幅圖或許大家有些陌生,但只不過是省略了資源調度的簡化版MapReduce運行時架構罷了。

當然,還可以有更多答案,如Spark:

自然還可以是Flink:

有人可能會說,雖然直觀上這些架構長得很像,但是MPP架構中的Master所負責的事情是不是與其他框架不一樣?

那么,MPP架構的Master做的什么事呢?它會接收SQL語句,解析它并生成執行計劃,將計劃分發到各個節點。那么,這與Spark SQL有區別嗎?不僅與Spark SQL沒有區別,與其他任何Hadoop生態圈類似架構如Hive SQL、Flink SQL都沒有區別。對于非SQL的輸入,邏輯也是一致的,只是沒有了解析SQL的步驟,但還是會生成執行圖分發到各個節點去執行,執行結果也可以在主節點進行匯總。

不僅是在計算上沒有區別,存儲架構上也沒有區別。下面是HDFS的架構圖:

所以回到最初說的那句話——MPP架構與Hadoop架構在理論基礎上幾乎是在講同一件事,即,把大規模數據的計算和存儲分布到不同的獨立的節點中去做。上面的幾幅架構圖印證了這一點。

既然MPP架構與Hadoop架構本質上是一回事,那么為什么很多人還要將兩者分開討論呢?我們可能經常聽到這樣的話:“這個項目的架構是MPP架構。”這似乎有意在說:“這可不是Hadoop那一套哦。”

這就與MPP架構的歷史有關系。雖然從理論基礎上兩者是一回事,但是MPP架構與Hadoop架構的發展卻是走的兩條路線。MPP架構雖然也是指的“大規模并行處理”,但是由于提出者是數據庫廠商,所以MPP架構在很多人眼中就成了“分布式數據庫”的代名詞,它處理的也都是“結構化”的數據,常常作為企業數據倉庫的解決方案。而Hadoop生態圈是根正苗紅伴隨著“大數據”興起而發展起來的概念,它所要解決的是大規模數據量的存儲和計算,它的提出者也并非數據庫廠商,而是有著C端數據的互聯網企業。因此Hadoop架構雖然也解決“大規模并行處理”,但沒有了數據庫那一套東西的限制,處理的也大多是“非結構化”的數據(自然在最初階段也少了相關的優化)。當然,Hadoop生態圈也要考慮“結構化”的數據,這時Hive就成了Hadoop生態圈的數據倉庫解決方案。但是,Hadoop、Spark等框架的理論基礎與分布式數據庫仍然是一樣的。

廣義上講,MPP架構是一種更高層次的概念,它的含義就是字面含義,但是它本身并沒有規定如何去實現。Hadoop相關框架和各個分布式數據庫產品則是具體的實現。狹義上講,MPP架構成了分布式數據庫這種體系架構的代名詞,而Hadoop架構指的是以Hadoop框架為基礎的一套生態圈。

本文并不想僅僅從較高層次的架構設計來說明兩者是一回事,這樣還是缺乏說服力。下面,我們從分布式計算框架中最重要的過程——Shuffle——來展示兩者更多的相似性。

數據重分區

Shuffle是分布式計算框架中最重要的概念與過程之一。在MPP架構(分布式數據庫)中,這個數據重分區的過程與Hadoop相關框架在計算中的數據重分區過程也是一致的。

無論是Hadoop MapReduce,還是Spark或Flink,由于業務的需求,往往需要在計算過程中對數據進行Hash分區,再進行Join操作。這個過程中不同的框架會有不同的優化,但是歸根到底,可以總結為兩種方式。

其中一種方式就是直接將兩個數據源的數據進行分區后,分別傳輸到下游任務中做Join。這就是一般的“Hash Join”。

另一種方式是,當其中一個數據源數據較少時,可以將該數據源的數據分發到所有節點上,與這些節點上的另一個數據源的數據進行Join。這種方式叫做“Broadcast Join”。它的好處是,數據源數據較多的一方不需要進行網絡傳輸。

以上是Hadoop相關框架的實現。下面用一個具體的例子來看MPP架構對這一過程的思考。

在MPP架構中,數據往往會先指定分區Key,數據就按照分區Key分布在各個節點中。

現在假設有三張表,其中兩張為大表,一張為小表:

很自然地,訂單表會選擇訂單ID用做分區Key,產品表會選擇產品ID作為分區Key,客戶表會選擇客戶ID作為分區Key。給這些表中添加一些數據,并且執行一個查詢語句:

首先,訂單表要與客戶表做Join,Join Key是客戶ID。這種操作在Hadoop生態圈的分布式計算框架中,相當于對兩個表做了Hash分區的操作。不過由于客戶表已經按照客戶ID提前做好了分區,所以這時只需要對訂單表做重分區。在MPP架構中,會產生如下的結果:

此時,訂單表整個表的數據會發生重分區,由此產生網絡IO。這種情況相當于Hadoop架構中的“Hash Join”。

接著,需要讓結果與產品表按照產品ID做Join。這時,因為之前產生的結果的分區Key不是產品ID,看起來又需要將整個數據進行重分區。不過,注意到產品表是個小表,所以此時只需要將該表廣播到各個節點即可。結果如下:

在這個過程中,就只有小表的數據發生了網絡IO。這就相當于Hadoop架構中的“Broadcast Join”。

兩者還有區別嗎?

前文在MPP架構的概念、歷史以及技術細節上與Hadoop架構做了對比,了解到了兩者一些極為相似的地方,而且在廣義上講,Hadoop就是MPP架構的一種實現。

然而前文也講到,由于傳播上的謬誤,現在人們說到MPP架構,主要指的是分布式數據庫,它處理的是結構化的數據,而Hadoop生態圈是由“大數據”這套概念發展而來,最初處理的都是非結構化的數據。以此為出發點,兩者到底在發展過程中產生了多大的區別呢?

對比的維度有很多,比如很多人會說,MPP架構的平臺封閉、擁有成熟的人才市場,而Hadoop架構平臺開放、人才專業培訓較少等。但這些并不是本質的區別。這里還是以技術指標作為維度來進行對比。

技術角度上來講,MPP產品最大的優勢是作業運行時間更快。這不難理解,因為MPP產品處理的都是結構化數據,本身就是從數據庫發展而來,擁有極為復雜的優化器對作業進行優化。這些優化器是各廠商最有價值的商業機密,自然是開源產品不能比的。不過另一個角度來看,這也是MPP產品相比于Hadoop相關產品不夠靈活的地方——它只能處理結構化數據。

有人說MPP產品能夠處理的數據量沒有Hadoop架構大。這種說法并不準確。Hadoop架構之所以能處理更大量的數據,其中一個原因是硬件成本較低,擴展更加的方便。實際上,經過精心設計的MPP架構照樣可以處理PB及以上級別的數據。有人說,MPP產品不能處理大規模數據,是因為元數據的量十分巨大。其實,同樣的問題也存在于Hadoop相關框架中。另一方面,Hadoop相關框架能處理多大量的數據,與具體的實現有很大關系。如果擁有足夠的資金可以對MPP產品進行擴展,而Hadoop相關產品我們又用基于內存的計算,那么,對比的結果一定是MPP產品能夠應對更大的數據量。如果非要從數據量這一維度來做對比,可能反而是Hadoop相關產品對小數據量更有優勢。比如想要存儲一個極小的表,MPP產品也許會根據分區Key將其拆分到100個節點中去,而HDFS用一個文件塊存儲就夠用了。

未來發展

前面講到MPP產品對結構化數據的計算和存儲都更有效率。其中一部分優化就包括了存儲時的“列存儲”技術,查詢時的“CBO優化”等等。這些都是Hadoop生態圈一開始比較缺乏的技術。但是隨著這些年的發展,這些技術早就融入到了Hadoop生態圈中,Hive、Spark框架的優化技術也越做越好,由此與MPP架構的技術差距也越來越小,甚至有覆蓋的趨勢。從最核心的技術上來看,兩者未來只會越來越像。可以預測,Hadoop架構的市場會越來越大。

不過,分布式數據庫產品在安全性等方面仍然提供著更成熟的解決方案,這是開源產品短時間內無法超越的。因此,“MPP架構”這個概念仍然會在政府、傳統企業中長期占有一席之地。

【本文是51CTO專欄作者“ThoughtWorks”的原創稿件,微信公眾號:思特沃克,轉載請聯系原作者】

戳這里,看該作者更多好文

 

責任編輯:趙寧寧 來源: 51CTO專欄
相關推薦

2023-01-06 11:08:51

MPP架構Hadoop

2021-11-26 10:48:06

MPPHadoop數據庫

2019-07-25 06:52:21

物聯網大數據物聯網即服務

2019-10-12 10:40:32

區塊鏈數字貨幣比特幣

2020-08-12 09:10:16

AI芯片AI人工智能

2023-05-22 16:33:03

數字化轉型數據管理數字化

2022-08-14 15:01:21

芯片禁令

2022-09-19 23:55:59

深度學習統計學人工智能

2015-08-05 10:05:31

虛擬化容器技術

2017-03-24 18:38:40

互聯網

2022-06-06 10:20:59

CPUCPU 使用率CPU 負載

2017-03-24 17:55:47

互聯網

2009-06-11 15:05:37

無線上網卡無線網卡

2022-12-11 09:27:01

MapReduceHadoop框架

2017-05-11 12:22:10

2018-01-25 16:07:41

匿名函數自執行

2021-12-19 13:48:23

互聯網廣告裁員

2017-10-11 13:20:36

2018-01-12 14:49:18

區塊鏈分布式數據庫

2023-05-31 16:40:01

點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 夜夜骑首页 | 九九免费视频 | 久久久久久国产 | 国产综合网站 | 操操日| 精品成人在线观看 | 亚洲国产成人av好男人在线观看 | 国产成人在线视频 | 91久久国产综合久久 | 狠狠干网站 | 精品视频一区二区三区在线观看 | 精品一区二区三区免费视频 | 91在线视频观看 | 亚洲欧美激情国产综合久久久 | 国产99久久精品一区二区永久免费 | 国产午夜精品久久久久免费视高清 | 另类二区 | 蜜桃视频在线观看免费视频网站www | 国产又爽又黄的视频 | 久久精品亚洲一区二区三区浴池 | 久久成人精品视频 | 日韩电影免费观看中文字幕 | 亚洲欧美中文日韩在线 | 国产香蕉视频 | 久久精品一区 | 在线观看涩涩视频 | 中文字字幕一区二区三区四区五区 | 免费观看一级特黄欧美大片 | 国产在线观看一区二区三区 | 99精品电影 | 欧美1区 | 黄色欧美视频 | 午夜欧美一区二区三区在线播放 | 夜夜草 | 国产区一区二区三区 | 99视频精品| 国产成年人小视频 | 日本 欧美 国产 | 天堂在线中文 | 一区二区国产在线观看 | 成人免费一区二区三区视频网站 |