storm安装集群配置详情

storm安装集群配置详情
  
1 把ip和hostname绑定
    编辑文件vi /etc/hosts  增加一行记录 192.168.41.100 node1-zookeeper
    每台机器都配置一个域名
   192.168.41.99   node0-zookeeper
   192.168.41.100 node1-zookeeper
   192.168.41.101 node2-zookeeper
验证:ping node1-zookeeper  

2 查看防火墙状态:
    执行命令service iptables stop
       验证:service iptables status
进入防火墙内容:vim /etc/inittab

3 关闭防护墙的自动运行
    执行命令chkconfig iptables off
    验证:chkconfig --list | grep iptables  或 chkconfig iptables --list

========================================================
1.上传jdk安装包
2.解压安装
chmod u+x jdk-6u45-linux-x64.bin
./jdk-6u45-linux-x64.bin
安装目录: /usr/java/jdk1.8.0_51
vim /etc/profile在文件最后面添加:
export JAVA_HOME=/usr/java/ jdk1.8.0_51
export CLASSPATH=$JAVA_HOME/lib
export PATH=$PATH:$JAVA_HOME/bin

更新配置:
source /etc/profile
验证查看版本号: java -version
-----------------------------------------------

1.编译安装ZMQ:
tar -zxvf zeromq-2.1.7.tar.gz -C /cloud/
cd zeromq-2.1.7下操作:
开始编译命令是: ./configure
#编译可能会出错:configure: error: Unable to find a working C++ compiler
#安装一下依赖的rpm包:libstdc++-devel gcc-c++ 
可以上网的情况下(自动下载需要的文件): yum install gcc-c++

或者手动安装:(安装对应版本64位还是32位)
rpm -ivh libstdc++-devel-4.4.7-3.el6.x86_64.rpm
rpm -ivh gcc-c++-4.4.7-3.el6.x86_64.rpm
rpm -ivh libuuid-devel-2.17.2-12.9.el6.x86_64.rpm

cd zeromq-2.1.7下操作 ./configure
进行编译:make
编译安装:make install



2.编译安装JZMQ(是java调用c++的一个桥梁):
查看帮助文档:man unzip
解压:unzip jzmq-master.zip -d /cloud/

cd /cloud/jzmq-master/下操作:
运行脚本: ./autogen.sh
#报错:autogen.sh: error: could not find libtool. libtool is required to run autogen.sh. 缺少libtool包
可以上网的情况下(自动下载需要的文件): yum install libtool*
或者手动安装:(安装对应版本64位还是32位)
rpm -ivh autoconf-2.63-5.1.el6.noarch.rpm 
rpm -ivh automake-1.11.1-4.el6.noarch.rpm 
rpm -ivh libtool-2.2.6-15.5.el6.x86_64.rpm

cd /cloud/jzmq-master/下操作: 
递归查看文件: ll
运行脚本: ./autogen.sh
运行脚本后产生configure文件,开始演示运行编辑脚本: ./configure
进行编译:make
编译安装:make install

3.编译安装Python(派神)
查看是否已安装:which python 
查看python的版本号: python -v
tar -xvf Python-2.6.9.tgz
cd Python-2.6.9
./configure
make
make install

下载并解压Storm发布版本
下一步,需要在Nimbus和Supervisor机器上安装Storm发行版本。
1. 下载Storm发行版本
wget https://dl.dropbox.com/u/133901206/storm-0.8.2.zip
2. 解压到安装目录下:unzip storm-0.8.1.zip -d /cloud/

只安装在主节点上:tar -zxvf zookeeper-3.4.5.tar.gz -C /cloud/

cd /cloud/zookeeper/conf/下操作:
3.修改配置
在$ZOOKEEPER_HOME/conf下面执行
cp zoo_sample.cfg zoo.cfg
vim zoo.cfg
# The number of milliseconds of each tick
tickTime=2000
# The number of ticks that the initial 
# synchronization phase can take
initLimit=10
# The number of ticks that can pass between 
# sending a request and getting an acknowledgement
syncLimit=5
# the directory where the snapshot is stored.
# do not use /tmp for storage, /tmp here is just 
# example sakes.
dataDir=/tmp/zookeeper
# the port at which the clients will connect
clientPort=2181
# the maximum number of client connections.
# increase this if you need to handle more clients
#maxClientCnxns=60
#
# Be sure to read the maintenance section of the 
# administrator guide before turning on autopurge.
#
# http://zookeeper.apache.org/doc/current/zookeeperAdmin.html#sc_maintenance
#
# The number of snapshots to retain in dataDir
#autopurge.snapRetainCount=3
# Purge task interval in hours
# Set to "0" to disable auto purge feature
#autopurge.purgeInterval=1
server.0=node0-zookeeper:8880:7770
server.1=node1-zookeeper:8880:7770
server.2=node2-zookeeper:8880:7770
echo "0" >/tmp/zookeeper/myid  对应每台机器192.168.41.99
echo "1" > /tmp/zookeeper/myid 对应每台机器192.168.41.100
echo "2" >/tmp/zookeeper/myid 对应每台机器192.168.41.101

将配置好的zk拷贝到其他节点
4.启动zk集群
在各个节点上分别运行命令启动zk
./zkServer.sh start
查看zk状态
./zkServer.sh status

同步各个模块
rsync -avz zookeeper root@192.168.41.99:/root/
rsync -avz zookeeper root@192.168.41.101:/root/
--------------------------------------------------------
5.配置storm和zookeeper的环境变量问题
之后执行命令:source /etc/profile

cd /cloud/zookeeper/bin/操作:
启动: ./zkServer.sh start  (或 zkServer.sh start)

cd /cloud/storm/操作:
ls -l 
cd conf/下操作:
递归查看文件: ll
修改storm.yaml配置文件: vim storm.yaml
Storm发行版本解压目录下有一个conf/storm.yaml文件,用于配置Storm。
默认配置在这里可以查看。conf/storm.yaml中的配置选项将覆盖defaults.yaml中的默认配置。

-----------------------------------------
以下配置选项是必须在conf/storm.yaml中进行配置的:#每个":"后 都有空格,注意啦,否则会报错
storm.zookeeper.servers:
     - " node0-zookeeper"
     - " node1-zookeeper"
     - " node2-zookeeper"

storm.zookeeper.port: 2181
nimbus.host: " node1-zookeeper
storm.cluster.mode: "distributed"
storm.local.dir: "/usr/work/storm-0.8.2/tmp"
ui.port: 8081
supervisor.slots.ports:
 - 6700
 - 6701
 - 6702
 - 6703 
java.library.path:
  "/usr/work/jzmq-master/lib:/usr/work/zeromq-2.1.7/lib:/usr/local/lib:/opt/local/lib:/usr/lib"
orker.childopts: "-Xmx1024m -Xss256k"

-----------------------------------------
1.1) storm.local.dir: Nimbus和Supervisor进程用于存储少量状态,如jars、confs等的本地磁盘目录,需要提前创建该目录并给

以足够的访问权限。
然后在storm.yaml中配置该目录,如:storm.local.dir: "/usr/storm/workdir"
1.2) java.library.path: Storm使用的本地库(ZMQ和JZMQ)加载路径,默认为"/usr/local/lib:/opt/local/lib:/usr/lib",
一般来说ZMQ和JZMQ默认安装在/usr/local/lib 下,因此不需要配置即可。
1.3) nimbus.host: Storm集群Nimbus机器地址,各个Supervisor工作节点需要知道哪个机器是Nimbus,以便下载Topologies的jars、confs等文件,如:nimbus.host: "master100"     #配置主节点的地址

2 ) supervisor.slots.ports: 对于每个Supervisor工作节点,需要配置该工作节点可以运行的worker数量。每个worker占用一个单独的端口用于接收消息,该配置选项即用于定义哪些端口是可被worker使用的。默认情况下,每个节点上可运行4个workers,分别在6700、6701、6702和6703 端口,如:
supervisor.slots.ports:
    - 6700
    - 6701
    - 6702
    - 6703 (#利用空格键跳行,不要使用Tab键)
    - 6704
    - 6705
    - 6706
    - 6707


说明:
storm.local.dir表示storm需要用到的本地目录。
nimbus.host表示那一台机器是master机器,即nimbus。
storm.zookeeper.servers表示哪几台机器是zookeeper服务器。
storm.zookeeper.port表示zookeeper的端口号,这里一定要与zookeeper配置的端口号一致,否则会出现通信错误,切记切记。当然你也可以配superevisor.slot.port,supervisor.slots.ports表示supervisor节点的槽数,就是最多能跑几个worker进程(每个sprout或bolt默认只启动一个worker,但是可以通过conf修改成多个)。
好了,storm集群就配置好了。
-------------------------------------------
修改环境变量是:
export JAVA_HOME=/usr/java/jdk1.6.0_45
export ZOOKEEPER_HOME=/usr/work/zookeeper-3.4.5
export STORM_HOME=/usr/work/storm-0.8.2

export CLASSPATH=$JAVA_HOME/bin
export PATH=$PATH:$JAVA_HOME/bin:$ZOOKEEPER_HOME/bin:$STORM_HOME/bin
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/work/jzmq-master/lib:/usr/work/zeromq-2.1.7/lib

之后执行命令:source /etc/profile
------------------------------------------------

6. 启动Storm各个后台进程
最后一步,启动Storm的所有后台进程。和Zookeeper一样,Storm也是快速失败(fail-fast)的系统,这样Storm才能在任意时刻被停止,并且当进程重启后被正确地恢复执行。这也是为什么Storm不在进程内保存状态的原因,即使Nimbus或Supervisors被重启,运行中的Topologies不会受到影响。

★☆★以下是启动Storm各个后台进程的方式:★☆★
cd ../storm/bin/下操作:启动: ./storm nimbus
查看进程:jps 如果没有就重启一个命令行,source /etc/profile 在jps 即可查看到进程nimbus

☆Nimbus: 在Storm主控节点上运行"命令是: ./storm nimbus >/dev/null 2>&1 & 
#启动Nimbus后台程序,并放到后台执行;

☆Supervisor: 在Storm各个工作节点上运行"命令是: ./storm supervisor >/dev/null 2>&1 &
#启动Supervisor后台程序,并放到后台执行;

★UI: 在Storm主控节点上运行"命令是: ./storm ui >/dev/null 2>&1 &"  
   (解析:dev启动一个记录日子文件,名为null, 2是标准输出,&1是错误输出, &结束)
#启动UI后台程序,并放到后台执行,进程名是core,启动后可以通过监控网页访问: http://192.168.80.100:18080
                                                     或  http://master100:80801
                    观察集群的worker资源使用情况、Topologies的运行状态等信息。

注意事项:
Storm后台进程被启动后,将在Storm安装部署目录下的logs/子目录下生成各个进程的日志文件。
经测试,Storm UI必须和Storm Nimbus部署在同一台机器上,否则UI无法正常工作,因为UI进程会检查本机是否存在Nimbus链接。
为了方便使用,可以将bin/storm加入到系统环境变量中。
至此,Storm集群已经部署、配置完毕,可以向集群提交拓扑运行了。

3. 向集群提交任务
1)启动Storm Topology:
执行jar包:
storm jar allmycode.jar org.me.MyTopology arg1 arg2 arg3
其中,allmycode.jar是包含Topology实现代码的jar包,org.me.MyTopology的main方法是Topology的入口,arg1、arg2和arg3为org.me.MyTopology执行时需要传入的参数。

2)停止Storm Topology:
storm kill {toponame}
其中,{toponame}为Topology提交到Storm集群时指定的Topology任务名称。


现在准备启动strom集群:
在主节点hostA上启动:
# storm nimbus &
# storm supervisor &
# storm ui &

通过网页查看:http://192.168.41.100:8081
2014年03月30日 - ♂.≮伟≯ - 青蛙教室 之 青春代码
 见此图   OK  大功告成!!!

总结: 其中一台子节点进程supervisor 和worker 死掉了之后, 会被主节点来从新分配任务到另外的子节点启动来运行执行任务,这就是storm的高可靠性.

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值