溫馨提示×

溫馨提示×

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

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

Storm搭建

發(fā)布時(shí)間:2020-08-01 02:32:41 來源:網(wǎng)絡(luò) 閱讀:728 作者:ttxsgoto 欄目:大數(shù)據(jù)

Storm簡單介紹:

Storm是一個(gè)開源的分布式實(shí)時(shí)計(jì)算框架,最初是由Twitter開發(fā)的,現(xiàn)在是Apache的頂級項(xiàng)目之一。Storm適用于處理潛在無限的流式數(shù)據(jù)。Storm之與實(shí)時(shí)數(shù)據(jù)計(jì)算相當(dāng)于Hadoop之與批處理。


Storm特點(diǎn):

  1. 簡單的編程模型:類似于MapReduce降低了并行批處理復(fù)雜性,Storm降低了進(jìn)行實(shí)時(shí)處理的復(fù)雜性。

  2. 容錯(cuò)性:Storm會(huì)管理工作進(jìn)程和節(jié)點(diǎn)的故障。

  3. 水平擴(kuò)展:計(jì)算是在多個(gè)線程、進(jìn)程和服務(wù)器之間并行進(jìn)行的。

  4. 可靠的消息處理:Storm保證每個(gè)消息至少能得到一次完整處理。任務(wù)失敗時(shí),它會(huì)負(fù)責(zé)從消息源重試消息。

  5. 快速:系統(tǒng)的設(shè)計(jì)保證了消息能得到快速的處理,使用MQ作為其底層消息隊(duì)列。

  6. 多語言支持:你可以在Storm之上使用各種編程語言。默認(rèn)支持Clojure、Java、Ruby和Python,要增加對其他語言的支持,只需實(shí)現(xiàn)一個(gè)簡單的Storm通信協(xié)議即。


Storm處理流程:

Storm搭建


Storm的適用場景:

(1) 信息流處理(Stream Processing) :Storm可以用來實(shí)時(shí)處理新數(shù)據(jù)和更新數(shù)據(jù)庫,兼具容錯(cuò)性和可擴(kuò)展性。

(2) 連續(xù)計(jì)算(Continuous Computation) :Storm可以進(jìn)行連續(xù)查詢并把結(jié)果即時(shí)反饋給客戶,比如將Twitter上的熱門話題發(fā)送到客戶端。

(3) 分布式遠(yuǎn)程過程調(diào)用(Distributed RPC) :Storm可以用來并行處理密集查詢,Storm的拓?fù)浣Y(jié)構(gòu)(后文會(huì)介紹)是一個(gè)等待調(diào)用信息的分布函數(shù),當(dāng)它收到一條調(diào)用信息后,會(huì)對查詢進(jìn)行計(jì)算,并返回查詢結(jié)果。


Storm部署:

搭建步驟:

- 安裝zookeeper

- 安裝storm

- 啟動(dòng)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.添加執(zhí)行權(quán)限并執(zhí)行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.添加執(zhí)行權(quán)限 chmod +x build.sh

2.傳參數(shù)執(zhí)行腳本(eg: ./build.sh storm v20160712)


PS:deploy/redeploy之前需要修改/etc/hosts文件,更新nimbus節(jié)點(diǎn)的hostname和ip的映射關(guān)系。


  • storm 啟動(dòng) 

啟動(dòng)腳本:

#!/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]"
esac

1.修改storm.yaml文件,配置zookeeper節(jié)點(diǎn)信息(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.添加執(zhí)行權(quán)限 chmod +x storm.sh

3.傳參執(zhí)行 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

Storm搭建Storm搭建


向AI問一下細(xì)節(jié)

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

AI