大數據入門:流處理框架Spark Streaming與Storm

2020-12-23 成都加米谷大數據

眾所周知,大數據計算的第一代框架Hadoop,是致力於解決離線計算的問題而產生的,在離線批處理上性能優異,但是在實時流處理上,一直被詬病。Hadoop之後,Spark和Storm在流處理上成為對手。今天的大數據入門分享,我們就主要來講講,流處理框架Spark Streaming與Storm。

Apache Spark流處理Spark框架的出現,是在Hadoop MapReduce基礎上繼承研發而來,本質上來說,還是採用的批處理的思想,但是對於數據計算的中間流程做了優化,由此提升了數據處理效率,得到了比原生的MapReduce更優的計算性能。

Spark Streaming是核心Spark API的一個擴展,其流處理思想,是在處理前按時間間隔預先將其切分為一段一段的批處理作業。Spark針對持續性數據流的抽象稱為DStream(DiscretizedStream),一個DStream是一個微批處理(micro-batching)的RDD(彈性分布式數據集);而RDD則是一種分布式數據集,能夠以兩種方式並行運作,分別是任意函數和滑動窗口數據的轉換。雖然目前Spark Streaming已經停止更新,Spark的重點也放到了Structured Streaming,但由於Spark版本過低或者其他技術選型問題,可能還是會選擇Spark Streaming。Spark Streaming在企業級平臺當中的應用,還是不少。Apache Storm流處理Storm作為分布式實時大數據處理系統,可以是首次實現了真正意義上的流處理。Storm具有高可靠、高容錯、高擴展的特點,有很高的數據吞吐能力,Storm本身是無狀態的,通過ZooKeeper管理分布式集群環境和集群狀態。

Storm側重於低延遲的流處理,以近實時方式處理源源不斷的流數據。Storm的基本思想是使用spout拉取stream(數據),並使用bolt進行處理和輸出,Storm數據處理延時可以達到亞秒級。在Storm中,先要設計一個用於實時計算的圖狀結構,我們稱之為拓撲(topology)。這個拓撲將會被提交給集群,由集群中的主控節點(master node)分發代碼,將任務分配給工作節點(worker node)執行。一個拓撲中包括spout和bolt兩種角色,其中spout發送消息,負責將數據流以tuple元組的形式發送出去;而bolt則負責轉換這些數據流,在bolt中可以完成計算、過濾等操作,bolt自身也可以隨機將數據發送給其他bolt。由spout發射出的tuple是不可變數組,對應著固定的鍵值對。Storm與Spark streaming的應用場景Storm:Storm需要純實時的環境,不能忍受1秒以上的延遲環境,比如銀行類的金融系統。如果在實時計算中要保證事務性的話,同樣還是銀行,數據要非常精準,需要最大限度利用集群資源,也可以考慮Storm。Spark streaming:不要求純實時,不要求強大可靠的事務機制,不要求動態調整並行度,那麼可以考慮使用Spark Streaming。考慮使用Spark Streaming最主要的一個因素,應該要針對整個項目進行宏觀的考慮,如果一個項目除了實時計算之外,還包括了其他業務功能.就要考慮使用Sparkstreaming。關於大數據流處理框架Spark Streaming與Storm,以上就為大家做了簡單的介紹了。在流處理領域,目前來說,Storm的市場份額不大,主流更多集中在Spark和Flink上,但是相應的了解還是有必要的。

相關焦點

  • 給 spark 開發者介紹下Flink :Flink vs Spark
    Flink的時候, 就在想我們究竟是否真的需要它,大數據世界中有數不清的框架, 但是我們缺少一個可以一統江湖的生態, spark 現在就充當這樣一個角色, 那麼為什麼我們還需要另外一個類似的東西。什麼是 flinkflink 作為數據處理引擎的新生代, 旨在統一數據處理技術棧, 是不是聽起來像spark, 不錯, flink 就是那麼像 spark, 兩者都是想成為一個統一批處理、實時流處理、交互式查詢,圖處理、機器學習等領域的神器, flink的設計哲學和 spark 是一樣一樣的, 但是實現細節上卻有不同。
  • 圖解SparkStreaming與Kafka的整合,細節滿滿
    前言老劉是一名即將找工作的研二學生,寫博客一方面是複習總結大數據開發的知識點,一方面是希望幫助更多自學的小夥伴。由於老劉是自學大數據開發,肯定會存在一些不足,還希望大家能夠批評指正,讓我們一起進步!今天講述的是SparkStreaming與Kafka的整合,這篇文章非常適合剛入門的小夥伴,也歡迎大家前來發表意見,老劉這次會用圖片的形式講述別人技術博客沒有的一些細節,這些細節對剛入門的小夥伴是非常有用的!!!正文為什麼會有SparkStreaming與Kafka的整合?
  • 大數據掃盲——什麼是Streaming(Storm)
    Streaming是一個分布式、實時計算框架。如果你已經看過之前的文章可能會問,怎麼又是計算框架?之前已經介紹過了MapReduce(高吞吐量離線運算)、Spark(速度更快,支持實時運算)、Hive(支持SQL)。那又有什麼場景能用到Streaming呢?答案就是:實時運算場景。那Spark呢?Spark不是也可以實時運算嗎?
  • 大數據入門:Scala大數據黃金語言
    在大數據的學習當中,關於程式語言選擇的部分,是很多人在學習初期非常關注的。在企業大數據平臺開發場景下,Java語言是主流選擇,其次涉及到Spark部分,就不得不提到Scala語言。今天的大數據入門分享,我們就具體來講一講大數據黃金語言Scala。
  • Java框架視頻入門教程,常用開發框架
    Java框架視頻入門教程,常用開發框架,一般來說,很多Web框架都在是前端變得更有趣,對用戶更加友好。Java有很多用戶,也有很多開發框架適用他,選擇哪個框架才能更適合我的項目呢?
  • 吐血整理:盤點19種大數據處理的典型工具
    針對多種不同數據源的輸入文件,需要對它們進行合併。計數和平均是對數據和記錄進行處理的常用操作。結合指的是將不同處理分支中的處理結果按照給定的規則進行結合。10 Spark與Hadoop類似,Spark也是一個針對大數據的分布式計算框架。Spark可以用來構建大規模、低延遲的數據處理應用程式。
  • Pyspark處理數據中帶有列分隔符的數據集
    本篇文章目標是處理在數據集中存在列分隔符或分隔符的特殊場景。對於Pyspark開發人員來說,處理這種類型的數據集有時是一件令人頭疼的事情,但無論如何都必須處理它。
  • 數據工程師必須掌握的7個大數據實戰項目
    初學者要入門大數據,最好的方式,從了解具體的應用開始。掌握大數據能做哪些事情,完成哪些小數據做不到的功能,學著才有意思。只有學著有意思,才會繼續往下學。越學越想學,越學越開心,自然也就學好了。接下來,我整理一些大數據已經發揮它真正作用的應用場景,如果你要做大數據項目,肯定離不開這7個範疇。
  • 【BDTC講師】Tachyon作者:大數據存儲以及處理框架經驗分享
    AMPLab正在開發一個大數據的處理平臺叫做Berkeley Data Analytics Stack (BDAS),我是其中Tachyon系統和Spark Streaming系統的作者,也是Apache Spark系統的founding committer。
  • Spark專輯:從Scala開始(一)
    二、Scala基礎語法入門實戰首先,參照相關攻略,在Linux下分別下載安裝Java、Scala,然後配置Java和Scala環境變量。val聲明的不可變變量,不希望數據被改變,RDD內部的數據都是不可變,所以在Spark中一般都是使用val。 //下面聲明了一個不可變變量result,result的值不可改變。
  • Metaflow:Netflix 的 Python / R數據科學框架
    圖源:Unsplash前不久,AWS re:Invent, Netflix 開源了一個自主開發的構建和管理數據科學項目的框架——Metaflow。這樣就可以總結工作流,重現過去的結果,並檢查關於工作流的任何東西,例如筆記本。—— Ycombinator上的vtuulos 基本上它旨在提高數據科學家的生產力,使他們能夠專注於實際的數據科學工作,促進其交付成果的更快生產。
  • 從黑馬程式設計師課程大綱了解Java入門到大數據該如何學習
    也是為了後面實現數據工作打基礎,在前上那個基礎完成之後,基本上我們可以使用SSM相關框架獨立來完成企業級的項目開發,熟悉多種業務流程。第四個階段需要掌握的能力:掌握大數據爬蟲技術開發;掌握大數據搜尋引擎技術開發;掌握大數據消息隊列使用及調優;掌握Storm實時數據分析;掌握分布式系統開發;掌握網際網路用戶日誌分析。
  • 谷歌發布遊戲流媒體平臺 Google launches its game-streaming platform
    Google launches its game-streaming platformTHE LAUNCH in 2018 of 「Red Dead Redemption 2」 was a huge event in the history of entertainment.
  • 深入研究 Apache Spark 3.0 的新功能
    一、Performance與性能相關的新功能主要有:(一)Adaptive Query ExecutionAdaptive Query Execution(AQE)在之前的版本裡已經有所實現,但是之前的框架存在一些缺陷,導致使用不是很多,在Spark3.0中Databricks(Spark初創團隊創建的大數據與AI智能公司)和Intel的工程師合作,解決了相關的問題
  • 福州晉安區王莊大數據課程培訓
    研究機構Gartner是這樣定義大數據的:「大數據」是需要新處理模式才能具有更強的決策力、洞察發現力和流轉優化能力來適應海量、高增長率和多樣化的信息資產。 若從技術角度來看,大數據的戰略意義不在於掌握龐大的數據,而在於對這些含有意義的數據進行專業化處理,換言之,如果把大數據比作一種產業,那麼這種產業盈利的關鍵在於提高對數據的「加工能力」,通過「加工」實現數據的「增值」。
  • 大數據入門:Hbase Rowkey設計
    今天的大數據入門分享,我們就來具體講講,Hbase Rowkey設計。Hbase與一般傳統分布式關係型資料庫相比,明顯不同的是,它是基於列模式存儲,同時是非常適合非結構化數據存儲的。HBase存儲格式數據存儲在HDFS文件系統上,要基於文件系統將數據格式保存,有兩種文件類型——HFile,HBase中KeyValue數據的存儲格式,HFile
  • ...數據分析及生態系統分論壇:HBase、Spark、ES、Kylin及Octopus...
    以及其中的實時處理、實時分析、後期的數據挖掘,甚至是中間的聯動環節、可視化處理,都需要用大數據來進行實現。IBM的大數據簡易分析框架由前端數據採集、預處理、數據挖掘、可視化分析組成。IBM SQL基於Hadoop技術,用戶可通過不同的方式訪問數據。IBM相關的雲方案:在IBM提供的雲環境下面,用戶可以得到IBM不同軟體的相關服務,其中Spark的也可以用雲的方式來做。
  • SparkCore——專業術語及流程圖
    至於partition的數目:·對於數據讀入階段,例如sc.textFile,輸入文件被劃分為多少InputSplit就會需要多少初始Task。·在Map階段partition數目保持不變。1,Applicationapplication(應用)其實就是用spark-submit提交的程序。比方說spark examples中的計算pi的SparkPi。
  • Spark
    電影《心靈奇旅》中說,當一個靈魂找到了自己生活的spark,就可以降臨地球,來到人間。而這個spark,就是熱愛生活的那一瞬。今天,我也想分享這幾年來,我生命中的spark。這是我的研究生室友xl曾經在她的一篇文章中寫下的關於我的文字。當時看到以後分外感動,於是偷偷收藏下來。