Storm簡單介紹:
Storm是一個開源的分布式實時計算框架,最初是由Twitter開發的,現在是Apache的頂級項目之一。Storm適用于處理潛在無限的流式數據。Storm之與實時數據計算相當于Hadoop之與批處理。
Storm特點:
簡單的編程模型:類似于MapReduce降低了并行批處理復雜性,Storm降低了進行實時處理的復雜性。
容錯性:Storm會管理工作進程和節點的故障。
水平擴展:計算是在多個線程、進程和服務器之間并行進行的。
可靠的消息處理:Storm保證每個消息至少能得到一次完整處理。任務失敗時,它會負責從消息源重試消息。
快速:系統的設計保證了消息能得到快速的處理,使用MQ作為其底層消息隊列。
多語言支持:你可以在Storm之上使用各種編程語言。默認支持Clojure、Java、Ruby和Python,要增加對其他語言的支持,只需實現一個簡單的Storm通信協議即。
Storm處理流程:

Storm的適用場景:
(1) 信息流處理(Stream Processing) :Storm可以用來實時處理新數據和更新數據庫,兼具容錯性和可擴展性。
(2) 連續計算(Continuous Computation) :Storm可以進行連續查詢并把結果即時反饋給客戶,比如將Twitter上的熱門話題發送到客戶端。
(3) 分布式遠程過程調用(Distributed RPC) :Storm可以用來并行處理密集查詢,Storm的拓撲結構(后文會介紹)是一個等待調用信息的分布函數,當它收到一條調用信息后,會對查詢進行計算,并返回查詢結果。
Storm部署:
搭建步驟:
- 安裝zookeeper
- 安裝storm
- 啟動storm
- 訪問storm ui
安裝zookeeper
安裝腳本:
#!/bin/bash
name=zookeeper1
SERVER_ID=1
HOST1=192.168.1.1
port=22181
p_w_picpath=docker.ttxsgoto.com:5000/zk.ttxsgoto.com:v20160712
run(){
docker run -d \
--name $name \
-e "SERVER_ID=$SERVER_ID" \
-e "ADDITIONAL_ZOOKEEPER_1=server.1=$HOST1:2181:3181" \
-p ${port}:2181 \
-v /opt/zookeeper/data:/opt/zookeeper/data \
$p_w_picpath
}
pullp_w_picpath(){
docker pull $p_w_picpath
if [ $? -ne 0 ];then
echo "Docker pull $p_w_picpath fail."
exit 1
fi
}
case $1 in
deploy)
pullp_w_picpath
run
;;
stop)
docker stop $name
;;
rm)
docker stop $name
docker rm $name
;;
start)
docker start $name
;;
redeploy)
pullp_w_picpath
docker stop $name
docker rm $name
run
;;
*)
echo "Usage $0 [deploy|start|stop|rm|redeploy]"
;;
esac
1.需修改腳本中SERVER_ID,HOST1,port
2.添加執行權限并執行chmod +x zkstart.sh && ./zkstart.sh deploy
安裝storm
安裝腳本:
#!/bin/bash if [ -z "$1" ]; then echo "Usage error exit" echo "./build.sh [appname] [ver]" exit 2 fi if [ -z "$2" ]; then echo "Usage error please input docker version . exit" echo "./build.sh [appname] [ver]" exit 2 fi docker build --no-cache=true -t docker.ttxsgoto.com:5000/$1.ttxsgoto.com:$2 . docker push docker.ttxsgoto.com:5000/$1.ttxsgoto.com:$2 d=`date "+[%Y-%m-%d %H:%M:%S]"` echo -e "$d\t$*" >> build.txt
1.添加執行權限 chmod +x build.sh
2.傳參數執行腳本(eg: ./build.sh storm v20160712)
PS:deploy/redeploy之前需要修改/etc/hosts文件,更新nimbus節點的hostname和ip的映射關系。
storm 啟動
啟動腳本:
#!/bin/bash
p_w_picpath="docker.ttxsgoto.com:5000/$1.ttxsgoto.com:$2"
log="/var/logs/$1.ttxsgoto.com.$2.$3"
port=$5
name=$3
mode=$4
run(){
docker run --net=host -it -d \
--name $name \
-v $log:/opt/apache-storm-1.0.1/logs \
"$p_w_picpath" /bin/sh -c "/opt/apache-storm-1.0.1/bin/storm $mode"
}
pullp_w_picpath(){
docker pull $p_w_picpath
if [ $? -ne 0 ];then
echo "Docker pull $p_w_picpath fail."
exit 1
fi
}
case $5 in
deploy)
pullp_w_picpath
run
;;
redeploy)
pullp_w_picpath
docker stop $name
docker rm $name
run
;;
*)
echo "Usage: $0 [appname version container_name mode deploy|redeploy]"
esac1.修改storm.yaml文件,配置zookeeper節點信息(storm.zookeeper.servers+storm.zookeeper.port),如:
storm.zookeeper.servers: - "192.168.1.1" storm.zookeeper.port: 22181 storm.local.dir: "/opt" nimbus.seeds: ["ub"] supervisor.slots.ports: - 6700 - 6701 - 6702 - 6703
2.添加執行權限 chmod +x storm.sh
3.傳參執行 storm.sh
eg: ./storm.sh storm v20160712 ui ui deploy ./storm.sh storm v20160712 nimbus nimbus deploy ./storm.sh storm v20160712 supervisor supervisor deploy
訪問storm UI界面
eg:http://192.168.1.1:8080


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