Spark Streaming與Storm

来源:https://www.cnblogs.com/asura7969/archive/2018/01/22/8331440.html
-Advertisement-
Play Games

Spark Streaming處於Spark生態技術棧中,可以和Spark Core和Spark SQL無縫整合;而Storm相對來說比較單一; (一)概述 Spark Streaming Spark Streaming是Spark的核心API的一個擴展,可以實現高吞吐量、具有容錯機制的實時流數據的 ...


Spark Streaming處於Spark生態技術棧中,可以和Spark Core和Spark SQL無縫整合;而Storm相對來說比較單一;

(一)概述

  • Spark Streaming

    Spark Streaming是Spark的核心API的一個擴展,可以實現高吞吐量、具有容錯機制的實時流數據的處理。支持從多種數據源獲取數據,包括kafka、Flume、Twitter、ZeroMQ以及TCP等,從數據獲取之後,可以使用諸如map、reduce、join、window等高級函數進行複雜演算法處理。最後還可以將處理結果存儲到文件系統,資料庫;還可以使用Spark的其他子框架,如圖計算等,對流數據進行處理。

    Spark Streaming在內部的處理機制是,就收實時流的數據,並根據一定的時間間隔拆分成一批批的數據,然後處理這些批數據,最終得到處理後的一批結果數據。對應的批數據(batch data),在Spark內核對應一個RDD實例,因此,對流數據DStream可以看成是一組RDDs。

    執行流程(Receiver模式):

    

      提高並行度:receiver task會每隔200ms block.interval將接受來的數據分裝到block中,調整block.interval的值;

            啟用多個receiver進程來並行接受數據;

      對於Direct模式提高並行度的方式只需增加kafka partition的數量;Director模式,消費者偏移量由spark自己管理,存在checkpoint目錄中

  •  Storm

    

    storm採用Master/Slave體繫結構

      nimbus:該進程運行在集群的主節點上,負責任務的指派和分發

      supervisor:運行在集群的從節點上,負責執行任務的具體部分

      zookeeper:幫助主從做到解耦,存儲集群資源元數據,當storm把元數據信息都存到zk中後,那storm自己就做到了無狀態,提交Topology應用的時候才會用到nimbus;

      worker:運行處理具體組件邏輯進程,worker之間通過netty傳送數據

      task:worker中每個spout/bolt的線程稱為一個task,同一個spout/bolt的task可能會共用一個物理進程,該線程為executor

    

    以上由spout和bolt組成的圖叫做topologies,上層的spout或者bolt向下層的Bolt來發射數據的時候,預設情況下都是default stream

       storm常用的分發策略一共有5種,最常用的是Shuffle grouping和Fields grouping

    storm中的ack機制:說白了就是storm通過Acker組件去數數,數Tuple tree裡面的Tuple是否都已經確認過,每個Tuple Tree對應一個msgId

     提高並行度:

      增加worker數量;增加Executor數量;設置task數量,預設一個線程裡面跑一個task

    Storm實現可靠的消息保障機制:

  

    Tuple 的完全處理需要 Spout、Bolt 以及 Acker(Storm 中用來記錄某棵 Tuple 樹是否被完全處理的節點)協同完成,如上圖所示。從 Spout 發送 Tuple 到下游,並把相應信息通知給 Acker,整棵 Tuple 樹中某個 Tuple 被成功處理了都會通知 Acker,待整棵 Tuple 樹都被處理完成之後,Acker 將成功處理信息返回給 Spout;如果某個 Tuple 處理失敗,或者超時,Acker 將會給 Spout 發送一個處理失敗的消息,Spout 根據 Acker 的返回信息以及用戶對消息保證機制的選擇判斷是否需要進行消息重傳。


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • mainWindow代碼如下(由於篇幅問題,子視窗代碼不貼出了,有需要源碼的可以留下郵箱): ~~~~ / Author : 博客園 Lance / include "mainwindow.h" include "ui_mainwindow.h" include include include in ...
  • 引言 在監控生產環境的服務的時候,通常需要對多個埠進行監控,如果我們手動一個一個的添加,這將是一件很麻煩的事情,為了減少這樣的情況,我們採用批量添加監控埠的方法,這是 非常常見的需求,zabbix也是支持這種方式的,需要使用zabbix的Discovery功能來實現,下麵小編就給大家分享一下批量 ...
  • 終止一個進程有很多方法(暫只說linux環境):前臺運行的進程,如果沒有提供退出功能,我們通常會Ctrl+C進行終止;後臺或守護進程,如果也沒有提供退出命令啥的,咱通常會kill掉;此外還有類似關機或重啟之類的特殊情況,也會導致進程終止。 無論哪種方法,最終都是通過向進程傳遞信號量的方式進行終止。只 ...
  • Screen是一款由GNU計劃開發的用於命令行終端切換的自由軟體。用戶可以通過該軟體同時連接多個本地或遠程的命令行會話,併在其間自由切換。GNU Screen可以看作是視窗管理器的命令行界面版本。它提供了統一的管理多個會話的界面和相應的功能。screen的常用命令... ...
  • 1. 複製表結構及其數據: create table table_name_new as select * from table_name_old 2. 只複製表結構: create table table_name_new as select * from table_name_old where ...
  • 常用函數: length()表示返回位元組長度。 char_length()表示返回字元個數。 rand()表示返回0-1之間的隨機小數。 round()表示四捨五入。 date_add(now(),interval 10 day)表示10天後的日期。 date_add(now(),interval ...
  • 最近有些小伙伴遇到一些問題,oracle如何轉成mysql,今天呢,小編就來教教大家如何轉換 首先大家要下載一個工具navicat premium(沒有的朋友,可以自行百度搜索安裝) 1、使用navicat premium連上oracle,由於上一篇小編用的就是該軟體,所以今天就不啰嗦如何配置了 2 ...
  • 腳本主要用於redhat平臺安裝11g和12c軟體 依賴包檢查與安裝 用戶、組檢查與安裝 系統內核、用戶限制 防火牆、selinux關閉 註意,linux組腳本中只創建了dba,通常會創建oinstall和dba ################# # # #create : 2018/01/22 ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...