搭建kafka2.12-1.0.0+storm1.1.1叢集
各應用程式及版本
- CentOS65
- jdk1.8.0_121
- storm1.1.1
- zookeeper3.4.10
- kafka2.12-1.0.0
- redis4.0.5
storm、zookeeper、kafka可從apache.org網站獲取相應版本,建議版本與本文件一致;否則後續的示例程式可能會有亂碼等不可知異常。
伺服器IP及拓樸結構
storm安裝在/app/apache-storm-1.1.1
四臺伺服器 建立本地輸出路徑 /data/storm
mkdir /data
mkdir /data/storm
四臺伺服器 {storm_home}/conf/storm.yaml配置內容
storm.zookeeper.servers: - "CentOS65M1" - "CentOS65M2" - "CentOS65M3" nimbus.seeds: ["CentOS65App"] storm.zookeeper.port: 2181 storm.local.dir: "/data/storm" ui.port: 9099 supervisor.slots.ports: - 6700 - 6701 - 6702 - 6703
四臺伺服器配置/etc/hosts,為方便後續部署,四臺伺服器已經設定了ssh免密登入
172.16.2.105 CentOS65App
172.16.2.106 CentOS65M1
172.16.2.107 CentOS65M2
172.16.2.108 CentOS65M3
四臺伺服器配置環境變數 /etc/profile
載入環境變數export STORM_HOME=/app/apache-storm-1.1.1 export STORM_EXT_CLASSPATH=$STORM_HOME/extlib export STORM_EXT_CLASSPATH_DAEMON=$STORM_HOME/extlib-daemon export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar:$JRE_HOME/lib:$CLASSPATH export PATH=$JAVA_HOME/bin:$REDIS_HOME/bin:$ZOOKEEPER_HOME/bin:$STORM_HOME/bin:$HADOOP_INSTALL/bin:$HADOOP_INSTALL/sbin:$PATH
source /etc/profile
zookeeper安裝配置
zookeeper安裝在 /app/zookeeper-3.4.10
三臺supervisor伺服器的 {zookeeper_home}/conf/zoo.cfg
dataDir=/data/zookeeper
clientPort=2181
server.106=CentOS65M1:2888:3888
server.107=CentOS65M2:2888:3888
server.108=CentOS65M3:2888:3888
三臺supervisor伺服器建立並設定 /data/zookeeper/myid三臺supervisor伺服器配置然後載入環境變數/etc/profilemkdir /data/zookeeper touch /data/zookeeper/myid echo {主機IP最後一節,如106} > /data/zookeeper/myid #即/data/zookeeper/myid的內容為106、107、108之一,且三臺伺服器的myid內容不同。
export ZOOKEEPER_HOME=/app/zookeeper-3.4.10
export ZOO_LOG_DIR=/data/zookeeper #有了此項配置,便不在當前路徑生成zookeeper.out
export PATH=$JAVA_HOME/bin:$ZOOKEEPER_HOME/bin:$STORM_HOME/bin:$KAFKA_HOME/bin:$HADOOP_INSTALL/bin:$HADOOP_INSTALL/sbin:$PATH
kafka安裝配置
kafka安裝在/app/kafka_2.12-1.0.0
三臺supervisor伺服器的 {kafka_home}/config/server.properties
broker.id=106 #此處與zookeeper/myid相同
log.dirs=/data/kafka #作用同storm、zookeeper,統一輸出路徑,便於問題集中排查
zookeeper.connect=CentOS65M1:2181,CentOS65M2:2181,CentOS65M3:2181
三臺supervisor伺服器 建立輸出路徑 /data/kafkamkdir /data/kafka
將來kafka所有的topic訊息流都會以壓縮檔案的方式儲存在這裡,所以清理老舊topic也需要在用kafka-topics.sh刪除topic後,再把這裡的topic實際資料夾刪除,可以節省不少的磁碟空間。三臺supervisor伺服器配置然後載入環境變數/etc/profile
export KAFKA_HOME=/app/kafka_2.12-1.0.0
export PATH=$JAVA_HOME/bin:$ZOOKEEPER_HOME/bin:$STORM_HOME/bin:$KAFKA_HOME/bin:$HADOOP_INSTALL/bin:$HADOOP_INSTALL/sbin:$PATH
redis安裝配置
redis安裝在nimbus伺服器CentOS65App的 /app/redis/
如果需要設定訪問密碼,則配置{redis_home}/conf/redis.conf
requirepass inputYourPasswordHere
配置並載入環境變數/etc/profileexport REDIS_HOME=/app/redis
export PATH=$JAVA_HOME/bin:$REDIS_HOME/bin:$STORM_HOME/bin:$HADOOP_INSTALL/bin:$HADOOP_INSTALL/sbin:$PATH
設定防火牆
設定nimbus伺服器防火牆
-A INPUT -m state --state NEW -m tcp -p tcp --dport 2181 -j ACCEPT -A INPUT -m state --state NEW -m tcp -p tcp --dport 6627 -j ACCEPT -A INPUT -m state --state NEW -m tcp -p tcp --dport 6379 -j ACCEPT -A INPUT -m state --state NEW -m tcp -p tcp --dport 9099 -j ACCEPT特別注意這裡的6627埠一定要開啟,storm ui的nimbus summary可以看到此埠
設定supervisor伺服器防火牆
-A INPUT -m state --state NEW -m tcp -p tcp --dport 2181 -j ACCEPT
-A INPUT -m state --state NEW -m tcp -p tcp --dport 2888 -j ACCEPT
-A INPUT -m state --state NEW -m tcp -p tcp --dport 3888 -j ACCEPT
-A INPUT -m state --state NEW -m tcp -p tcp --dport 6700 -j ACCEPT
-A INPUT -m state --state NEW -m tcp -p tcp --dport 6701 -j ACCEPT
-A INPUT -m state --state NEW -m tcp -p tcp --dport 6702 -j ACCEPT
-A INPUT -m state --state NEW -m tcp -p tcp --dport 6703 -j ACCEPT
-A INPUT -m state --state NEW -m tcp -p tcp --dport 8000 -j ACCEPT
-A INPUT -m state --state NEW -m tcp -p tcp --dport 9092 -j ACCEPT
啟動執行叢集環境按如下順序啟動叢集:
在三臺supervisor伺服器上啟動zookeeper
zkServer.sh start
在nimbus伺服器CentOS65App啟動nimbus和uistorm nimbus > /data/storm/nimbus.log 2>&1 &
storm ui > /data/storm/ui.log 2>&1 &
在三臺supervisor伺服器啟動supervisorstorm supervisor > /data/storm/supervisor.log 2>&1 &
在三臺supervisor伺服器啟動kafkakafka-server-start.sh /app/kafka_2.12-1.0.0/config/server.properties > /data/kafka/kafka.log 2>&1 &
啟動完成後在瀏覽器輸入以下地址進入storm ui
http://centos65app:9099/index.html
示例程式碼
程式碼親測可用,具體執行順序,請參考下載專案的README.md的[Order of execution]部分。
http://download.csdn.net/download/wender/10234046