首页 > 代码库 > Storm集群搭建

Storm集群搭建

准备

jdk1.8.0_77

zeromq-4.1.4

Python-2.7.6

libsodium-1.0.11

jzmq

storm-0.9.1

zookeeper-3.4.6

我用的是三台ubutun系统的机器,分别是

 

   hostname                              Ip                                   
      node1 192.168.43.150                      
      slave1 192.168.43.130
      node2 192.168.43.151

 

 

 

开始安装

环境变量

 

  首先配置好环境变量,如下,是我/etc/profile下的内容:

[python] view plain copy
 技术分享技术分享
  1. # /etc/profile: system-wide .profile file for the Bourne shell (sh(1))  
  2. # and Bourne compatible shells (bash(1), ksh(1), ash(1), ...).  
  3.   
  4. if [ "$PS1" ]; then  
  5.   if [ "$BASH" ] && [ "$BASH" != "/bin/sh" ]; then  
  6.     # The file bash.bashrc already sets the default PS1.  
  7.     # PS1=‘\h:\w\$ ‘  
  8.     if [ -f /etc/bash.bashrc ]; then  
  9.       . /etc/bash.bashrc  
  10.     fi  
  11.   else  
  12.     if [ "`id -u`" -eq 0 ]; then  
  13.       PS1=‘# ‘  
  14.     else  
  15.       PS1=‘$ ‘  
  16.     fi  
  17.   fi  
  18. fi  
  19.   
  20. # The default umask is now handled by pam_umask.  
  21. # See pam_umask(8) and /etc/login.defs.  
  22.   
  23. if [ -d /etc/profile.d ]; then  
  24.   for i in /etc/profile.d/*.sh; do  
  25.     if [ -r $i ]; then  
  26.       . $i  
  27.     fi  
  28.   done  
  29.   unset i  
  30. fi  
  31.   
  32. export JAVA_HOME=/home/spark/opt/jdk1.8.0_77  
  33. export PYTHON_HOME=/home/spark/opt/python-2.7.9  
  34. export HADOOP_HOME=/home/spark/opt/hadoop-2.6.0  
  35. export SPARK_HOME=/home/spark/opt/spark-1.6.1-bin-hadoop2.6  
  36. export HBASE_HOME=/home/spark/opt/hbase-0.98  
  37. export ZOOK_HOME=/home/spark/opt/zookeeper-3.4.6  
  38. export HIVE_HOME=/home/spark/opt/hive  
  39. export SCALA_HOME=/home/spark/opt/scala-2.10.6  
  40. export NUTCH_HOME=/home/spark/opt/nutch-1.6  
  41. export MAHOUT_HOME=/home/spark/opt/mahout-0.9  
  42. export SQOOP_HOME=/home/spark/opt/sqoop-1.4.6  
  43. export FLUME_HOME=/home/spark/opt/flume-1.6.0  
  44. export KAFKA_HOME=/home/spark/opt/kafka  
  45. export MONGODB_HOME=/home/spark/opt/mongodb  
  46. export REDIS_HOME=/home/spark/opt/redis-3.2.1  
  47. export M2_HOME=/home/spark/opt/maven  
  48. export STORM_HOME=/home/spark/opt/storm-0.9.1  
  49. # set tomcat environment  
  50. export CATALINA_HOME=/home/spark/www/tomcat  
  51. export CATALINA_BASE=/home/spark/www/tomcat  
  52.   
  53. export PATH=$JAVA_HOME/bin:$KAFKA_HOME/bin:$PYTHON_HOME/python:$M2_HOME/bin:$FLUME_HOME/bin:$SCALA_HOME/bin:$HADOOP_HOME/bin:$SQOOP_HOME/bin:$SPARK_HOME/bin:$HBASE_HOME/bin:$ZOOK_HOME/bin:$HIVE_HOME/bin:$CATALINA_HOME/bin:$NUTCH_HOME/runtime/local/bin:$MAHOUT_HOME/bin:$MONGODB_HOME/bin:$REDIS_HOME/src:$STORM_HOME/bin:$PATH  
  54. export CLASSPATH=.:$CLASSPATH:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar:$HIVE_HOME/lib:$MAHOUT_HOME/lib  

 

  这样配置好以后咯文件的检索路径是没问题了,记得使用前要source /etc/profile一下。

配置zookeeper

  将下载好的zookeeper解压,进入到解压文件里,首先输入下面命令

 

[plain] view plain copy
 技术分享技术分享
  1. cp /home/spark/opt/zookeeper-3.4.6/conf/zoo_sample.cfg  /home/spark/opt/zookeeper-3.4.6/conf/zoo.cfg  

  接着编辑zoo.cfg文件,编辑内容如下:

 

 

[plain] view plain copy
 技术分享技术分享
  1. # The number of milliseconds of each tick  
  2. tickTime=2000  
  3. # The number of ticks that the initial   
  4. # synchronization phase can take  
  5. initLimit=10  
  6. # The number of ticks that can pass between   
  7. # sending a request and getting an acknowledgement  
  8. syncLimit=5  
  9. # the directory where the snapshot is stored.  
  10. # do not use /tmp for storage, /tmp here is just   
  11. # example sakes.  
  12. dataDir=/home/spark/opt/zookeeper-3.4.6/data  
  13. # the port at which the clients will connect  
  14. clientPort=2181  
  15. # the maximum number of client connections.  
  16. # increase this if you need to handle more clients  
  17. #maxClientCnxns=60  
  18. #  
  19. # Be sure to read the maintenance section of the   
  20. # administrator guide before turning on autopurge.  
  21. #  
  22. # http://zookeeper.apache.org/doc/current/zookeeperAdmin.html#sc_maintenance  
  23. #  
  24. # The number of snapshots to retain in dataDir  
  25. #autopurge.snapRetainCount=3  
  26. # Purge task interval in hours  
  27. # Set to "0" to disable auto purge feature  
  28. #autopurge.purgeInterval=1  
  29.   
  30. server.1=192.168.43.150:2888:3888  
  31. server.2=192.168.43.130:2888:3888  
  32. server.3=192.168.43.151:2888:3888  

  然后保存退出,接着要将上面你自己配置的文件目录创建出来,不然启动的时候会在日志里报找不到文件的错误,这里zookeeper锁的机制我就回头有时间再给大家写一个专门一片文章来详细介绍,这里主要是将他能够启动起来。

 

  创建完个文件之后给配置myid文件在dataDir目录下新建myid文件,打开并写入id号,id号即为zoo.cfg文件中server.后的数字, 如server.1=IP1:2888:3888即表示IP1机器中的myid号为1。接着将zookeeper文件分发到其他两个子节点机器上去,分别修改myid为2,3。

  接着进行启动测试。在三台机器上都输入下面命令:

 

[plain] view plain copy
 技术分享技术分享
  1. root>zkServer.sh start  
  2. root>jps  

如果jps之后出现QuorumPeerMain,三台机器都有的话说明zookeeper配置成功。

 

storm依赖

libtool

 

  下载地址:http://mirrors.ustc.edu.cn/gnu/libtool/

  我使用的是libtool-2.4.2.tar.gz 

 

[plain] view plain copy
 技术分享技术分享
  1. tar -xzvf libtool-2.4.2.tar.gz   
  2.            cd libtool-2.4.2  
  3.            ./configure --prefix=/usr/local  
  4.            make   
  5.            make instal  

  

 

 m4

    下载地址:http://ftp.gnu.org/gnu/m4/

     我下载的是:m4-1.4.17.tar.gz        

 

[plain] view plain copy
 技术分享技术分享
  1. tar -xzvf m4-1.4.17.tar.gz   
  2.            cd m4-1.4.17  
  3.            ./configure --prefix=/usr/local  
  4.            make   
  5.            make install  

 

 

    automake

      下载地址:http://ftp.gnu.org/gnu/automake/

       我下载的是:automake-1.14.tar.gz       

 

[plain] view plain copy
 技术分享技术分享
  1. tar xzvf automake-1.14.tar.gz  
  2.            cd automake-1.14  
  3.            ./configure --prefix=/usr/local  
  4.            make   
  5.            make install  

 

  autoconf

        下载地址:http://ftp.gnu.org/gnu/autoconf/

        我下载的是:autoconf-2.69.tar.gz  

 

[plain] view plain copy
 技术分享技术分享
  1. tar -xzvf autoconf-2.69.tar.gz  
  2.           cd autoconf-2.69  
  3.           ./configure --prefix=/usr/local  
  4.           make  
  5.           make install  

 

安装ZeroMQ

 

       跟上面打安装步骤类似,先是下载安装包,下载地址:http://download.zeromq.org/

       我使用的是最新版本的 zeromq-4.0.3.tar.gz   

 

[plain] view plain copy
 技术分享技术分享
  1. tar -xzvf zeromq-4.0.3.tar.gz    
  2. cd zeromq-4.0.3  
  3. <pre><span style="color:#0000ff;">sudo</span> ./configure --prefix=/usr CC=<span style="color:#800000;">"</span><span style="color:#800000;">gcc -m64</span><span style="color:#800000;">"</span> PKG_CONFIG_PATH=<span style="color:#800000;">"</span><span style="color:#800000;">/usr/lib64/pkgconfig</span><span style="color:#800000;">"</span> --libdir=/usr/lib64 && <span style="color:#0000ff;">sudo</span> <span style="color:#0000ff;">make</span> && <span style="color:#0000ff;">sudo</span> <span style="color:#0000ff;">make</span> <span style="color:#0000ff;">install</span>  

 

 

安装JZMQ

      下载地址:https://github.com/zeromq/jzmq

       直接下载.zip文件就可以了。我使用的是jzmq-master.zip

       unzip jzmq-master.zip

 

[plain] view plain copy
 技术分享技术分享
  1. unzip jzmq-master.zip  
  2. cd jzmq-master  
  3. ./autogen.sh  
  4. lt;pre name="code" class="plain"> ./configure --prefix=/usr/local  
  5. make  
  6. make install  

 

安装libsodium-1.0.11

 

[plain] view plain copy
 技术分享技术分享
  1. sudo tar zxf libsodium-1.0.11.tar.gz  
  2. cd libsodium-1.0.11  
  3. sudo ./configure CC="gcc -m64" --prefix=/usr --libdir=/usr/lib64 && sudo make && sudo make install  

上面的执行过程都必须在能够编译gcc的环境下进行。

 

Storm

 

1、Storm安装

 

http://mirrors.cnnic.cn/apache/incubator/storm/apache-storm-0.9.1-incubating/apache-storm-0.9.1-incubating.tar.gz

# tar xvzf apache-storm-0.9.1-incubating.tar.gz -C /usr/local

# rm -f apache-storm-0.9.1-incubating.tar.gz

# cd /usr/local

# mv apache-storm-0.9.1-incubating storm-0.9.1

# rm -f storm && ln -s storm-0.9.1 storm

 

# vim /etc/profile

export STORM_HOME=/usr/local/storm

export PATH=$PATH:$STORM_HOME/bin

 

# source /etc/profile

 

2、Storm配置

# mkdir -p /data/storm/{data,logs}

 

(1)、日志路径修改

# sed -i  ‘s#${storm.home}#/data/storm#g‘ /usr/local/storm/logback/cluster.xml

 

(2)、主配置

# vim /usr/local/storm/conf/storm.yaml

[plain] view plain copy
 技术分享技术分享
  1. drpc.servers:  
  2.   
  3.  - "192.168.43.150"  
  4.   
  5.  - "192.168.43.130"  
  6.   
  7.  - "192.168.43.151"  
  8.   
  9.   
  10. storm.zookeeper.servers:  
  11.   
  12. - "192.168.43.150"  
  13.   
  14. - "192.168.43.130"  
  15.   
  16. - "192.168.43.151"  
  17.   
  18.   
  19. storm.local.dir:"/data/storm/data"  
  20.   
  21.   
  22. nimbus.host:"192.168.43.150"  
  23.   
  24. nimbus.thrift.port: 6627  
  25.   
  26. nimbus.thrift.max_buffer_size:1048576  
  27.   
  28. nimbus.childopts:"-Xmx1024m"  
  29.   
  30. nimbus.task.timeout.secs:30  
  31.   
  32. nimbus.supervisor.timeout.secs:60  
  33.   
  34. nimbus.monitor.freq.secs:10  
  35.   
  36. nimbus.cleanup.inbox.freq.secs:600  
  37.   
  38. nimbus.inbox.jar.expiration.secs:3600  
  39.   
  40. nimbus.task.launch.secs:240  
  41.   
  42. nimbus.reassign: true  
  43.   
  44. nimbus.file.copy.expiration.secs:600  
  45.   
  46. nimbus.topology.validator:"backtype.storm.nimbus.DefaultTopologyValidator"  
  47.   
  48.   
  49. storm.zookeeper.port: 2181  
  50.   
  51. storm.zookeeper.root:"/data/storm/zkinfo"  
  52.   
  53. storm.cluster.mode:"distributed"  
  54.   
  55. storm.local.mode.zmq:false  
  56.   
  57.   
  58. ui.port: 8888  
  59.   
  60. ui.childopts:"-Xmx768m"  
  61.   
  62.   
  63. logviewer.port: 8000  
  64.   
  65. logviewer.childopts:"-Xmx128m"  
  66.   
  67. logviewer.appender.name:"A1"  
  68.   
  69.   
  70. supervisor.slots.ports:  
  71.   
  72.     - 6700  
  73.   
  74.     - 6701  
  75.   
  76.     - 6702  
  77.   
  78.     - 6703  
  79.   
  80.   
  81. supervisor.childopts:"-Xmx1024m"  
  82.   
  83. supervisor.worker.start.timeout.secs:240  
  84.   
  85. supervisor.worker.timeout.secs:30  
  86.   
  87. supervisor.monitor.frequency.secs:3  
  88.   
  89. supervisor.heartbeat.frequency.secs:5  
  90.   
  91. supervisor.enable: true  
  92.   
  93.   
  94. worker.childopts:"-Xmx2048m"  
  95.   
  96. topology.max.spout.pending:5000  
  97.   
  98.   
  99. storm.zookeeper.session.timeout:20  
  100.   
  101. storm.zookeeper.connection.timeout:10  
  102.   
  103. storm.zookeeper.retry.times:10  
  104.   
  105. storm.zookeeper.retry.interval:30  
  106.   
  107. storm.zookeeper.retry.intervalceiling.millis:30000  
  108.   
  109.   
  110. storm.thrift.transport:"backtype.storm.security.auth.SimpleTransportPlugin"  
  111.   
  112. storm.messaging.transport:"backtype.storm.messaging.netty.Context"  
  113.   
  114. storm.messaging.netty.server_worker_threads:1  
  115.   
  116. storm.messaging.netty.client_worker_threads:1  
  117.   
  118. storm.messaging.netty.buffer_size:5242880  
  119.   
  120. storm.messaging.netty.max_retries:100  
  121.   
  122. storm.messaging.netty.max_wait_ms:1000  
  123.   
  124. storm.messaging.netty.min_wait_ms:100  
  125.   
  126. storm.messaging.netty.transfer.batch.size:262144  
  127.   
  128. storm.messaging.netty.flush.check.interval.ms:10  



3、服务启动

(1)、Nimbus节点

# nohup storm/bin/storm nimbus >/dev/null 2>&1 &

# nohup storm/bin/storm ui >/dev/null 2>&1 &

 

(2)、Supervisor节点

# nohup storm/bin/storm supervisor >/dev/null 2>&1 &

# nohup storm/bin/storm logviewer >/dev/null 2>&1 &

 

【注意】

如果启动不了,需要查看一下在“/etc/hosts”里,是否设置了主机名

启动成功后会看见如下几个进程

技术分享

 

ui启动成功看上面进行是否有core这个进程,接着在火狐浏览器上输入node1:8888,出出现如下界面说明配置成功:

技术分享

 

Storm集群搭建