storm學習之集羣搭建

1.Storm的集羣搭建及配置

搭建Storm集羣所需要的組件:
  1. Storm1.1.1 wget http://mirror.bit.edu.cn/apache/storm/apache-storm-1.1.1/apache-storm-1.1.1.tar.gz;
  2. JDK1.7+;
  3. zookeepr wget http://mirror.bit.edu.cn/apache/zookeeper/zookeeper-3.4.11/zookeeper-3.4.11.tar.gz;
  4. supervisor(進程管理器,也可以不用);
JDK安裝:
  1. 解壓jdk後,配置環境變量,vim /etc/profile;
  2. 在profile腳本最後添加jdk環境變量配置,我的jdk解壓在/opt/app下:
    export JAVA_HOME=/opt/app/jdk1.8.0_161
    export CLASSPATH=.:$JAVA_HOME/jre/lib/rt.jar:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
    export PATH=$PATH:$JAVA_HOME/bin
  3. 環境變量生效,source /etc/profile;
zookeeper集羣安裝:
  1. 解壓zk後,進入zk配 /opt/app/zookeeper-3.4.11/conf,將 zoo_sample.cfg修改爲zoo.cfg,配置zk,
    tickTime=2000                          #時間單元,各時間範圍*該值
    initLimit=10         #follower節點啓動時從leader同步數據時間限制*tickTime
    syncLimit=5                            #leader向follower發送心跳,follower響應心跳的時間
    dataDir=/opt/app/zk_storage/data       #zk數據存儲目錄
    dataLogDir=/opt/app/zk_storage/logs    #zk日誌存儲目錄
    clientPort=2181                      
    autopurge.snapRetainCount=10           #自動清理事物日誌和快照需保留的數量
    autopurge.purgeInterval=24             #與上面的搭配使用,清理的頻率,單位小時
    server.1=ybin.test1:2888:3888          #集羣節點配置
    server.2=ybin.test2:2888:3888
  2. 在dataDir指定的目錄下創建myid文件,server.1的就寫入1,server.2的節點對應myid文件寫入2;
  3. vim /etc/hosts配置host,ybin.test2和ybin.test2分別對應兩個節點的ip;
  4. 配置防火牆端口暴露(自己玩可關閉防火牆),vim /etc/sysconfig/iptables:
    -A INPUT -p tcp -m state --state NEW -m tcp --dport 2181 -j ACCEPT
    -A INPUT -p tcp -m state --state NEW -m tcp --dport 2888 -j ACCEPT
    -A INPUT -p tcp -m state --state NEW -m tcp --dport 3888 -j ACCEPT
    重啓防火牆service /etc/sysconfig/iptables restart;
  5. 分別啓動兩個節點的zk,/opt/app/zookeeper-3.4.11/bin/zkServer.sh start,jps -m查看zk進程是否啓動;
  6. 進入zk控制檯:/opt/app/zookeeper-3.4.11/bin/zkCli.sh,看是否有節點一直重連,如果有需確保各zk端口在防火牆中是打開的,zkCli.sh是zk的客戶端;
storm集羣安裝及配置
  1. 解壓storm後,進入storm的conf, vim storm.yml,配置基礎信息;
  2. storm.zookeeper.servers:
         - "ybin.test1"
         - "ybin.test2"
    nimbus.seeds: ["ybin.test1","ybin.test2"]        #nimbus節點的主從配置,storm會自己選舉主節點
    storm.zookeeper.port: 2181                       #zk端口 
    storm.zookeeper.root: "/storm_test"              #zk上storm的數據節點
    storm.local.dir: /opt/app/data/storm             #storm的數據存儲路徑
    storm.log.dir: /opt/app/logs/storm               #storm的日誌存儲路徑
    supervisor.slots.ports:                          #supervisor的端口,一個端口運行一個worker
         - 6700
         - 6701
         - 6702
         - 6703
    # 
    ui.port: 80                                      #storm ui的端口,默認8080 
    
  3. 各節點配置好後,且確保防火牆端口打開啓動storm;
  4. storm的啓動不像zk樣是守護進程的啓動形式,如果使用storm nimbus啓動後,退出ssh,storm的進程亦會退出,因此可以用nohup storm nimbus &的命令啓動,這種方式啓動後,如果storm的進程意外死掉,是不能自動重啓的,而用進程管理工具supervisor可以幫我們管理storm進程,storm進程意外死掉時,supervisor能重啓死掉的進程;
supervisor安裝及配置:
  1. supervisor是以python開發的,因此安裝supervisor需確保自己的虛擬機有python運行環境;
  2. 下載支持easy_install的setuptools工具包,wget --no-check-certificate https://bootstrap.pypa.io/ez_setup.py;
  3. easy_install supervisor ,supervisor安裝完成後會生成三個執行程序:supervisortd(啓動supervisor的管理命令)、supervisorctl(管理守護進程的客戶端)、echo_supervisord_conf(初始化配置文件的管理命令);
  4. 安裝之後,echo_supervisord_conf > /etc/supervisor/supervisord.conf,初始化supervisor配置文件
  5. 在 /etc/supervisor目錄下新建storm的目錄,並在改目錄下分別建storm-nimbus.ini,storm-supervisor.ini,storm-ui.ini  3個配置文件;
  6. 分別配置3個文件,還有其他配置網上可查:
    [program:storm-nimbus]                  #進程的名字
    command=/opt/app/apache-storm-1.1.1/bin/storm nimbus   #進程啓動腳本路徑
    autorestart=true                     #是否進程掛起時重啓
    user=root                         #用戶組,可不配默認root
    stdout_logfile=/opt/app/logs/supervisord/storm-nimbus.log #進程啓動日誌,默認在/tmp 目錄下
    
    [program:storm-supervisor]
    command=/opt/app/apache-storm-1.1.1/bin/storm supervisor
    autorestart=true
    
    [program:storm-ui]
    command=/opt/app/apache-storm-1.1.1/bin/storm ui
    autorestart=true
    stdout_logfile=/opt/app/logs/supervisord/storm-ui.log
  7. 配置supervisord.conf文件
    [inet_http_server]               ; supervisor web頁面配置,默認不開啓
    port=0.0.0.0:9001               ; web頁面ip地址
    username=ybin               ; 登陸用戶
    password=123               ; 密碼
    
    [include]
    files = /etc/supervisor/storm/*.ini      ;supervisor進程配置腳本引入路徑 
    
  8. 指定配置文件啓動,supervisord -c /etc/supervisor/supervisord.conf,supervisorctl status看進程啓動狀態:
    [root@zoo1 supervisord]# supervisorctl status
    storm-nimbus                     RUNNING   pid 7124, uptime 0:00:03
    storm-supervisor                 RUNNING   pid 7122, uptime 0:00:03
    storm-ui                         RUNNING   pid 7123, uptime 0:00:03
    
  9. kill 一個進程,看是否會立刻被拉起:
    [root@zoo1 supervisord]# supervisorctl status
    storm-nimbus                     RUNNING   pid 7124, uptime 0:00:03
    storm-supervisor                 RUNNING   pid 7122, uptime 0:00:03
    storm-ui                         RUNNING   pid 7123, uptime 0:00:03
    [root@zoo1 supervisord]# kill 7124
    [root@zoo1 supervisord]# supervisorctl status
    storm-nimbus                     RUNNING   pid 7237, uptime 0:00:03
    storm-supervisor                 RUNNING   pid 7122, uptime 0:00:17
    storm-ui                         RUNNING   pid 7123, uptime 0:00:17
  10. supervisorctl相關命令:
    supervisorctl update			配置文件改變,重新加載配置文件
    supervisorctl reload			修改配置後重啓supervisor,可用作重啓所以進程
    supervisorctl start 進程名		啓動某一個進程
    supervisorctl stop 進程名		停止某一個進程
    supervisorctl stop all  		停止所以進程
  11. 進入supervisor web頁面,也可管理各進程
驗證storm集羣
  1. 進入storm ui界面,storm集羣已經搭建完成,ybin.test2爲nimbus的leader:
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章