Spark Streaming 對比 JStorm

2021-01-15 Spark技術日報
001Spark Streaming vs JStorm


攜程實時平臺在接入Spark Streaming之前,JStorm已穩定運行有一年半,基本能夠滿足大部分的應用場景。接入Spark Streaming主要有以下幾點考慮:首先攜程使用的JStorm版本為2.1.1版本,此版本的JStorm封裝與抽象程度較低,並沒有提供High Level抽象方法以及對窗口、狀態和Sql等方面的功能支持,這大大的提高了用戶使用JStorm實現實時應用的門檻以及開發複雜實時應用場景的難度。在這幾個方面,Spark Streaming表現就相對好的多,不但提供了高度集成的抽象方法(各種算子),並且用戶還可以與Spark SQL相結合直接使用SQL處理數據。


其次,用戶在處理數據的過程中往往需要維護兩套數據處理邏輯,實時計算使用JStorm,離線計算使用Hive或Spark。為了降低開發和維護成本,實現流式與離線計算引擎的統一,Spark為此提供了良好的支撐。


最後,在引入Spark Streaming之前,我們重點分析了Spark與Flink兩套技術的引入成本。Flink當時的版本為1.2版本,Spark的版本為2.0.1。相比較於Spark,Flink在SQL與MLlib上的支持相對弱於Spark,並且公司許多部門都是基於Spark SQL與MLlib開發離線任務與算法模型,使得大大降低了用戶使用Spark的學習成本。


下圖簡單的給出了當前我們使用Spark Streaming與JStorm的對比:



002Spark Streaming設計與封裝


在接入Spark Streaming的初期,首先需要考慮的是如何基於現有的實時平臺無縫的嵌入Spark Streaming。原先的實時平臺已經包含了許多功能:元數據管理、監控與告警等功能,所以第一步我們先針對Spark Streaming進行了封裝並提供了豐富的功能。整套體系總共包含了Muise Spark Core、Muise Portal以及外部系統。


003Muise Spark Core


Muise Spark Core是我們基於Spark Streaming實現的二次封裝,用於支持攜程多種消息隊列,其中Hermes Kafka與源生的Kafka基於Direct Approach的方式消費數據,Hermes Mysql與Qmq基於Receiver的方式消費數據。接下來將要講的諸多特性主要是針對Kafka類型的數據源。

Muise spark core主要包含了以下特性:

Kafka Offset自動管理

支持Exactly Once與At Least Once語義

提供Metric註冊系統,用戶可註冊自定義metric

基於系統與用戶自定義metric進行預警

Long running on Yarn,提供容錯機制


004

Kafka Offset自動管理

封裝muise spark core的第一目標就是簡單易用,讓用戶以最簡單的方式能夠上手使用Spark Streaming。首先我們實現了幫助用戶自動讀取與存儲Kafka Offset的功能,用戶無需關心Offset是如何被處理的。


其次我們也對Kafka Offset的有效性進行了校驗,有的用戶的作業可能在停止了較長時間後重新運行會出現Offset失效的情形,我們也對此作了對應的操作,目前的操作是將失效的Offset設置為當前有效的最老的Offset。下圖展現了用戶基於muise spark core編寫一個Spark streaming作業的簡單示例,用戶只需要短短幾行代碼即可完成代碼的初始化並創建好對應的DStream:


默認情況下,作業每次都是基於上次存儲的Kafka Offset繼續消費,但是用戶也可以自行決定Offset的消費起點。下圖中展示了設置消費起點的三種方式:

Tips:

以後我都固定每天17:40更新文章了(節假日加班時間除外),記得每天來看哈


相關焦點

  • 一文詳解 SparkStreaming 如何整合 Kafka!附代碼可實踐
    =true)可以設置存儲級別(默認StorageLevel.MEMORY_AND_DISK_SER_2)代碼演示import org.apache.spark.streaming.dstream.{DStream, ReceiverInputDStream}import org.apache.spark.streaming.kafka.KafkaUtilsimport org.apache.spark.streaming.
  • 大數據入門:流處理框架Spark Streaming與Storm
    Storm與Spark streaming的應用場景Storm:Storm需要純實時的環境,不能忍受1秒以上的延遲環境,比如銀行類的金融系統。Spark streaming:不要求純實時,不要求強大可靠的事務機制,不要求動態調整並行度,那麼可以考慮使用Spark Streaming。
  • JStorm 2.2.1 發布,分布式計算系統
    Support JStorm on yarnCurrently, jstorm cluster is capable of fast deployments,and fast scale-in/scale-out. It will improve the utility of resource.
  • Jstorm2.1.1集群安裝
    configuration   storm.zookeeper.servers:                  - "192.168.10.38"                - "192.168.10.39"                - "192.168.10.40"     storm.zookeeper.root: "/jstorm
  • spark啟動worker失敗 - CSDN
    -1.4.0-bin-hadoop2.6]# vi /etc/profile [root@cdh1 spark-1.4.0-bin-hadoop2.6]# source /etc/profile[root@cdh1 spark-1.4.0-bin-hadoop2.6]# spark -versionbash: spark: command not found[root@cdh1 spark-1.4.0
  • 數據分析工程師面試集錦5——Spark面試指南
    10、spark有哪些存儲級別?排序:sortByKey、sortBy重分區:repartition、coalesce(增大分區數時)集合或者表操作:intersection、subtract、subtractByKey、join、leftOuterJoin27、Spark streaming
  • JStorm 2.1.1 發布,分布式計算系統
    Dramatic performance boost in metrics, see "Improvements" sectionSupport jdk1.8Add Nimbus hook and topology hookMetrics system:Support disable/enable metrics on the flyAdd jstorm
  • Hello,Funspark!Hello,World——華奧電競品牌全新升級
    以「極致生活」和「電競精神」為基礎,華奧全新的賽事品牌Funspark 誕生了。和過去相比,如今的電競不僅衍生出了許多曾經想像不到的業態,連賽事本身輸出的內容也在變得極為豐富。不管對一個新產業,還是對於一個賽事,豐富都意味著未來可能出現的多種可能性。Funspark也一樣。
  • JStorm:阿里向Apache基金會捐贈基於Java版本的Storm
    Github連結:https://github.com/alibaba/jstorm第九屆中國大數據技術大會將於2015年12月10-12日在北京隆重舉辦。在主會之外,會議還設立了16大分論壇,包含資料庫、深度學習、推薦系統、安全等6大技術論壇,金融、製造業、交通旅遊、網際網路、醫療健康、教育等7大應用論壇和3大熱點議題論壇,票價折扣中預購從速。
  • Opera Streaming in Cina 歌劇在線 中國上線
    Dopo il lancio in Italia lo scorso anno sulla piattaforma Youtube, Opera Streaming ha trasmesso on-line il meglio del cartellone degli enti lirici dell』Emilia Romagna (https://operastreaming.com
  • 大數據入門:Spark RDD、DataFrame、DataSet
    RDD、DataFrame、DataSet三者的共性RDD、DataFrame、Dataset全都是spark平臺下的分布式彈性數據集,為處理超大型數據提供便利。三者都會根據spark的內存情況自動緩存運算,這樣即使數據量很大,也不用擔心會內存溢出。三者都有partition的概念。三者有許多共同的函數,如filter,排序等。
  • 大疆與line合作款spark,七夕還不知道送什麼?
    大疆推出與line合作款sparkQiao那個攝影師,每日原創攝影教程與最新資訊分享,喜歡攝影千萬不要錯過。最近大疆合作不斷,先是被爆出mavic2pro將與哈蘇合作,現又推出了一個布朗熊款spark對於那些不熟悉的人來說,Line Friends是一個韓國聊天app內的俏皮角色們。雖然其他角色也有可能與DJI Spark無人機合作,但唯一確認的是布朗熊。
  • 一次ArrayList的使用不當導致線上jstorm任務啟動失敗的案例
    起因:最近一次的的項目版本迭代中,我們的jstorm項目裡面增加了一些新的功能,開發完畢後,按照正常的上線流程,代碼是需要在開發
  • CSGO新年第一冠 TYLOO 2-0 TIGER奪冠Funspark
    從去年12月14日開打的Funspark Rivals Pre-Season今日進入收官之戰,決賽由TYLOO對決TIGER。TIGER今日狀態並不差,dobu、rate等人在兩圖中都曾打出精彩操作,他們的失敗更多是輸在進攻方上。
  • Spark錦標賽第二賽季超燃啟動 再掀主機遊戲新狂歡
    報名通道及詳細賽事信息請關注:https://site.gcores.com/spark/season2/ 虎牙直播連結:www.huya.com/spark2020 房間號:660161 2019年起,機核與華奧電競攜手舉辦火花錦標賽,在挖掘更多電競項目的同時,力爭為觀眾展現多元化的電競賽事,同時也努力為主機電競探索一條可持續發展的道路
  • 槍煙砲雨--FUNSPARK RIVALS PRE-SEASON賽程賽制公告
    (原標題:槍煙砲雨--FUNSPARK RIVALS PRE-SEASON賽程賽制公告) 由Funspark
  • 用Flink取代JStorm,今日頭條的遷移過程與後續計劃
    當時使用的 Flink 版本是 1.3.2,Flink 官方提供了一個 flink-storm module,用來支持將一個 Storm topology 轉換為 Flink 作業,借鑑 flink-storm 實現了一個 flink-jstorm
  • 搞懂Hadoop、MapReduce、Hive、HBase、YARN及Spark的區別與聯繫
    hbase中的ImportTsv與bulkload對比說明:Hive表必須是帶分隔符的文本格式,而且不能壓縮(比如啟用了mapreduce的output snappy壓縮也不行)。06那什麼是spark呢?Spark 是一個用來實現快速,而通用的集群計算的平臺。