什么是 Storm?        --> Twitter將Storm正式開源了,這是一個分布式的、容錯的實時計算系統(tǒng),遵..."/>
溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務(wù)條款》

Storm 環(huán)境部署及簡單使用

發(fā)布時間:2020-09-05 04:10:17 來源:網(wǎng)絡(luò) 閱讀:6056 作者:菜鳥的征程 欄目:大數(shù)據(jù)

===> 什么是 Storm?

        --> Twitter將Storm正式開源了,這是一個分布式的、容錯的實時計算系統(tǒng),遵循 Eclipse Public License 1.0。

        --> Storm是由BackType開發(fā)的實時處理系統(tǒng),BackType現(xiàn)在已在Twitter麾下。

        --> Storm為分布式實時計算提供了一組通用原語,可被用于“流處理”之中,實時處理消息并更新數(shù)據(jù)庫。

            Storm也可被用于“連續(xù)計算”(continuous computation),對數(shù)據(jù)流做連續(xù)查詢,在計算時就將結(jié)果以流的形式輸出給用

            戶。它還可被用于“分布式RPC”,以并行的方式運行昂貴的運算。 

        --> Storm的主工程師Nathan Marz表示:Storm可以方便地在一個計算機集群中編寫與擴展復(fù)雜的實時計算,

               Storm用于實時處理,就好比 Hadoop 用于批處理。

               Storm保證每個消息都會得到處理,而且它很快——在一個小集群中,每秒可以處理數(shù)以百萬計的消息。更棒的是你可以使用

                任意編程語言來做開發(fā)

===> Storm 支持離線計算和流式計算

        --> 離線計算:批量獲取數(shù)據(jù),批量傳輸數(shù)據(jù),周期性比量計算數(shù)據(jù),數(shù)據(jù)展示(Sqoop-->HDFS--> MR ---> HDFS)

            --- 代表技術(shù):

                    -- Sqoop 批量導入數(shù)據(jù)

                    -- HDFS 批量存儲數(shù)據(jù)

                    -- MapReduce 批量計算

                    -- Hive

        --> 流式計算:數(shù)據(jù)實時產(chǎn)生,數(shù)據(jù)實時傳輸,數(shù)據(jù)實時計算,實時展示(Flume ---> Kafka ---> 流式計算 ---> Redis

            --- 代表技術(shù):

                    -- Flume 實時獲取數(shù)據(jù)

                    -- Kafka/metaq 實時數(shù)據(jù)存儲

                    -- Storm/JStorm 實時數(shù)據(jù)計算

                    -- Redis 實時結(jié)果緩存,持久化存儲(MySQL

===> Storm 與 Hadoop 的區(qū)別

        --> 

StormHadoop
用于實時計算用于離線計算
處理的數(shù)據(jù)保存在內(nèi)存中,連連不斷處理的數(shù)據(jù)保存在文件系統(tǒng)中
數(shù)據(jù)通過網(wǎng)絡(luò)傳輸進來從 HDFS 平臺獲取數(shù)據(jù)


===> Storm 體系結(jié)構(gòu)

Storm 環(huán)境部署及簡單使用


===> Storm 運行流程

Storm 環(huán)境部署及簡單使用

        --> Storm 結(jié)構(gòu)中各部分職責:

            --- Nimbus: 

                    負責資源分配和任務(wù)調(diào)度

            --- Supervisor

            負責接受 Nimbus 分配的任務(wù),啟動和停止屬于自己管理的 worker 進程

                  (*)可通過配置文件設(shè)置當前 supervisor 上啟動幾個 worker 進程

            --- Worker:

                    運行具體處理 組件邏輯 ,任務(wù)類型有兩種:

                    -- Spout任務(wù)

                    -- Bolt 任務(wù)

            --- Executor: 

                        Storm 0.8 之后, Executor 為 Worker 進程中的具體的物理線程,同一個 Spout/Bolt的 Task可能會共享一個物理線程,一個 Executor 中只能運行隸屬于同一個 Spout/Bolt 的 Task

            --- Task: 

                    worker 中每一個 spout/bolt 的線程稱為一個 task, 在 storm0.8 之后, task 不再與物理線程對應(yīng),不同 spout/bolt 的 task 可能會共享一個物理線程,該 線程稱為 executor


===> Strom 偽分布式安裝部署

        --> 安裝前需要部署 Zookeeper 環(huán)境,參見:https://blog.51cto.com/songqinglong/2062909 

        --> 解壓:

        tar zxf apache-storm-1.0.3.tar.gz -C /app


        --> 配置環(huán)境變量

        vim  ~/.bash_profile
        # storm_home
        STORM_HOME=/app/apache-storm-1.0.3
        export STORM_HOME
        PATH=$STORM_HOME/bin:$PATH
        export PATH


        --> 修改配置文件

       vim $STORM_HOME/conf/storm.yaml 
         # 此處指定 zookeeper 節(jié)點           
         storm.zookeeper.servers:
                - "192.168.10.210"
         # 
         # nimbus.seeds: ["host1", "host2", "host3"]
         # 此處指定 nimbus 節(jié)點
         nimbus.seeds: ["192.168.10.210"]
         # 每個從節(jié)點上的worker個數(shù)
         supervisor.slots:ports:
            - 6700
            - 6701
            - 6702
            - 6703
         # 
         # 開啟任務(wù) Debug 功能
         "topology.eventlogger.executors": 1
         # 任務(wù)上傳后,保存的目錄
         storm.local.dir: "/data/storm_data"


        --> 啟動Storm

            --- 偽分部模式:

      storm nimbus &            
      storm ui &      # 可以通過 http 的方式查看:http://ip:8080
      storm supervisor &
      storm logviewer &

            --- 完全分部式:

                    -- 主節(jié)點

        storm nimbus &
        storm ui &
        storm logviewer &

                    -- 從節(jié)點

        storm supervisor    
        storm logviewer

        --> 查看:  http://ip:8080

===> Strom 完全分布式安裝部署

        --> 安裝方式與偽分布式基本相同,只需要將安裝目錄copy 到其它節(jié)點上即可

===> Storm HA

        --> 只需修改storm.yaml 文件中的 nimbus.seeds: ["bigdata1"] ,將主機加入到此列表中,并在主機上啟動 nimbus 即可


===> Storm 常用命令 

        --> 提交任務(wù)

            --- 格式:storm jar    ***.jar   [Toplogy名字:類名字]   別名

            --- 示例:

      storm jar storm-starter-topologies-1.0.3.jar org.apache.storm.starter.WordCountTopology MyWordCountExample


        --> 殺死任務(wù)

            --- 格式:storm  kill  任務(wù)名稱   -w  10    注: -w  等待秒數(shù)

            --- 示例:

      storm kill MyWordCountExample  -w  10

        --> 停用任務(wù)

            --- 格式:storm deactivte 任務(wù)名稱

            --- 示例:

      storm deactivte  MyWordCountExample

            --- 格式:storm activate 任務(wù)名稱

            --- 示例:

      storm activate MyWordCountExample


        --> 重新部署任務(wù)

            --- 格式:storm rebalance 任務(wù)名稱

            --- 示例:

      storm rebalance MyWordCountExample

            --- (*) 當集群有所變動,此命令將會信用拓撲,然后在相應(yīng)的超時時間內(nèi)重啟拓撲,重新分配任務(wù)

===> Storm 中 WordCount 程序流程分析

        --> 通過查看 Storm  UI 上每個組件的events 鏈接,可以查看 Storm 的每個組件(spout/blot)發(fā)送的消息

        --> 需要開啟 Debug 功能,在配置文件中添加下列參數(shù)并重新啟動 storm 

            "topology.eventlogger.executors": 1


        -->

 Storm 環(huán)境部署及簡單使用

===> Storm 編程模型

Storm 環(huán)境部署及簡單使用


        --> Topology: Storm 中運行的一個實時應(yīng)用程序的名稱

        --> Spout: 在一個topology 中獲取源數(shù)據(jù)流,然后轉(zhuǎn)換為 topology 的內(nèi)部源數(shù)據(jù)

        --> Bolt: 接受數(shù)據(jù)然后執(zhí)行處理,用戶可以在其中執(zhí)行自己想要的操作

        --> Tuple: 一次消息傳遞的基本單元

        --> Stream: 表示數(shù)據(jù)的流向

        --> StreamGroup: 數(shù)據(jù)分組策略

            --- Shuffle Grouping隨機分組,盡量均勻的分布到下游 Bolt 中

            --- Fields Grouping: 按字段分組,按數(shù)據(jù)中 field 值進行分組, 相同 field 值的 Tuple 被發(fā)送到相同的Task

            --- All grouping: 廣播

            --- Global grouping: 全局分組, Tuple 被分配到一個 Bolt 中的同一個Task 中,實現(xiàn)事物性的 Topology

            ---  None grouping: 不分組

            --- Direct grouping: 直接分組,指定分組


===> Storm 集群在 Zookeeper 中保存的數(shù)據(jù)結(jié)構(gòu)

Storm 環(huán)境部署及簡單使用

===> Strom 任務(wù)提交


Storm 環(huán)境部署及簡單使用

向AI問一下細節(jié)

免責聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進行舉報,并提供相關(guān)證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI