storm架構(gòu)和安裝

storm技術(shù)的引入

對于一些要求進(jìn)行實(shí)時(shí)數(shù)據(jù)分析的,并以秒級(jí)、甚至毫秒級(jí)就要反饋結(jié)果的場景(交通部門監(jiān)控超速車輛、互聯(lián)網(wǎng)監(jiān)測網(wǎng)絡(luò)攻擊等)。這時(shí)候Hadoop的mapreduce計(jì)算框架已經(jīng)不能滿足需求,這個(gè)時(shí)候就需要使用實(shí)時(shí)計(jì)算框架Storm或Spark Streaming。

實(shí)時(shí)數(shù)據(jù)處理的兩種形式

  1. Continuous Streaming 持續(xù)流式計(jì)算:單獨(dú)處理每條記錄,并在記錄出現(xiàn)時(shí)立即處理。Storm采用這種計(jì)算模式
  2. 微批量計(jì)算:將多個(gè)記錄組合(可以按照記錄的數(shù)量或者時(shí)間分割出來)為一個(gè)單位,然后進(jìn)行計(jì)算處理。Spark Streaming計(jì)算框架采用這種模式。

storm的幾個(gè)重要特性

  1. 是開源的分布式實(shí)時(shí)計(jì)算系統(tǒng)
  2. 編程模型簡單,可以支持多種編程語言
  3. 低延遲,可以達(dá)到秒級(jí)。
  4. 易擴(kuò)展(增加計(jì)算節(jié)點(diǎn)),有容錯(cuò)機(jī)制。

storm架構(gòu)體系

  1. 整體架構(gòu)圖


    Image.png
  2. 各組件功能和特性
  • Nimbus:
    1. 作為主節(jié)點(diǎn),本身是無狀態(tài)的,狀態(tài)信息是由zookeeper存儲(chǔ)(實(shí)現(xiàn)了高可用,當(dāng)nimbus掛掉,可以找另外一個(gè)節(jié)點(diǎn)啟動(dòng)nimbus進(jìn)程,狀態(tài)信息從zookeeper獲得)。
    2. 在nimbus進(jìn)程失敗后,可以快速重啟恢復(fù)正常工作,不需要很長的時(shí)間來進(jìn)行初始化和狀態(tài)恢復(fù)。
    3. 接受客戶端任務(wù)Topology的提交,然后把代碼發(fā)布到zookeeper上,由supervisor到zookeeper上領(lǐng)取任務(wù)。
    4. 當(dāng)nimbus從zookeeper得知有supervisor節(jié)點(diǎn)掛掉,可以將該節(jié)點(diǎn)的任務(wù)重新分配給其他子節(jié)點(diǎn)。
  • Supervisor
    1. 作為從節(jié)點(diǎn)
    2. 從zookeeper上獲取nimbus分配的任務(wù),負(fù)責(zé)啟動(dòng)和停止worker工作進(jìn)程
    3. 自己的狀態(tài)信息匯報(bào)到zookeeper上,然后由nimbus監(jiān)控
  • worker:負(fù)責(zé)啟動(dòng)和停止executor線程
  • executor:真正執(zhí)行任務(wù)task的線程。
  • zookeeper:存儲(chǔ)nimbus和supervisor的狀態(tài)信息,這樣使storm集群保持無狀態(tài),具有高可用性。


    Image.png
  • logviewer:負(fù)責(zé)storm集群中日志收集的進(jìn)程,需要在每個(gè)supervisor節(jié)點(diǎn)上啟動(dòng)

Storm的安裝部署

  1. 將安裝包解壓到指定目錄
    $ tar zxvf apache-storm-0.9.6.tar.gz -C /opt/modules/
    Image.png
  2. 在./conf/storm_env.ini中配置JAVA_HOME


    Image.png
  3. 對./conf/storm.yaml進(jìn)行配置(格式一定要注意,不要用tab)
    storm.zookeeper.servers:指定zookeeper集群節(jié)點(diǎn)
    nimbus.host:指定nimbus節(jié)點(diǎn)
    storm.local.dir:這個(gè)指定的本地系統(tǒng)的地址用來保存任務(wù)提交的jar包
    supervisor.slots.ports:指定supervisor啟動(dòng)的工作進(jìn)程work的默認(rèn)端口號(hào),若超過指定的個(gè)數(shù),將隨機(jī)分配


    Image.png
  4. 啟動(dòng)zookeeper(提前安裝部署成功),然后啟動(dòng)主節(jié)點(diǎn)nimbus和從節(jié)點(diǎn)supervisor以及l(fā)ogviewer。在剛啟用主節(jié)點(diǎn)、從節(jié)點(diǎn)、logviewer的時(shí)候,用jps查看,進(jìn)程名會(huì)顯示config_value,這是因?yàn)檫@時(shí)正在加載配置文件。
    $ bin/zkServer.sh start
    $ nohup bin/storm nimbus >/dev/null 2>&1 &
    $ nohup bin/storm supervisor >/dev/null 2>&1 &
    $ nohup bin/storm logviewer>/dev/null 2>&1 &
    所有進(jìn)程啟動(dòng)成功后用jps查看
    Paste_Image.png
  5. 啟動(dòng)ui進(jìn)程
    $ nohup bin/storm ui >/dev/null 2>&1 &
    Paste_Image.png

    Paste_Image.png
  6. 測試運(yùn)行自帶的單詞統(tǒng)計(jì)示例(注意:任務(wù)會(huì)一直運(yùn)行)
$ bin/storm jar examples/storm-starter/storm-starter-topologies-0.9.6.jar storm.starter.WordCountTopology wordcount
Paste_Image.png

Paste_Image.png
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 背景 OpenShift是目前比較主流的基于Kubernetes的容器云解決方案,OpenShift在kubern...
    小白_18M閱讀 1,327評(píng)論 0 5
  • storm啟停腳本的編寫: 第一步:在master節(jié)點(diǎn)創(chuàng)建start-supervisor.sh腳本,然后分發(fā)到各...
    夙夜M閱讀 778評(píng)論 0 0
  • Strom集群結(jié)構(gòu)是有一個(gè)主節(jié)點(diǎn)(nimbus)和多個(gè)工作節(jié)點(diǎn)(supervisor)組成的主從結(jié)構(gòu),主節(jié)點(diǎn)通過配...
    看山遠(yuǎn)兮閱讀 3,012評(píng)論 0 7
  • 目錄 場景假設(shè) 調(diào)優(yōu)步驟和方法 Storm 的部分特性 Storm 并行度 Storm 消息機(jī)制 Storm UI...
    mtide閱讀 17,287評(píng)論 30 60
  • 剛來深圳的時(shí)候,找的第一份工作上班時(shí)間是9:30,每天上班7個(gè)小時(shí),宿舍離公司步行5分鐘。當(dāng)時(shí)選擇這份工作的原...
    米多姐姐閱讀 704評(píng)論 0 1

友情鏈接更多精彩內(nèi)容