Storm集群搭建
Storm是什么? 
          Storm是推ter开源的一个分布式的实时计算系统 
          使用场景: 
              数据的实时分析,持续计算,分布式RPC等等. 
              
          Storm特点:(Storm类似手扶电梯,不出故障就会一直运行. 
                      hadoop类似升降电梯,到达一定程度会停止) 
              分布式 
              可扩展 
              高可靠性 
              编程模型简单 
              高效实时 
              
          常用的类: 
              BaseRichSpout(消息生产者) 
              BaseBasicBolt(消息处理者) 
              TopologyBuilder(拓扑的构建器) 
              Config(配置) 
              StormSubmitter/LocalCluster(拓扑提交器)
Storm集群部署            
      Storm集群架构: 
      
          如图:
        在Storm的集群里面有两种节点:控制节点和工作节点。 
              控制节点上面运行一个叫Nimbus进程,Nimbus负责在集群里面
            分发代码,分配计算任务,并且监控状态。 
          每一个工作节点上面运行一个叫做Supervisor进程。 
              Supervisor负责监听从Nimbus分配给它执行的任务,
据此启动或停止执行任务的工作进程
        Nimbus和Supervisor之间的所有协调工作都是通过Zookeeper集群完成。 
          
      集群规划:(根据具体需求规划) 
          linux主机名    Storm角色    Zookeeper 
          master         Nimubus      单节点zk 
          slave01        Supervisor    
          slave02        Supervisor 
      
      准备工作: 
          环境:centos6.4 
          软件: 
              jzmq-master 
              storm-0.8.2 
              zeromq-2.1.7 
              zookeeper-3.4.5 
          
      环境配置:(参见前几篇博客) 
          linux基本配置: 
              修改主机名 
              修改IP 
              修改主机和IP的映射关系 
              关闭防火墙 
              
      安装步骤: 
          1.安装jdk 
          2.搭建Zookeeper集群(这里我们只安装一个zk在主节点上) 
              解压 
              进入zk的conf目录下,cp zoo_sample.cfg zoo.cfg(修改一下名字) 
              其它的暂时都不变 
          3.安装Storm依赖(zeromq、jzmq、python) 
              3.1安装zeromq,然后进入到zeromq-2.1.7/目录下 
                  检测环境:./configure 
                           cd zeromq-2.1.7 
                           ./configure 
                  #编译可能会出错:
                configure: error: Unable to find a working C++ compiler 
                  #安装一下依赖的rpm包:libstdc++-devel gcc-c++ 
                  虚拟机可以上网的情况下:(建议使用此方法) 
                      yum install gcc-c++ 
                  虚拟机不能上网情况:
首先到
                http://mirrors.163.com/centos/6.4/os/x86_64/Packages/  
                      (下载的版本一定要和系统对应) 
                      rpm -i libstdc++-devel-4.4.7-3.el6.x86_64.rpm 
                      rpm -i gcc-c++-4.4.7-3.el6.x86_64.rpm 
                      rpm -i libuuid-devel-2.17.2-12.9.el6.x86_64.rpm 
                  然后运行./configure 
                          make(编译) 
                          make install(这个才彻底安装) 
                  3.2.编译安装JZMQ: 
                      cd jzmq 
                      执行./autogen.sh
                        (是为了让它产生配置文件,默认没有配置文件的) 
                          #报错:autogen.sh: error: could not find libtool. 
                                libtool is required to run autogen.sh. 
                            缺少libtool 
                      同样,可上网情况下 
                          yum install libtool(readhat企业版不会出现这些报错) 
                      或者手动安装 
                          rpm -i autoconf-2.63-5.1.el6.noarch.rpm 
                          rpm -i automake-1.11.1-4.el6.noarch.rpm 
                          rpm -i libtool-2.2.6-15.5.el6.x86_64.rpm 
                      ./configure 
                      make 
                      make install 
                  3.33.编译安装Python
                (先确定你系统自带的版本,如果是2.6.6或者之上的不需要安装) 
                      tar –zxvf Python-2.6.6.tgz 
                      cd Python-2.6.6 
                      ./configure 
                      make 
                      make install 
                  3.4安装storm 
                      修改storm.yaml配置文件(子节点上也得修改) 
                          修改zk对应的主机名 
                          修改主节点对应的主机名 
                      PS:
3.41.Storm发行版本解压目录下有一个
                          conf/storm.yaml文件: 
                              用于配置Storm。默认配置在这里可以查看 
                            conf/storm.yaml中的 
                              配置选项将覆盖defaults.yaml中的默认配置。
以下配置选项是必须在
                            conf/storm.yaml中进行配置的: 
                                storm.zookeeper.servers: 
Storm集群使用的Zookeeper集群地址,
                                其格式如下: 
                                  storm.zookeeper.servers: 
                                    - "111.222.333.444" 
                                    - "555.666.777.888" 
                              如果Zookeeper集群使用的不是默认端口,
                            那么还需要storm.zookeeper.port选项。 
                          3.42storm.local.dir: Nimbus和Supervisor进程
                            用于存储少量状态, 
                              如jars、confs等的本地磁盘目录,
                            需要提前创建该目录并给以足够的访问权限。 
                              然后在storm.yaml中配置该目录,如: 
                                  storm.local.dir: "/usr/storm/workdir" 
                                  
                      分别启动三台机器 
                          master:到storm的bin目录下
                            ./storm nimbus > /dev/null 2>&1 & 
                          slave01:到storm的bin目录下
                            ./storm supervisor > ../logs/su.log 2>&1 & 
                          slave02:到storm的bin目录下 
                           ./storm supervisor > ../logs/su.log 2>&1 & 
                           (启动后台进程,并把正确和错误的信息输出到该文件中) 
                          在master上启动UI管理界面
                            ./storm ui > /dev/null 2>&1 & 
                              通过浏览器观察:(主节点的ip:8080) 
                                  观察集群的worker资源使用情况、
                                Topologies的运行状态等信息。 
          至此,Storm集群已经部署、配置完毕,可以向集群提交拓扑运行了
