1. 程式人生 > >搭建kafka2.12-1.0.0+storm1.1.1叢集

搭建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安裝配置

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
mkdir /data/zookeeper
touch /data/zookeeper/myid
echo {主機IP最後一節,如106} > /data/zookeeper/myid
#即/data/zookeeper/myid的內容為106、107、108之一,且三臺伺服器的myid內容不同。
三臺supervisor伺服器配置然後載入環境變數/etc/profile
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/kafka
mkdir /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/profile
export 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和ui
storm nimbus > /data/storm/nimbus.log 2>&1 &
storm ui > /data/storm/ui.log 2>&1 &
在三臺supervisor伺服器啟動supervisor
storm supervisor > /data/storm/supervisor.log 2>&1 &
在三臺supervisor伺服器啟動kafka
kafka-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