91精品久久久久久久久中文字幕|93久久精品日日躁夜夜躁欧美|99re久久这里只有精品6|99久久最新国产

  • <s id="hb53h"><abbr id="hb53h"></abbr></s>
      <s id="hb53h"></s>

        <sup id="hb53h"></sup>

        微信logo
        企業(yè)微信
        電話logo 15372607513
        首頁(yè) > 醫(yī)管交流 > 詳情

        淺談大數(shù)據(jù)框架

        來(lái)自:??OPEN?? | 2022-07-19 22:40:27

        現(xiàn)有的五種大數(shù)據(jù)框架分別是:

        僅批處理框架的:Apache Hadoop

        僅流處理框架的:Apache Storm/Apache Samza

        混合框架:Apache Spark/Apache Flink

        大數(shù)據(jù)框架到底是什么呢?

        處理框架和處理引擎負(fù)責(zé)對(duì)數(shù)據(jù)系統(tǒng)中的數(shù)據(jù)進(jìn)行計(jì)算。雖然“引擎”和“框架”之間的區(qū)別沒(méi)有什么權(quán)威的定義,但大部分時(shí)候可以將前者定義為實(shí)際負(fù)責(zé)處理數(shù)據(jù)操作的組件,后者則可定義為承擔(dān)類似作用的一系列組件。

        例如Apache Hadoop可以看作一種以MapReduce作為默認(rèn)處理引擎的處理框架。引擎和框架通??梢韵嗷ヌ鎿Q或同時(shí)使用。例如另一個(gè)框架Apache Spark可以納入Hadoop并取代MapReduce。組件之間的這種互操作性是大數(shù)據(jù)系統(tǒng)靈活性如此之高的原因之一。

        雖然負(fù)責(zé)處理生命周期內(nèi)這一階段數(shù)據(jù)的系統(tǒng)通常都很復(fù)雜,但從廣義層面來(lái)看它們的目標(biāo)是非常一致的:通過(guò)對(duì)數(shù)據(jù)執(zhí)行操作提高理解能力,揭示出數(shù)據(jù)蘊(yùn)含的模式,并針對(duì)復(fù)雜互動(dòng)獲得見(jiàn)解。

        為了簡(jiǎn)化這些組件的討論,我們會(huì)通過(guò)不同處理框架的設(shè)計(jì)意圖,按照所處理的數(shù)據(jù)狀態(tài)對(duì)其進(jìn)行分類。一些系統(tǒng)可以用批處理方式處理數(shù)據(jù),一些系統(tǒng)可以用流方式處理連續(xù)不斷流入系統(tǒng)的數(shù)據(jù)。此外還有一些系統(tǒng)可以同時(shí)處理這兩類數(shù)據(jù)。

        批處理系統(tǒng)

        流處理系統(tǒng)會(huì)對(duì)隨時(shí)進(jìn)入系統(tǒng)的數(shù)據(jù)進(jìn)行計(jì)算。相比批處理模式,這是一種截然不同的處理方式。流處理方式無(wú)需針對(duì)整個(gè)數(shù)據(jù)集執(zhí)行操作,而是對(duì)通過(guò)系統(tǒng)傳輸?shù)拿總€(gè)數(shù)據(jù)項(xiàng)執(zhí)行操作。

        · 流處理中的數(shù)據(jù)集是“無(wú)邊界”的,這就產(chǎn)生了幾個(gè)重要的影響:

        · 完整數(shù)據(jù)集只能代表截至目前已經(jīng)進(jìn)入到系統(tǒng)中的數(shù)據(jù)總量。

        · 工作數(shù)據(jù)集也許更相關(guān),在特定時(shí)間只能代表某個(gè)單一數(shù)據(jù)項(xiàng)。

        處理工作是基于事件的,除非明確停止否則沒(méi)有“盡頭”。處理結(jié)果立刻可用,并會(huì)隨著新數(shù)據(jù)的抵達(dá)繼續(xù)更新。

        流處理系統(tǒng)可以處理幾乎無(wú)限量的數(shù)據(jù),但同一時(shí)間只能處理一條(真正的流處理)或很少量(微批處理,Micro-batch Processing)數(shù)據(jù),不同記錄間只維持最少量的狀態(tài)。雖然大部分系統(tǒng)提供了用于維持某些狀態(tài)的方法,但流處理主要針對(duì)副作用更少,更加功能性的處理(Functional processing)進(jìn)行優(yōu)化。

        此類處理非常適合某些類型的工作負(fù)載。有近實(shí)時(shí)處理需求的任務(wù)很適合使用流處理模式。分析、服務(wù)器或應(yīng)用程序錯(cuò)誤日志,以及其他基于時(shí)間的衡量指標(biāo)是最適合的類型,因?yàn)閷?duì)這些領(lǐng)域的數(shù)據(jù)變化做出響應(yīng)對(duì)于業(yè)務(wù)職能來(lái)說(shuō)是極為關(guān)鍵的。流處理很適合用來(lái)處理必須對(duì)變動(dòng)或峰值做出響應(yīng),并且關(guān)注一段時(shí)間內(nèi)變化趨勢(shì)的數(shù)據(jù)。

        Apache Storm

        Apache Storm是一種側(cè)重于極低延遲的流處理框架,也許是要求近實(shí)時(shí)處理的工作負(fù)載的最佳選擇。該技術(shù)可處理非常大量的數(shù)據(jù),通過(guò)比其他解決方案更低的延遲提供結(jié)果。

        流處理模式

        Storm的流處理可對(duì)框架中名為Topology(拓?fù)洌┑腄AG(Directed Acyclic Graph,有向無(wú)環(huán)圖)進(jìn)行編排。這些拓?fù)涿枋隽水?dāng)數(shù)據(jù)片段進(jìn)入系統(tǒng)后,需要對(duì)每個(gè)傳入的片段執(zhí)行的不同轉(zhuǎn)換或步驟。

        拓?fù)浒?/p>

        · Stream:普通的數(shù)據(jù)流,這是一種會(huì)持續(xù)抵達(dá)系統(tǒng)的無(wú)邊界數(shù)據(jù)。

        · Spout:位于拓?fù)溥吘壍臄?shù)據(jù)流來(lái)源,例如可以是API或查詢等,從這里可以產(chǎn)生待處理的數(shù)據(jù)。

        · Bolt:Bolt代表需要消耗流數(shù)據(jù),對(duì)其應(yīng)用操作,并將結(jié)果以流的形式進(jìn)行輸出的處理步驟。Bolt需要與每個(gè)Spout建立連接,隨后相互連接以組成所有必要的處理。在拓?fù)涞奈膊?,可以使用最終的Bolt輸出作為相互連接的其他系統(tǒng)的輸入。

        Storm背后的想法是使用上述組件定義大量小型的離散操作,隨后將多個(gè)組件組成所需拓?fù)洹DJ(rèn)情況下Storm提供了“至少一次”的處理保證,這意味著可以確保每條消息至少可以被處理一次,但某些情況下如果遇到失敗可能會(huì)處理多次。Storm無(wú)法確??梢园凑仗囟樞蛱幚硐ⅰ?/p>

        Trident拓?fù)浒?/p>

        · 流批(Stream batch):這是指流數(shù)據(jù)的微批,可通過(guò)分塊提供批處理語(yǔ)義。

        · 操作(Operation):是指可以對(duì)數(shù)據(jù)執(zhí)行的批處理過(guò)程。

        總結(jié)

        對(duì)于延遲需求很高的純粹的流處理工作負(fù)載,Storm可能是最適合的技術(shù)。該技術(shù)可以保證每條消息都被處理,可配合多種編程語(yǔ)言使用。由于Storm無(wú)法進(jìn)行批處理,如果需要這些能力可能還需要使用其他軟件。如果對(duì)嚴(yán)格的一次處理保證有比較高的要求,此時(shí)可考慮使用Trident。不過(guò)這種情況下其他流處理框架也許更適合。

        Apache Samza

        Apache Samza是一種與Apache Kafka消息系統(tǒng)緊密綁定的流處理框架。雖然Kafka可用于很多流處理系統(tǒng),但按照設(shè)計(jì),Samza可以更好地發(fā)揮Kafka獨(dú)特的架構(gòu)優(yōu)勢(shì)和保障。該技術(shù)可通過(guò)Kafka提供容錯(cuò)、緩沖,以及狀態(tài)存儲(chǔ)。

        Samza可使用YARN作為資源管理器。這意味著默認(rèn)情況下需要具備Hadoop集群(至少具備HDFS和YARN),但同時(shí)也意味著Samza可以直接使用YARN豐富的內(nèi)建功能。

        流處理模式

        Samza依賴Kafka的語(yǔ)義定義流的處理方式。Kafka在處理數(shù)據(jù)時(shí)涉及下列概念:

        · Topic(話題):進(jìn)入Kafka系統(tǒng)的每個(gè)數(shù)據(jù)流可稱之為一個(gè)話題。話題基本上是一種可供消耗方訂閱的,由相關(guān)信息組成的數(shù)據(jù)流。

        · Partition(分區(qū)):為了將一個(gè)話題分散至多個(gè)節(jié)點(diǎn),Kafka會(huì)將傳入的消息劃分為多個(gè)分區(qū)。分區(qū)的劃分將基于鍵(Key)進(jìn)行,這樣可以保證包含同一個(gè)鍵的每條消息可以劃分至同一個(gè)分區(qū)。分區(qū)的順序可獲得保證。

        · Broker(代理):組成Kafka集群的每個(gè)節(jié)點(diǎn)也叫做代理。

        · Producer(生成方):任何向Kafka話題寫入數(shù)據(jù)的組件可以叫做生成方。生成方可提供將話題劃分為分區(qū)所需的鍵。

        · Consumer(消耗方):任何從Kafka讀取話題的組件可叫做消耗方。消耗方需要負(fù)責(zé)維持有關(guān)自己分支的信息,這樣即可在失敗后知道哪些記錄已經(jīng)被處理過(guò)了。

        由于Kafka相當(dāng)于永恒不變的日志,Samza也需要處理永恒不變的數(shù)據(jù)流。這意味著任何轉(zhuǎn)換創(chuàng)建的新數(shù)據(jù)流都可被其他組件所使用,而不會(huì)對(duì)最初的數(shù)據(jù)流產(chǎn)生影響。

        優(yōu)勢(shì)和局限

        乍看之下,Samza對(duì)Kafka類查詢系統(tǒng)的依賴似乎是一種限制,然而這也可以為系統(tǒng)提供一些獨(dú)特的保證和功能,這些內(nèi)容也是其他流處理系統(tǒng)不具備的。

        例如Kafka已經(jīng)提供了可以通過(guò)低延遲方式訪問(wèn)的數(shù)據(jù)存儲(chǔ)副本,此外還可以為每個(gè)數(shù)據(jù)分區(qū)提供非常易用且低成本的多訂閱者模型。所有輸出內(nèi)容,包括中間態(tài)的結(jié)果都可寫入到Kafka,并可被下游步驟獨(dú)立使用。

        這種對(duì)Kafka的緊密依賴在很多方面類似于MapReduce引擎對(duì)HDFS的依賴。雖然在批處理的每個(gè)計(jì)算之間對(duì)HDFS的依賴導(dǎo)致了一些嚴(yán)重的性能問(wèn)題,但也避免了流處理遇到的很多其他問(wèn)題。

        Samza與Kafka之間緊密的關(guān)系使得處理步驟本身可以非常松散地耦合在一起。無(wú)需事先協(xié)調(diào),即可在輸出的任何步驟中增加任意數(shù)量的訂閱者,對(duì)于有多個(gè)團(tuán)隊(duì)需要訪問(wèn)類似數(shù)據(jù)的組織,這一特性非常有用。多個(gè)團(tuán)隊(duì)可以全部訂閱進(jìn)入系統(tǒng)的數(shù)據(jù)話題,或任意訂閱其他團(tuán)隊(duì)對(duì)數(shù)據(jù)進(jìn)行過(guò)某些處理后創(chuàng)建的話題。這一切并不會(huì)對(duì)數(shù)據(jù)庫(kù)等負(fù)載密集型基礎(chǔ)架構(gòu)造成額外的壓力。

        直接寫入Kafka還可避免回壓(Backpressure)問(wèn)題?;貕菏侵府?dāng)負(fù)載峰值導(dǎo)致數(shù)據(jù)流入速度超過(guò)組件實(shí)時(shí)處理能力的情況,這種情況可能導(dǎo)致處理工作停頓并可能丟失數(shù)據(jù)。按照設(shè)計(jì),Kafka可以將數(shù)據(jù)保存很長(zhǎng)時(shí)間,這意味著組件可以在方便的時(shí)候繼續(xù)進(jìn)行處理,并可直接重啟動(dòng)而無(wú)需擔(dān)心造成任何后果。

        Samza可以使用以本地鍵值存儲(chǔ)方式實(shí)現(xiàn)的容錯(cuò)檢查點(diǎn)系統(tǒng)存儲(chǔ)數(shù)據(jù)。這樣Samza即可獲得“至少一次”的交付保障,但面對(duì)由于數(shù)據(jù)可能多次交付造成的失敗,該技術(shù)無(wú)法對(duì)匯總后狀態(tài)(例如計(jì)數(shù))提供精確恢復(fù)。

        Samza提供的高級(jí)抽象使其在很多方面比Storm等系統(tǒng)提供的基元(Primitive)更易于配合使用。目前Samza只支持JVM語(yǔ)言,這意味著它在語(yǔ)言支持方面不如Storm靈活。

        總結(jié)

        對(duì)于已經(jīng)具備或易于實(shí)現(xiàn)Hadoop和Kafka的環(huán)境,Apache Samza是流處理工作負(fù)載一個(gè)很好的選擇。Samza本身很適合有多個(gè)團(tuán)隊(duì)需要使用(但相互之間并不一定緊密協(xié)調(diào))不同處理階段的多個(gè)數(shù)據(jù)流的組織。Samza可大幅簡(jiǎn)化很多流處理工作,可實(shí)現(xiàn)低延遲的性能。如果部署需求與當(dāng)前系統(tǒng)不兼容,也許并不適合使用,但如果需要極低延遲的處理,或?qū)?yán)格的一次處理語(yǔ)義有較高需求,此時(shí)依然適合考慮。

        混合處理系統(tǒng):批處理和流處理

        一些處理框架可同時(shí)處理批處理和流處理工作負(fù)載。這些框架可以用相同或相關(guān)的組件和API處理兩種類型的數(shù)據(jù),借此讓不同的處理需求得以簡(jiǎn)化。

        如你所見(jiàn),這一特性主要是由Spark和Flink實(shí)現(xiàn)的,下文將介紹這兩種框架。實(shí)現(xiàn)這樣的功能重點(diǎn)在于兩種不同處理模式如何進(jìn)行統(tǒng)一,以及要對(duì)固定和不固定數(shù)據(jù)集之間的關(guān)系進(jìn)行何種假設(shè)。

        雖然側(cè)重于某一種處理類型的項(xiàng)目會(huì)更好地滿足具體用例的要求,但混合框架意在提供一種數(shù)據(jù)處理的通用解決方案。這種框架不僅可以提供處理數(shù)據(jù)所需的方法,而且提供了自己的集成項(xiàng)、庫(kù)、工具,可勝任圖形分析、機(jī)器學(xué)習(xí)、交互式查詢等多種任務(wù)。

        Apache Spark

        Apache Spark是一種包含流處理能力的下一代批處理框架。與Hadoop的MapReduce引擎基于各種相同原則開(kāi)發(fā)而來(lái)的Spark主要側(cè)重于通過(guò)完善的內(nèi)存計(jì)算和處理優(yōu)化機(jī)制加快批處理工作負(fù)載的運(yùn)行速度。

        Spark可作為獨(dú)立集群部署(需要相應(yīng)存儲(chǔ)層的配合),或可與Hadoop集成并取代MapReduce引擎。

        批處理模式

        與MapReduce不同,Spark的數(shù)據(jù)處理工作全部在內(nèi)存中進(jìn)行,只在一開(kāi)始將數(shù)據(jù)讀入內(nèi)存,以及將最終結(jié)果持久存儲(chǔ)時(shí)需要與存儲(chǔ)層交互。所有中間態(tài)的處理結(jié)果均存儲(chǔ)在內(nèi)存中。

        雖然內(nèi)存中處理方式可大幅改善性能,Spark在處理與磁盤有關(guān)的任務(wù)時(shí)速度也有很大提升,因?yàn)橥ㄟ^(guò)提前對(duì)整個(gè)任務(wù)集進(jìn)行分析可以實(shí)現(xiàn)更完善的整體式優(yōu)化。為此Spark可創(chuàng)建代表所需執(zhí)行的全部操作,需要操作的數(shù)據(jù),以及操作和數(shù)據(jù)之間關(guān)系的Directed Acyclic Graph(有向無(wú)環(huán)圖),即DAG,借此處理器可以對(duì)任務(wù)進(jìn)行更智能的協(xié)調(diào)。

        為了實(shí)現(xiàn)內(nèi)存中批計(jì)算,Spark會(huì)使用一種名為Resilient Distributed Dataset(彈性分布式數(shù)據(jù)集),即RDD的模型來(lái)處理數(shù)據(jù)。這是一種代表數(shù)據(jù)集,只位于內(nèi)存中,永恒不變的結(jié)構(gòu)。針對(duì)RDD執(zhí)行的操作可生成新的RDD。每個(gè)RDD可通過(guò)世系(Lineage)回溯至父級(jí)RDD,并最終回溯至磁盤上的數(shù)據(jù)。Spark可通過(guò)RDD在無(wú)需將每個(gè)操作的結(jié)果寫回磁盤的前提下實(shí)現(xiàn)容錯(cuò)。

        流處理模式

        流處理能力是由Spark Streaming實(shí)現(xiàn)的。Spark本身在設(shè)計(jì)上主要面向批處理工作負(fù)載,為了彌補(bǔ)引擎設(shè)計(jì)和流處理工作負(fù)載特征方面的差異,Spark實(shí)現(xiàn)了一種叫做微批(Micro-batch)*的概念。在具體策略方面該技術(shù)可以將數(shù)據(jù)流視作一系列非常小的“批”,借此即可通過(guò)批處理引擎的原生語(yǔ)義進(jìn)行處理。

        Spark Streaming會(huì)以亞秒級(jí)增量對(duì)流進(jìn)行緩沖,隨后這些緩沖會(huì)作為小規(guī)模的固定數(shù)據(jù)集進(jìn)行批處理。這種方式的實(shí)際效果非常好,但相比真正的流處理框架在性能方面依然存在不足。

        優(yōu)勢(shì)和局限

        使用Spark而非Hadoop MapReduce的主要原因是速度。在內(nèi)存計(jì)算策略和先進(jìn)的DAG調(diào)度等機(jī)制的幫助下,Spark可以用更快速度處理相同的數(shù)據(jù)集。

        Spark的另一個(gè)重要優(yōu)勢(shì)在于多樣性。該產(chǎn)品可作為獨(dú)立集群部署,或與現(xiàn)有Hadoop集群集成。該產(chǎn)品可運(yùn)行批處理和流處理,運(yùn)行一個(gè)集群即可處理不同類型的任務(wù)。

        除了引擎自身的能力外,圍繞Spark還建立了包含各種庫(kù)的生態(tài)系統(tǒng),可為機(jī)器學(xué)習(xí)、交互式查詢等任務(wù)提供更好的支持。相比MapReduce,Spark任務(wù)更是“眾所周知”地易于編寫,因此可大幅提高生產(chǎn)力。

        為流處理系統(tǒng)采用批處理的方法,需要對(duì)進(jìn)入系統(tǒng)的數(shù)據(jù)進(jìn)行緩沖。緩沖機(jī)制使得該技術(shù)可以處理非常大量的傳入數(shù)據(jù),提高整體吞吐率,但等待緩沖區(qū)清空也會(huì)導(dǎo)致延遲增高。這意味著Spark Streaming可能不適合處理對(duì)延遲有較高要求的工作負(fù)載。

        由于內(nèi)存通常比磁盤空間更貴,因此相比基于磁盤的系統(tǒng),Spark成本更高。然而處理速度的提升意味著可以更快速完成任務(wù),在需要按照小時(shí)數(shù)為資源付費(fèi)的環(huán)境中,這一特性通常可以抵消增加的成本。

        Spark內(nèi)存計(jì)算這一設(shè)計(jì)的另一個(gè)后果是,如果部署在共享的集群中可能會(huì)遇到資源不足的問(wèn)題。相比Hadoop MapReduce,Spark的資源消耗更大,可能會(huì)對(duì)需要在同一時(shí)間使用集群的其他任務(wù)產(chǎn)生影響。從本質(zhì)來(lái)看,Spark更不適合與Hadoop堆棧的其他組件共存一處。

        總結(jié)

        Spark是多樣化工作負(fù)載處理任務(wù)的最佳選擇。Spark批處理能力以更高內(nèi)存占用為代價(jià)提供了無(wú)與倫比的速度優(yōu)勢(shì)。對(duì)于重視吞吐率而非延遲的工作負(fù)載,則比較適合使用Spark Streaming作為流處理解決方案。

        Apache Flink

        Apache Flink是一種可以處理批處理任務(wù)的流處理框架。該技術(shù)可將批處理數(shù)據(jù)視作具備有限邊界的數(shù)據(jù)流,借此將批處理任務(wù)作為流處理的子集加以處理。為所有處理任務(wù)采取流處理為先的方法會(huì)產(chǎn)生一系列有趣的副作用。

        這種流處理為先的方法也叫做Kappa架構(gòu),與之相對(duì)的是更加被廣為人知的Lambda架構(gòu)(該架構(gòu)中使用批處理作為主要處理方法,使用流作為補(bǔ)充并提供早期未經(jīng)提煉的結(jié)果)。Kappa架構(gòu)中會(huì)對(duì)一切進(jìn)行流處理,借此對(duì)模型進(jìn)行簡(jiǎn)化,而這一切是在最近流處理引擎逐漸成熟后才可行的。

        流處理模型

        Flink的流處理模型在處理傳入數(shù)據(jù)時(shí)會(huì)將每一項(xiàng)視作真正的數(shù)據(jù)流。Flink提供的DataStream API可用于處理無(wú)盡的數(shù)據(jù)流。Flink可配合使用的基本組件包括:

        · Stream(流)是指在系統(tǒng)中流轉(zhuǎn)的,永恒不變的無(wú)邊界數(shù)據(jù)集

        · Operator(操作方)是指針對(duì)數(shù)據(jù)流執(zhí)行操作以產(chǎn)生其他數(shù)據(jù)流的功能

        · Source(源)是指數(shù)據(jù)流進(jìn)入系統(tǒng)的入口點(diǎn)

        · Sink(槽)是指數(shù)據(jù)流離開(kāi)Flink系統(tǒng)后進(jìn)入到的位置,槽可以是數(shù)據(jù)庫(kù)或到其他系統(tǒng)的連接器

        為了在計(jì)算過(guò)程中遇到問(wèn)題后能夠恢復(fù),流處理任務(wù)會(huì)在預(yù)定時(shí)間點(diǎn)創(chuàng)建快照。為了實(shí)現(xiàn)狀態(tài)存儲(chǔ),F(xiàn)link可配合多種狀態(tài)后端系統(tǒng)使用,具體取決于所需實(shí)現(xiàn)的復(fù)雜度和持久性級(jí)別。

        此外Flink的流處理能力還可以理解“事件時(shí)間”這一概念,這是指事件實(shí)際發(fā)生的時(shí)間,此外該功能還可以處理會(huì)話。這意味著可以通過(guò)某種有趣的方式確保執(zhí)行順序和分組。

        批處理模型

        Flink的批處理模型在很大程度上僅僅是對(duì)流處理模型的擴(kuò)展。此時(shí)模型不再?gòu)某掷m(xù)流中讀取數(shù)據(jù),而是從持久存儲(chǔ)中以流的形式讀取有邊界的數(shù)據(jù)集。Flink會(huì)對(duì)這些處理模型使用完全相同的運(yùn)行時(shí)。

        Flink可以對(duì)批處理工作負(fù)載實(shí)現(xiàn)一定的優(yōu)化。例如由于批處理操作可通過(guò)持久存儲(chǔ)加以支持,F(xiàn)link可以不對(duì)批處理工作負(fù)載創(chuàng)建快照。數(shù)據(jù)依然可以恢復(fù),但常規(guī)處理操作可以執(zhí)行得更快。

        另一個(gè)優(yōu)化是對(duì)批處理任務(wù)進(jìn)行分解,這樣即可在需要的時(shí)候調(diào)用不同階段和組件。借此Flink可以與集群的其他用戶更好地共存。對(duì)任務(wù)提前進(jìn)行分析使得Flink可以查看需要執(zhí)行的所有操作、數(shù)據(jù)集的大小,以及下游需要執(zhí)行的操作步驟,借此實(shí)現(xiàn)進(jìn)一步的優(yōu)化。

        優(yōu)勢(shì)和局限

        Flink目前是處理框架領(lǐng)域一個(gè)獨(dú)特的技術(shù)。雖然Spark也可以執(zhí)行批處理和流處理,但Spark的流處理采取的微批架構(gòu)使其無(wú)法適用于很多用例。Flink流處理為先的方法可提供低延遲,高吞吐率,近乎逐項(xiàng)處理的能力。

        Flink的很多組件是自行管理的。雖然這種做法較為罕見(jiàn),但出于性能方面的原因,該技術(shù)可自行管理內(nèi)存,無(wú)需依賴原生的Java垃圾回收機(jī)制。與Spark不同,待處理數(shù)據(jù)的特征發(fā)生變化后Flink無(wú)需手工優(yōu)化和調(diào)整,并且該技術(shù)也可以自行處理數(shù)據(jù)分區(qū)和自動(dòng)緩存等操作。

        Flink會(huì)通過(guò)多種方式對(duì)工作進(jìn)行分許進(jìn)而優(yōu)化任務(wù)。這種分析在部分程度上類似于SQL查詢規(guī)劃器對(duì)關(guān)系型數(shù)據(jù)庫(kù)所做的優(yōu)化,可針對(duì)特定任務(wù)確定最高效的實(shí)現(xiàn)方法。該技術(shù)還支持多階段并行執(zhí)行,同時(shí)可將受阻任務(wù)的數(shù)據(jù)集合在一起。對(duì)于迭代式任務(wù),出于性能方面的考慮,F(xiàn)link會(huì)嘗試在存儲(chǔ)數(shù)據(jù)的節(jié)點(diǎn)上執(zhí)行相應(yīng)的計(jì)算任務(wù)。此外還可進(jìn)行“增量迭代”,或僅對(duì)數(shù)據(jù)中有改動(dòng)的部分進(jìn)行迭代。

        在用戶工具方面,F(xiàn)link提供了基于Web的調(diào)度視圖,借此可輕松管理任務(wù)并查看系統(tǒng)狀態(tài)。用戶也可以查看已提交任務(wù)的優(yōu)化方案,借此了解任務(wù)最終是如何在集群中實(shí)現(xiàn)的。對(duì)于分析類任務(wù),F(xiàn)link提供了類似SQL的查詢,圖形化處理,以及機(jī)器學(xué)習(xí)庫(kù),此外還支持內(nèi)存計(jì)算。

        Flink能很好地與其他組件配合使用。如果配合Hadoop 堆棧使用,該技術(shù)可以很好地融入整個(gè)環(huán)境,在任何時(shí)候都只占用必要的資源。該技術(shù)可輕松地與YARN、HDFS和Kafka 集成。在兼容包的幫助下,F(xiàn)link還可以運(yùn)行為其他處理框架,例如Hadoop和Storm編寫的任務(wù)。

        目前Flink最大的局限之一在于這依然是一個(gè)非常“年幼”的項(xiàng)目?,F(xiàn)實(shí)環(huán)境中該項(xiàng)目的大規(guī)模部署尚不如其他處理框架那么常見(jiàn),對(duì)于Flink在縮放能力方面的局限目前也沒(méi)有較為深入的研究。隨著快速開(kāi)發(fā)周期的推進(jìn)和兼容包等功能的完善,當(dāng)越來(lái)越多的組織開(kāi)始嘗試時(shí),可能會(huì)出現(xiàn)越來(lái)越多的Flink部署。

        總結(jié)

        Flink提供了低延遲流處理,同時(shí)可支持傳統(tǒng)的批處理任務(wù)。Flink也許最適合有極高流處理需求,并有少量批處理任務(wù)的組織。該技術(shù)可兼容原生Storm和Hadoop程序,可在YARN管理的集群上運(yùn)行,因此可以很方便地進(jìn)行評(píng)估??焖龠M(jìn)展的開(kāi)發(fā)工作使其值得被大家關(guān)注。

        結(jié)論

        大數(shù)據(jù)系統(tǒng)可使用多種處理技術(shù)。

        對(duì)于僅需要批處理的工作負(fù)載,如果對(duì)時(shí)間不敏感,比其他解決方案實(shí)現(xiàn)成本更低的Hadoop將會(huì)是一個(gè)好選擇。

        對(duì)于僅需要流處理的工作負(fù)載,Storm可支持更廣泛的語(yǔ)言并實(shí)現(xiàn)極低延遲的處理,但默認(rèn)配置可能產(chǎn)生重復(fù)結(jié)果并且無(wú)法保證順序。Samza與YARN和Kafka緊密集成可提供更大靈活性,更易用的多團(tuán)隊(duì)使用,以及更簡(jiǎn)單的復(fù)制和狀態(tài)管理。

        對(duì)于混合型工作負(fù)載,Spark可提供高速批處理和微批處理模式的流處理。該技術(shù)的支持更完善,具備各種集成庫(kù)和工具,可實(shí)現(xiàn)靈活的集成。Flink提供了真正的流處理并具備批處理能力,通過(guò)深度優(yōu)化可運(yùn)行針對(duì)其他平臺(tái)編寫的任務(wù),提供低延遲的處理,但實(shí)際應(yīng)用方面還為時(shí)過(guò)早。

        最適合的解決方案主要取決于待處理數(shù)據(jù)的狀態(tài),對(duì)處理所需時(shí)間的需求,以及希望得到的結(jié)果。具體是使用全功能解決方案或主要側(cè)重于某種項(xiàng)目的解決方案,這個(gè)問(wèn)題需要慎重權(quán)衡。隨著逐漸成熟并被廣泛接受,在評(píng)估任何新出現(xiàn)的創(chuàng)新型解決方案時(shí)都需要考慮類似的問(wèn)題。

        本文版權(quán)歸作者所有!如有侵權(quán),請(qǐng)聯(lián)系管理員刪除。文章僅代表作者觀點(diǎn),不代表行迪醫(yī)管立場(chǎng)。

        icon_message

        網(wǎng)友評(píng)論

        未登錄

        嘗試看看下列相關(guān)的交流摘要推薦

        組件 框架 數(shù)據(jù) 處理 大數(shù)據(jù) 醫(yī)院排名 等級(jí)評(píng)審 評(píng)審 名院名科 國(guó)家衛(wèi)健委 信息化 運(yùn)營(yíng)管理委員會(huì) 手術(shù) 邵逸夫醫(yī)院 數(shù)字化 李娜 蘭溪市人民醫(yī)院醫(yī)共體 上海軍醫(yī)大學(xué)院長(zhǎng) 浙江省醫(yī)院 危急
        提交成功!
        提醒!
        提交成功!