回覆列表
  • 1 # 碼農小胖哥

    老碼農來回答這個問題。

    Kafka

    kafka 是linkedin開源的一款開源的分散式mq訊息中介軟體,現在已經捐獻給apache軟體基金會(ASF)。具有吞吐量大,低延時,容錯性高,擴充套件性好的特點。在大型資料處理中常扮演資料管道的角色。也就是資料在中轉,傳輸中起到一個管道的作用,類似於水管但是還可以起到緩衝作用。資料流過大也能有效的對資料進行傳輸。我們專案的日誌管道就是Kafka。

    實時計算

    聊完kafka再聊一下什麼是實時計算。實時計算是基於海量資料,進行秒級響應,實時入庫,實時分析處理資料的一種大資料計算方式。要求時效性高,常用於網站流量分析、股市分析、天氣氣候分析等需要實時處理的業務場景。打個比方,就是有PB級別資料不斷傳遞過來,需要立馬處理入庫分析。與此對應的是離線計算。這些通常是不需要立即處理,我先存起來,慢慢進行分析,或者用到的時候我再分析。說到實時計算,就不能不提流式計算,其實兩者沒有必然關係。實時強調實時性,流式是一種模型,從一個方向流向其他方向,而且某個點的流處理一次就沒了,而且設計是無界的,源源不斷。把資料想象成水管裡的水就會很好理解這個概念,開啟水龍頭源源不斷流出來。從技術選型來說目前 有Storm、 apache spark 和apache flink 。

    storm 是一個專注實時處理的流式資料處理引擎。推特開源。但是因為對資料是行級別處理以及容錯。所以效率不高,適合對實時性要求高,資料集不算太大的情況下使用。spark 是一個高效率、易用性強、通用性強,相容性好的資料處理引擎。 比Hadoop 要快很多,Spark支援Java、Python和Scala的API,還支援超過幾十種高階演算法,使用者可以快速構建不同的應用 。目前業界用的也最多。方案成熟,資料也非常全。基本一線大廠都有spark海量資料處理平臺。但是spark 預設走的是批處理。資料是一批一批處理離線計算的。但是透過 spark stream 流式處理的擴充套件。使得spark也能進行實時的資料計算,但是底層還是批處理,透過固定的offset偏移量進行實時流式批處理。flink 是大資料處理的一顆新星。核心是一個流式的資料流執行引擎,其針對資料流的分散式計算提供了資料分佈、資料通訊以及容錯機制等功能。基於流執行引擎,Flink提供了諸多更高抽象層的API以便使用者編寫分散式任務。實現FaaS(函式即服務)是真正意義上的實時計算引擎。目前也是最先進的。但是才火起來。除了一線大廠,小廠是目前是很難玩轉的。而且目前資料比較少,還可能有一些坑要踩。但是這些遮擋不了flink的光芒。目前社群十分活躍,而且阿里有魔改版本Blink。常遠來看更有前途。

    總結

  • 2 # 加米穀大資料

    Kafka :

    功能完善的分散式流式處理平臺,用於釋出和訂閱、儲存及實時地處理大規模流資料。是由Apache軟體基金會開發的一個開源流處理平臺,由Scala和Java編寫。

    Flink:

    一款分散式的計算引擎,它可以用來做批處理,即處理靜態的資料集、歷史的資料集;也可以用來做流處理,即實時地處理一些實時資料流,實時地產生資料的結果;也可以用來做一些基於事件的應用。

    Spark:

    Spark免費提供Spark Streaming,它使用微批處理進行流式傳輸。Spark流式計算引擎會定時檢查流資料。在連續流處理中,Spark不會啟動定時任務,而是啟動一組長時間執行的任務,這些任務可以連續讀取、處理、寫入資料。Spark Streaming的優勢在於:

    能執行在1000+的結點上,並達到秒級延遲。

    使用基於記憶體的Spark作為執行引擎,具有高效和容錯的特性。

    能整合Spark的批處理和互動查詢。

    為實現複雜的演算法提供和批處理類似的簡單介面。

    相關:Spark Streaming And Kafka:可靠實時計算

    https://www.toutiao.com/i6513864038332498435/

  • 中秋節和大豐收的關聯?
  • 從動力這方面看的話,名爵HS、昂科威、CRV、領克01,到底選擇哪款?