storm主要分為兩種元件nimbus和supervisor。這兩種元件都是快速失敗的,沒有狀態。任務狀態和心跳資訊等都儲存在zookeeper上的,提交的**資源都在本地機器的硬碟上。
nimbus負責在集群裡面傳送**,分配工作給機器,並且監控狀態。全域性只有乙個。
supervisor會監聽分配給它那台機器的工作,根據需要啟動/關閉工作程序worker。每乙個要執行storm的機器上都要部署乙個,並且,按照機器的配置設定上面分配的槽位數。
zookeeper是storm重點依賴的外部資源。nimbus和supervisor甚至實際執行的worker都是把心跳儲存在zookeeper上的。nimbus也是根據zookeerper上的心跳和任務執行狀況,進行排程和任務分配的。
storm提交執行的程式稱為topology。
topology處理的最小的訊息單位是乙個tuple,也就是乙個任意物件的陣列。
topology由spout和bolt構成。spout是發出tuple的結點。bolt可以隨意訂閱某個spout或者bolt發出的tuple。spout和bolt都統稱為component。
下圖是乙個topology設計的邏輯圖的例子。
storm的每乙個supervisor節點內部執行多個work程序,每個work程序內部有多個executor執行緒,每個執行緒內部還可以跑乙個類的多個task例項
storma集群的安裝及配置
1、安裝乙個zookeeper集群
2、上傳storm的安裝包,解壓(storm是clojur語言編寫的 --->基於jvm的語言 scala也是基於jvm的語言)
3、修改配置檔案/home/hadoop-node-01/apache-storm-0.9.2-incubating/conf/storm.yaml
#所使用的zookeeper集群主機
storm.zookeeper.servers:
- "hadoop-01-server"
- "hadoop-02-server"
- "hadoop-03-server"
#nimbus所在的主機名
nimbus.host: "hadoop-01-server"
#此處配置的是supervisor節點上work程序的埠號,可配可不配,若不配則預設就是前4個埠
supervisor.slots.ports
-6701
-6702
-6703
-6704
-6705
-6706
4、將配置好的storm複製到其他兩台機器上
scp /home/hadoop-node-01/apache-storm-0.9.2-incubating hadoop-02-server:/home/hadoop-node-01/
scp /home/hadoop-node-01/apache-storm-0.9.2-incubating hadoop-03-server:/home/hadoop-node-01/
storm的集群的啟動(storm可以執行在yarn集群上,也可以單獨執行。)
1.啟動zookeeper
storm是依賴於zookeeper,所以需要選啟動zookeeper。
2.啟動storm
在nimbus主機上
bin/storm nimbus 1>/dev/null 2>&1 &
bin/storm ui 1>/dev/null 2>&1 &
在supervisor主機上
bin/storm supervisor 1>/dev/null 2>&1 &
(1>/dev/null 2>&1 & 的意思是把該服務啟動為後台程序)
storm的深入學習:
storm on yarn
分布式共享鎖的實現----zookeeper
事務topology的實現機制及開發模式(難度較大的一塊)
在具體場景中的跟其他框架的整合(flume《資料收集》/activemq/kafka(分布式的訊息佇列系統) /redis/hbase/mysql cluster)
演算法知識點彙總
1.求陣列元素之間相鄰的元素個數或者求字串的長度 指向同乙個陣列的不同元素的兩個指標可以相減,其差便是兩個指標之間相隔的元素個數。例如在乙個字串中,讓乙個指向該串的首元素,讓另乙個指向字串的結束符,兩個指標相減,其差便是字串的長度 2.怎樣判斷兩個指標指向的是陣列的同乙個元素?指標可以互相比較。如指...
小知識點彙總
1 為什麼乙個數的各位數之和可以被3整除時,這個數就可以被3整除 設乙個n位數number,從個位起每一位為a1 an 則number a1 a2 10 a3 10 2 an 10 n 1 1 先證必要性 如果number的各位數之和是3的倍數,則a1 a2 an 3k k為正整數 2 由 2 得a...
Hadoop ZooKeeper知識點彙總
echo 顯示出jdk的安裝目錄 echo 2 myid 把2寫到myid檔案 覆蓋原內容 cat myid 檢視myid檔案的內容 zkserver.sh start 啟動zookeeper zkserver.sh status 檢視zookeeper的啟動狀態 netstat nltp 檢視埠占...