<ruby id="bdb3f"></ruby>

    <p id="bdb3f"><cite id="bdb3f"></cite></p>

      <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
        <p id="bdb3f"><cite id="bdb3f"></cite></p>

          <pre id="bdb3f"></pre>
          <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

          <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
          <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

          <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                <ruby id="bdb3f"></ruby>

                ThinkChat2.0新版上線,更智能更精彩,支持會話、畫圖、視頻、閱讀、搜索等,送10W Token,即刻開啟你的AI之旅 廣告
                [TOC] #### 1.1 簡介 Storm 是一個開源的分布式實時計算框架,可以以簡單、可靠的方式進行大數據流的處理。通常用于實時分析,在線機器學習、持續計算、分布式 RPC、ETL 等場景。Storm 具有以下特點: * 支持水平橫向擴展; * 具有高容錯性,通過 ACK 機制每個消息都不丟失; * 處理速度非常快,每個節點每秒能處理超過一百萬個 tuples ; * 易于設置和操作,并可以與任何編程語言一起使用; * 支持本地模式運行,對于開發人員來說非常友好; * 支持圖形化管理界面。 #### 1.2 Storm 與 Hadoop對比 Hadoop 采用 MapReduce 處理數據,而 MapReduce 主要是對數據進行批處理,這使得 Hadoop 更適合于海量數據離線處理的場景。而 Strom 的設計目標是對數據進行實時計算,這使得其更適合實時數據分析的場景。 #### 1.3 Storm 與 Spark Streaming對比 Spark Streaming 并不是真正意義上的流處理框架。 Spark Streaming 接收實時輸入的數據流,并將數據拆分為一系列批次,然后進行微批處理。只不過 Spark Streaming 能夠將數據流進行極小粒度的拆分,使得其能夠得到接近于流處理的效果,但其本質上還是批處理(或微批處理)。 ![](https://img.kancloud.cn/1c/9f/1c9f6e1a40e6cd083902e3ac8b804095_658x174.png) #### 1.4 Strom 與 Flink對比 storm 和 Flink 都是真正意義上的實時計算框架。其對比如下: | | storm | flink | | --- | --- | --- | | 狀態管理 | 無狀態 | 有狀態 | | 窗口支持 | 對事件窗口支持較弱,緩存整個窗口的所有數據,窗口結束時一起計算 | 窗口支持較為完善,自帶一些窗口聚合方法, 并且會自動管理窗口狀態 | | 消息投遞 | At Most Once At Least Once | At Most Once At Least Once **Exactly Once** | | 容錯方式 | ACK 機制:對每個消息進行全鏈路跟蹤,失敗或者超時時候進行重發 | 檢查點機制:通過分布式一致性快照機制, 對數據流和算子狀態進行保存。在發生錯誤時,使系統能夠進行回滾。 | > 注 : 對于消息投遞,一般有以下三種方案: > > * At Most Once : 保證每個消息會被投遞 0 次或者 1 次,在這種機制下消息很有可能會丟失; > * At Least Once : 保證了每個消息會被默認投遞多次,至少保證有一次被成功接收,信息可能有重復,但是不會丟失; > * Exactly Once : 每個消息對于接收者而言正好被接收一次,保證即不會丟失也不會重復。 ## 二、流處理 #### 2.1 靜態數據處理 在流處理之前,數據通常存儲在數據庫或文件系統中,應用程序根據需要查詢或計算數據,這就是傳統的靜態數據處理架構。Hadoop 采用 HDFS 進行數據存儲,采用 MapReduce 進行數據查詢或分析,這就是典型的靜態數據處理架構。 ![](https://img.kancloud.cn/63/10/6310cf44755e49ff12b0fba2af7b332a_1882x552.png) #### 2.2 流處理 而流處理則是直接對運動中數據的處理,在接收數據的同時直接計算數據。實際上,在真實世界中的大多數數據都是連續的流,如傳感器數據,網站用戶活動數據,金融交易數據等等 ,所有這些數據都是隨著時間的推移而源源不斷地產生。 接收和發送數據流并執行應用程序或分析邏輯的系統稱為**流處理器**。流處理器的基本職責是確保數據有效流動,同時具備可擴展性和容錯能力,Storm 和 Flink 就是其代表性的實現。 ![](https://img.kancloud.cn/7c/62/7c62b21b228259655848fde25abdad4b_1880x559.png) 流處理帶來了很多優點: * **可以立即對數據做出反應**:降低了數據的滯后性,使得數據更具有時效性,更能反映對未來的預期; * **可以處理更大的數據量**:直接處理數據流,并且只保留數據中有意義的子集,然后將其傳送到下一個處理單元,通過逐級過濾數據,從而降低實際需要處理的數據量; * **更貼近現實的數據模型**:在實際的環境中,一切數據都是持續變化的,想要通過歷史數據推斷未來的趨勢,必須保證數據的不斷輸入和模型的持續修正,典型的就是金融市場、股票市場,流處理能更好地處理這些場景下對數據連續性和及時性的需求; * **分散和分離基礎設施**:流式處理減少了對大型數據庫的需求。每個流處理程序通過流處理框架維護了自己的數據和狀態,這使其更適合于當下最流行的微服務架構。 作者:heibaiying 鏈接:https://juejin.cn/post/6844903950030733319 來源:掘金 著作權歸作者所有。商業轉載請聯系作者獲得授權,非商業轉載請注明出處。
                  <ruby id="bdb3f"></ruby>

                  <p id="bdb3f"><cite id="bdb3f"></cite></p>

                    <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
                      <p id="bdb3f"><cite id="bdb3f"></cite></p>

                        <pre id="bdb3f"></pre>
                        <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

                        <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
                        <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

                        <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                              <ruby id="bdb3f"></ruby>

                              哎呀哎呀视频在线观看