部署storm和配置檔案詳解
阿新 • • 發佈:2019-01-27
#########安裝storm########
storm_install.sh
sudo ansible -i ansible_hosts elk -m copy -a "src=/letv/apache-storm-1.1.0.tar.gz dest=/letv/apache-storm-1.1.0.tar.gz "
ansible -i ansible_hosts elk -m script -a '/root/script/storm_install.sh'
ansible -i ansible_hosts elk -m shell -a 'source /etc/profile && storm supervisor &'
ansible -i ansible_hosts elk -m shell -a 'ss -lnpt'
ansible -i ansible_hosts elk -m shell -a 'ps -ef | grep storm'
#!/bin/bash
cd /letv/
tar zvxf apache-storm-1.1.0.tar.gz
ln -s /letv/apache-storm-1.1.0 /usr/local/storm
#改配置檔案
cat >> /letv/apache-storm-1.1.0/conf/storm.yaml << EOF
#Storm叢集對應的ZooKeeper叢集的主機列表
storm.zookeeper.servers:
- "bops-10-183-93-129"
- "bops-10-183-93-131"
- "bops-10-183-93-132"
#Storm叢集對應的ZooKeeper叢集的服務埠,ZooKeeper預設埠為21818
storm.zookeeper.port: 21818
#Storm使用的本地檔案系統目錄(必須存在並且Storm程序可讀寫)
storm.local.dir: /data/hadoop/data5/storm-workdir
#Storm執行模式,叢集模式需設定為distributed(分散式的)
storm.cluster.mode: distributed
#storm.local.mode.zmq true
#Storm的元資料在ZooKeeper中儲存的根目錄
storm.zookeeper.root: /storm
storm.zookeeper.session.timeout: 60000
#整個Storm叢集的Nimbus節點
nimbus.host: bops-10-183-93-129
storm.log.dir: /data/hadoop/data4/storm-logs
#Storm的Slot,最好設定成OS核數的整數倍;同時由於Storm是基於記憶體的實時計算,Slot數不要大於每臺物理機可執行Slot個數:(實體記憶體-虛擬記憶體)/單個Java程序最大可佔用記憶體數
supervisor.slots.ports:
- 6700
- 6701
- 6702
- 6703
- 6704
- 6705
- 6706
- 6707
- 6708
- 6709
- 6710
- 6711
- 6712
- 6713
- 6714
- 6715
- 6716
- 6717
- 6718
- 6719
EOF
mkdir -p /data/hadoop/data5/storm-workdir && mkdir -p /data/hadoop/data4/storm-logs
#建立storm工作目錄 storm-workdir storm-logs
storm.local.dir: /data/hadoop/data5/storm-workdir
storm.log.dir: /data/hadoop/data4/storm-logs
mkdir /data/hadoop/data5/storm-workdir && mkdir /data/hadoop/data4/storm-logs
#啟動nimbus
storm nimbus &
###########################start-nimbus.sh
#! /bin/bash
source /etc/profile
cd `dirname $0`
pwd
DAY=`date +%F`
if [ -f "/data/hadoop/data4/storm-logs/nimbus.log" ]; then
mv /data/hadoop/data4/storm-logs/nimbus.log /data/hadoop/data4/storm-logs/nimbus.log_${DAY}
fi
COUNT=`jps | grep nimbus | wc -l`
if [ $COUNT -eq 0 ]; then
nohup /usr/local/storm/bin/storm nimbus 1>/data/hadoop/data4/storm-logs/nimbus.log 2>&1 &
sleep 5
fi
################
#啟動nimbus storm
storm supervisor &
##############start-storm.sh
#! /bin/bash
source /etc/profile
cd `dirname $0`
pwd
DAY=`date +%F`
OLD=`date -d "2 days ago" +%F`
TIME=`date +"%F %H:%M:%S"`
LOG="log_monitor_storm_supervisor_$DAY"
rm -f log_monitor_storm_supervisor_$OLD.log
echo starting supervisors,time: `date` 1>> $LOG.log 2>&1
for stormserver in $(cat ../conf/slaves)
do
echo stormserver: $stormserver
echo sh monitor-java-process.sh ${stormserver} 15801342789 supervisor "sh /usr/local/storm/bin/start-supervisor.sh"
sh monitor-java-process.sh ${stormserver} 15801342789 supervisor "sh /usr/local/storm/bin/start-supervisor.sh"
done 1>> $LOG.log 2>&1
NIMBUS_HOST=`tail -n 1 ../conf/nimbus`
sh monitor-java-process.sh ${NIMBUS_HOST} 15801342789 nimbus "sh /usr/local/storm/bin/start-nimbus.sh" 1>> $LOG.log 2>&1
echo ending time: `date` 1>> $LOG.log 2>&1
###########
#啟動ui
storm ui &
####################ui############
#!/bin/bash
source /etc/profile
cd `dirname $0`
pwd
DAY=`date +%F`
if [ -f "/data/hadoop/data4/storm-logs/storm-ui.log" ]; then
mv /data/hadoop/data4/storm-logs/storm-ui.log /data/hadoop/data4/storm-logs/storm-ui.log_${DAY}
fi
COUNT=`jps | grep core | wc -l`
if [ $COUNT -eq 0 ]; then
nohup /usr/local/storm/bin/storm ui > /data/hadoop/data4/storm-logs/storm-ui.log 2>&1 &
sleep 5
fi
#################start-supervisor.sh
#!/bin/bash
source /etc/profile
cd `dirname $0`
pwd
DAY=`date +%F`
if [ -f "/data/hadoop/data4/storm-logs/supervisor.log" ]; then
mv /data/hadoop/data4/storm-logs/supervisor.log /data/hadoop/data4/storm-logs/supervisor.log_${DAY}
fi
COUNT=`jps | grep supervisor | wc -l`
if [ $COUNT -eq 0 ]; then
echo starting supervisor
echo `date "+%Y%m%d %H:%M:%S"` COUNT=0, starting supervisor >> /data/hadoop/data4/storm-logs/supervisor-restart.log
nohup /usr/local/storm/bin/storm supervisor 1> /data/hadoop/data4/storm-logs/supervisor.log 2>&1 &
sleep 5
#bin/storm all-supervisor >/dev/null 2>&1 &
fi
#########
1. Nimbus:在 master 機器上,在監控下執行 bin/storm nimbus 命令。
2. Supervisor:在每個工作節點上,在監控下執行 bin/storm supervisor 命令。Supervisor 的後臺程序主要負責啟動/停止該機器上的 worker 程序。
3. UI:在 master 機器上,在監控下執行 bin/storm ui 命令啟動 Storm UI(Storm UI 是一個可以在瀏覽器中方便地監控叢集與拓撲執行狀況的站點)後臺程序。可以通過 http://{nimbus.host}:8080 來訪問 UI 站點。
最後加環境變數
#!/bin/bash
cat >> /etc/profile << EOF
export JAVA_HOME=/usr/local/java
export SCALA_HOME=/usr/local/scala
export KAFKA_HOME=/usr/local/kafka
export PATH=$JAVA_HOME/bin:$SCALA_HOME/bin:$KAFKA_HOME/bin:$PATH
export STORM_HOME=/usr/local/storm
export PATH=${PATH}:${STORM_HOME}/bin
export ZK_CONNECT=10.183.93.129:21818,10.183.93.131:21818,10.183.93.132:21818/kafka
EOF