mapstructure的優(yōu)缺點(diǎn)?
1.2.1 優(yōu)點(diǎn)
1)MapReduce易于編程
它簡(jiǎn)單的實(shí)現(xiàn)一些接口,就可以完成一個(gè)分布式程序,這個(gè)分布式程序可以分布到大量廉價(jià)的PC機(jī)器上運(yùn)行。也就是說你寫一個(gè)分布式程序,跟寫一個(gè)簡(jiǎn)單的串行程序是一模一樣的。就是因?yàn)檫@個(gè)特點(diǎn)使得MapReduce編程變得非常流行。
2)良好的擴(kuò)展性
當(dāng)你的計(jì)算資源不能得到滿足的時(shí)候,你可以通過簡(jiǎn)單的增加機(jī)器來擴(kuò)展它的計(jì)算能力。
3)高容錯(cuò)性
MapReduce設(shè)計(jì)的初衷就是使程序能夠部署在廉價(jià)的PC機(jī)器上,這就要求它具有很高的容錯(cuò)性。比如其中一臺(tái)機(jī)器掛了,它可以把上面的計(jì)算任務(wù)轉(zhuǎn)移到另外一個(gè)節(jié)點(diǎn)上運(yùn)行,不至于這個(gè)任務(wù)運(yùn)行失敗,而且這個(gè)過程不需要人工參與,而完全是由Hadoop內(nèi)部完成的。
4)適合PB級(jí)以上海量數(shù)據(jù)的離線處理
可以實(shí)現(xiàn)上千臺(tái)服務(wù)器集群并發(fā)工作,提供數(shù)據(jù)處理能力。
1.2.2 缺點(diǎn)
1)不擅長(zhǎng)實(shí)時(shí)計(jì)算
MapReduce無法像MySQL一樣,在毫秒或者秒級(jí)內(nèi)返回結(jié)果。
2)不擅長(zhǎng)流式計(jì)算
流式計(jì)算的輸入數(shù)據(jù)是動(dòng)態(tài)的,而MapReduce的輸入數(shù)據(jù)集是靜態(tài)的,不能動(dòng)態(tài)變化。這是因?yàn)镸apReduce自身的設(shè)計(jì)特點(diǎn)決定了數(shù)據(jù)源必須是靜態(tài)的。
3)不擅長(zhǎng)DAG(有向無環(huán)圖)計(jì)算
多個(gè)應(yīng)用程序存在依賴關(guān)系,后一個(gè)應(yīng)用程序的輸入為前一個(gè)的輸出。在這種情況下,MapReduce并不是不能做,而是使用后,每個(gè)MapReduce作業(yè)的輸出結(jié)果都會(huì)寫入到磁盤,會(huì)造成大量的磁盤IO,導(dǎo)致性能非常的低下。