HADOOP與MPP是什么關(guān)系?有什么區(qū)別和聯(lián)系?
適用范圍、應(yīng)用領(lǐng)域分別是什么?
其實(shí)MPP架構(gòu)的關(guān)系型數(shù)據(jù)庫與Hadoop的理論基礎(chǔ)是極其相似的,都是將運(yùn)算分布到節(jié)點(diǎn)中獨(dú)立運(yùn)算后進(jìn)行結(jié)果合并。個(gè)人覺得區(qū)別僅僅在于前者跑的是SQL,后者底層處理則是MapReduce程序。
但是我們會(huì)經(jīng)常聽到對(duì)于MPP而言,雖說是宣稱也可以橫向擴(kuò)展Scale OUT,但是這種擴(kuò)展一般是擴(kuò)到100左右,而Hadoop一般可以擴(kuò)展1000+,這也是經(jīng)常被大家拿來區(qū)分這兩種技術(shù)的一個(gè)說詞。
這是為什么呢?其實(shí)可以從CAP理論上來找到一些理由。因?yàn)镸PP始終還是DB,一定要考慮C(Consistency),其次考慮 A(Availability),最后才在可能的情況下盡量做好P(Partition-tolerance)。而Hadoop就是為了并行處理和存儲(chǔ)設(shè)計(jì)的,所有數(shù)據(jù)都是以文件存儲(chǔ),所以優(yōu)先考慮的是P,然后是A,最后再考慮C。所以后者的可擴(kuò)展性當(dāng)然好于前者。
以下幾個(gè)方面制約了MPP數(shù)據(jù)庫的擴(kuò)展
1、高可用:MPP DB是通過Hash計(jì)算來確定數(shù)據(jù)行所在的物理機(jī)器(而Hadoop無需此操作),對(duì)存儲(chǔ)位置的不透明導(dǎo)致MPP的高可用很難辦。
2、并行任務(wù):數(shù)據(jù)是按照Hash來切分了,但是任務(wù)沒有。每個(gè)任務(wù),無論大小都要到每個(gè)節(jié)點(diǎn)去走一圈。
3、文件系統(tǒng):數(shù)據(jù)切分了,但是文件數(shù)沒有變少,每個(gè)表在每個(gè)節(jié)點(diǎn)上一定有一到多個(gè)文件。同樣節(jié)點(diǎn)數(shù)越多,存儲(chǔ)的表就越多,導(dǎo)致每個(gè)文件系統(tǒng)上有上萬甚至十萬多個(gè)文件。
4、網(wǎng)絡(luò)瓶頸:MPP強(qiáng)調(diào)對(duì)等的網(wǎng)絡(luò),點(diǎn)對(duì)點(diǎn)的連接也消耗了大量的網(wǎng)絡(luò)帶寬,限制了網(wǎng)絡(luò)上的線性擴(kuò)展(想象一臺(tái)機(jī)器可能要給1000臺(tái)機(jī)器發(fā)送信息)。更多的節(jié)點(diǎn)并沒有提供更高的網(wǎng)絡(luò)帶寬,反而導(dǎo)致每個(gè)組節(jié)點(diǎn)間平均帶寬降低。
5、其他關(guān)系數(shù)據(jù)庫的枷鎖:比如鎖、日志、權(quán)限、管理節(jié)點(diǎn)瓶頸等均限制了MPP規(guī)模的擴(kuò)大。
但是MPP數(shù)據(jù)庫有對(duì)SQL的完整兼容和一些事務(wù)處理功能,對(duì)于用戶來說,在實(shí)際的使用場(chǎng)景中,如果數(shù)據(jù)擴(kuò)展需求不是特別大,需要的處理節(jié)點(diǎn)不多,數(shù)據(jù)都是結(jié)構(gòu)化數(shù)據(jù),習(xí)慣使用傳統(tǒng)RDBMS的很多特性的場(chǎng)景,可以考慮MPP如Greenplum/Gbase等。
但是如果有很多非結(jié)構(gòu)化數(shù)據(jù),或者數(shù)據(jù)量巨大,有需要擴(kuò)展到成百上千個(gè)數(shù)據(jù)節(jié)點(diǎn)需求的,這個(gè)時(shí)候Hadoop是更好的選擇。
其實(shí)MPP架構(gòu)的關(guān)系型數(shù)據(jù)庫與Hadoop的理論基礎(chǔ)是極其相似的,都是將運(yùn)算分布到節(jié)點(diǎn)中獨(dú)立運(yùn)算后進(jìn)行結(jié)果合并。個(gè)人覺得區(qū)別僅僅在于前者跑的是SQL,后者底層處理則是MapReduce程序。
但是我們會(huì)經(jīng)常聽到對(duì)于MPP而言,雖說是宣稱也可以橫向擴(kuò)展Scale OUT,但是這種擴(kuò)展一般是擴(kuò)到100左右,而Hadoop一般可以擴(kuò)展1000+,這也是經(jīng)常被大家拿來區(qū)分這兩種技術(shù)的一個(gè)說詞。
這是為什么呢?其實(shí)可以從CAP理論上來找到一些理由。因?yàn)镸PP始終還是DB,一定要考慮C(Consistency),其次考慮 A(Availability),最后才在可能的情況下盡量做好P(Partition-tolerance)。而Hadoop就是為了并行處理和存儲(chǔ)設(shè)計(jì)的,所有數(shù)據(jù)都是以文件存儲(chǔ),所以優(yōu)先考慮的是P,然后是A,最后再考慮C。所以后者的可擴(kuò)展性當(dāng)然好于前者。
以下幾個(gè)方面制約了MPP數(shù)據(jù)庫的擴(kuò)展
1、高可用:MPP DB是通過Hash計(jì)算來確定數(shù)據(jù)行所在的物理機(jī)器(而Hadoop無需此操作),對(duì)存儲(chǔ)位置的不透明導(dǎo)致MPP的高可用很難辦。
2、并行任務(wù):數(shù)據(jù)是按照Hash來切分了,但是任務(wù)沒有。每個(gè)任務(wù),無論大小都要到每個(gè)節(jié)點(diǎn)去走一圈。
3、文件系統(tǒng):數(shù)據(jù)切分了,但是文件數(shù)沒有變少,每個(gè)表在每個(gè)節(jié)點(diǎn)上一定有一到多個(gè)文件。同樣節(jié)點(diǎn)數(shù)越多,存儲(chǔ)的表就越多,導(dǎo)致每個(gè)文件系統(tǒng)上有上萬甚至十萬多個(gè)文件。
4、網(wǎng)絡(luò)瓶頸:MPP強(qiáng)調(diào)對(duì)等的網(wǎng)絡(luò),點(diǎn)對(duì)點(diǎn)的連接也消耗了大量的網(wǎng)絡(luò)帶寬,限制了網(wǎng)絡(luò)上的線性擴(kuò)展(想象一臺(tái)機(jī)器可能要給1000臺(tái)機(jī)器發(fā)送信息)。更多的節(jié)點(diǎn)并沒有提供更高的網(wǎng)絡(luò)帶寬,反而導(dǎo)致每個(gè)組節(jié)點(diǎn)間平均帶寬降低。
5、其他關(guān)系數(shù)據(jù)庫的枷鎖:比如鎖、日志、權(quán)限、管理節(jié)點(diǎn)瓶頸等均限制了MPP規(guī)模的擴(kuò)大。
但是MPP數(shù)據(jù)庫有對(duì)SQL的完整兼容和一些事務(wù)處理功能,對(duì)于用戶來說,在實(shí)際的使用場(chǎng)景中,如果數(shù)據(jù)擴(kuò)展需求不是特別大,需要的處理節(jié)點(diǎn)不多,數(shù)據(jù)都是結(jié)構(gòu)化數(shù)據(jù),習(xí)慣使用傳統(tǒng)RDBMS的很多特性的場(chǎng)景,可以考慮MPP如Greenplum/Gbase等。
但是如果有很多非結(jié)構(gòu)化數(shù)據(jù),或者數(shù)據(jù)量巨大,有需要擴(kuò)展到成百上千個(gè)數(shù)據(jù)節(jié)點(diǎn)需求的,這個(gè)時(shí)候Hadoop是更好的選擇。