centos6.4 下storm-0.8.1 安装记录


本文记录了我在centos上安装了storm的过程,主要参考了https://github.com/nathanmarz/storm/wiki/Setting-up-a-Storm-cluster这篇文章,其中对里面说得不够详细的地方进行了一些补充

         namenode.hadoop2         192.168.1.230(nimbus)

         datanode1.hadoop2 192.168.1.231(supervisor)

         datanode2.hadoop2 192.168.1.232(supervisor)

         datanode3.hadoop2 192.168.1.233(supervisor)

         datanode4.hadoop2 192.168.1.234(supervisor)

 

该环境中已经安装好了hadoop2.2,其中namenode为hdfs的namenode节点和yarn的ResourceManager节点,这里作为storm的nimbus进程运行节点。其余四个分别为datanode节点和nodemanager节点,这里作为storm的supervisor进程运行节点。在namenode节点上安装了一个单机的zookeeper环境。每台机器上有用户storm,用户的home目录为/home/storm,storm的安装和运行都在该用户环境下。以此为基础,安装storm。


从后面的安装看,SSH免密码登陆不是必须的,为了方便在storm集群中同步文件,还是设置一下。

一般而言,我们需要在nimbus节点机器上将文件同步到supervisor节点上,也就是需要在nimbus节点上免密码登陆supervisor

在nimbus节点上执行如下命令生成ssh的私匙和公匙。

ssh-keygen -t rsa

全部回车,生成了id_rsa和id_rsa.pub文件

scp ~/.ssh/id_rsa.pub datanode1.hadoop2:~/.ssh/authorized_keys

scp ~/.ssh/id_rsa.pub datanode1.hadoop2:~/.ssh/authorized_keys

scp ~/.ssh/id_rsa.pub datanode1.hadoop2:~/.ssh/authorized_keys

scp ~/.ssh/id_rsa.pub datanode1.hadoop2:~/.ssh/authorized_keys

这时还需要输入用户口令才能同步过去。同步完了后就可以在nimbus节点上免密码登陆各个supervisor节点了。测试

ssh datanode1.hadoop2

如果不输入密码直接ssh到datanode1.hadoop2即表明成功。如果需要各个节点互相能够免密码登陆,则可以将在每台机器上都生成id_rsa.pub文件,并将其中的内容都拷贝到nimbus节点的.ssh/ authorized_keys文件中(包括nimbus节点自己的id_rsa.pub中的内容)然后通过scp同步到各个supervisor节点上去,则可以实现storm集群所有机器之间的免密码ssh登陆。我的storm集群的5个节点的authorized_keys文件内容如下所示

ssh-rsa AAAAB3NzaC1yc2EAAAABIwAAAQEAt+Oxg8rVRKwhjaYZrUxXOpXlZkBNhD99N5nDD7gps2nFGxMbb7IUIQL9Eo8q/+odx1v04iiJzLAWWx1KbfqjSFerZ5SPAAdTysvRzHwW+16EPjd0oCtdpNiur3lyAjIZ97Y7Roht0osuYYmbWgGhB4zVeurIU3AR4OL2Fmg/LiyzMi6acovoAohiGpXWx9RS//RoRsyjb1+u0+PzcgIIGschPBX2IpMkgEg1tA68mcy6Dnoe1tNILFRgCzPGPH3PauViKrKDAxD9rqXEK7gu9Xl7NVeGaKyhJhe7SDZWctRH0lzj8OFS0n3LbvgIWF/Ce07wC7aFZs9IyzSf+YG/KQ==storm@namenode.hadoop2

ssh-rsaAAAAB3NzaC1yc2EAAAABIwAAAQEAy1lXg+KVGy1LlEM/+5WbQIO9ubrtJF3ZokSAZwFUBTJ38FhUFGkY8EkmnisYKpe/wtCZxSTfn+i4w7JdOx5MZNuJ6N01A9SoOvqNYGYcj3A4RD9KzNoc5vihWRXIZubFdpQwTdryECFiGqQ318kq6ZqWGwgFYwRLceCmUmZN6oQ5DADX3fmLKcXQ8GNywlA7rvJmmtEYbDJCD1b+66hSICk6RTvFOxx/1o4+CoFDCMSMYqD1L/l8qJcDIe5RgSIXEVG4WorZoa9KMf+LJkWH143R+B8X+8qB2E89DoZ/+d4GmBt4w65xgZBm+UzOSG41kRNqETjJADX+qL7XDX0+Lw==storm@datanode1.hadoop2

ssh-rsaAAAAB3NzaC1yc2EAAAABIwAAAQEApH/8/XN2BhvInnKNezhpptt/EPpf2BlvoB0jgpHcCCikAoCu+zUBFw3PTYSmWBuOAApcj4aJq2Z7OG+XB0fk1jbkA80Ef574kIJQUxMB2fw6p9riWY0yERGgTm0o+duz1bGGiQtlvBK3mt8oiLIrPaGcqQafKoS23XwZ4zE759k1b8wngyUqBhycd2XDvDxsiM3NPuQSAaw73vgQkWurRHSOndipUayBD/6hRuzAnSa8DahHlsjD4VcZvb2OpWXUE2bOKwVZ5NsPjZgge9zlJVatA8nNbuJeDJ2+uHcry8mFnEzW9PkFvZmEOX/X4gPjgiTu7Gyx5m7IKKpLDZ993Q==storm@datanode2.hadoop2

ssh-rsaAAAAB3NzaC1yc2EAAAABIwAAAQEAsXl1tAEolnangnMfdSU21/yYei/Wl/vQel7Al65vm881+BHINOFoju48ADoB0Skjjmq3tLAUkstlKSsOA/itY1a8s970iNj4qcEIpVkhCMkiQe1hql20sLH/qmH88tQ6s0rlbX7aJ2jIvdxEWk0NKyyKJMueaqJQ0sR9D8NzZ5c69GkDAaI4cosabdWwW1qc4hOcVgGaeOi8sP8GifN0Zw2pGOoQTKjPENGxoqKqZUqCa1SXE2OiSWOr8cJVpBQspR/zsVA+5Pp0zX8U57iw9v8qOh7RVEP6/CFnHxGtsT2DKdbOzvLe7OPCzcIUDN61CxA2pSXR5x3+QShiiEnblQ==storm@datanode3.hadoop2

ssh-rsaAAAAB3NzaC1yc2EAAAABIwAAAQEAx6TR0phPI2YcCp1ThH5s/uMZAL+iZWu8zFx6RyNva1S7x0e8NL8Z+xo93EiVv9CEcrzYZSqDhvH9K90l/pEMUcm8rmr74bL4V4Ptyre9SidK3uUUbPf9uQLnThsts6yNLVk6/kFg2ozFx1hSg1fDTSKzd7ZHzwToL9qvPmjY93T3SEE2Cow3bfmwOHVu94h2oM5XSpQJtfTWXNL3/RSROqdKfDcRMgwNmFjitjU/1TBppxIHeGIcas0Rlzao0UPxCTmILGdM4WV9OQMUYMZkmnlACjRtV0LP3CY+p4kyZMw+thKzj24Sgwg69GpVnZZ7/oi5wJZzSsL3qmOUlv/5jw==storm@datanode4.hadoop2


根据官方文档,要求在每台机器下安装如下的依赖环境

1.    根据要求,必须安装此版本,其余版本不保证正确,如果用户遇到一些奇怪的问题,尝试降到2.1.4试试(吐槽)

2.   是ZeroMQ 的JAVA语言包。应该是用它来和ZeroMQ进行交互的

3.   既然官方文档严格说要求JAVA6,我就直接下载了该版本,没有花精力去验证JAVA7是否可以。

4.   python2.6.6,这个centos6.4上面默认安装的就是2.6.6。省了我这步(原来我还吐槽说CENTOS默认的python版本为啥是这个,原来是这个原因)

5.   unzip,因为storm的包是zip格式的,这个是用来解压用的

      将下载的zeromq-2.1.7.tar.gz、jzmq-master.zip、jdk-6u45-linux-i586.bin文件上传到要安装的nodename机器上。

3.1设置JAVA_HOME

在storm用户下执行上传的jdk-6u45-linux-i586.bin命令解压

./jdk-6u45-linux-i586.bin

这个过程将在/home/storm目录下生成jdk1.6.0_45目录,包含了JAVA1.6的开发和运行环境。编辑/home/storm/.bash_profile,在里面加入如下的行

JAVA_HOME=/home/storm/jdk1.6.0_45

export JAVA_HOME

  

修改的JAVA_HOME需要退出重新登录才能生效。不设置该环境变量,将在安装JZMQ的./configure过程中出现错误提示


3.2安装ZeroMQ 2.1.7

3.2.1安装c

ZeroMQ安装是C和C++源代码编译安装的,所以首先需要确认是否安装了默认的c和c++编译环境。在centos上安装c和c++编译环境在root下输入如下命令行。该命令需要联网下载相关安装依赖包,所以确保你的机器可以联网。

yum install gcc

yum install g++

 

如果已经安装了,执行上述命令也没有问题。


3.2.2安装uuid-dev

UUID含义是通用唯一识别码 (Universally Unique Identifier),这 是一个软件建构的标准,目的是让分布式系统中的所有元素,都能有唯一的辨识资讯,而不需要透过中央控制端来做辨识资讯的指定。安装该组件在root用户下输入如下的命令行。同样输入命令前需要保证机器可以访问互联网。

yum install uuid*

yum install e2fsprogs*

yum install libuuid*


3.2.3将storm加入到sudo组中

在root用户下编辑文件/etc/sudoers,在其中加入一行storm ALL=(ALL)         ALL,保存退出


3.2.4安装ZeroMQ2.1.7

切换到storm用户,进入路径/home/storm。输入如下命令挤压zeromq-2.1.7.tar.gz包

gzip –d zeromq-2.1.7.tar.gz

tar –xvf zeromq-2.1.7.tar

进入目录zeromq-2.1.7执行如下命令

./configure

make

sudo make install

 

其中要注意执行./configure的提示,如果环境方面有什么问题,将会在提示中给出。另外执行make install之前必须要加sudo 前缀,让临时具备超级用户的权限


3.3安装JZMQ


在storm用户下执行

./autogen.sh

./configure

make

sudo make install

 

其中执行./autogen.sh时,我的环境下提示如下

autogen.sh: error: could not find libtool.  libtool is required to run autogen.sh.

切换回root,执行命令

yum install libtool

解决问题


3.4安装unzip

在root用户下下执行命令行

    yum install unzip


4.安装storm

首先在nimbus节点上安装

4.1安装

切换到用户storm下

下载版本的zip包

执行命令行

unzip storm-0.8.1.zip

在/home/storm目录下生成storm-0.8.1目录,其中包含storm包的文件

mkdir stormlocale

该目录用来配置后面的storm临时存储文件目录

4.2配置

编辑 storm-0.8.1/etc/storm.yaml文件,增加如下内容

storm.zookeeper.servers:

     -"namenode.hadoop2"

#配置zookeeper路径,如果是多个增加多行的- "hostname"

storm.local.dir: "/home/storm/stormlocale"

#storm存储临时文件的地方

nimbus.host: "namenode.hadoop2"

#运行nimbus角色的主机名

supervisor.slots.ports:

    - 6700

    - 6701

    - 6702

- 6703

#可选的运行supervisor角色的主机上worker的个数及端口,这是默认配置,如果需要增减可运行的worker的个数及修改默认的端口,修改这个配置


4.3同步

执行如下命令从nimbus节点奖配置好的storm-0.8.1安装包同步到各个superivsor

scp -r ~/storm-0.8.1datanode1.hadoop2:~/

scp -r ~/storm-0.8.1datanode2.hadoop2:~/

scp -r ~/storm-0.8.1datanode3.hadoop2:~/

scp -r ~/storm-0.8.1datanode4.hadoop2:~/

以上命令将storm-0.8.1目录从nimbus节点上同步到其余的四个supervisor节点上。为了同步环境变量(设置的PATH,JAVA_HOME)还可以执行下面的语句

scp ~/.bash_profiledatanode1.hadoop2:~/

scp ~/.bash_profiledatanode2.hadoop2:~/

scp ~/.bash_profiledatanode3.hadoop2:~/

scp ~/.bash_profiledatanode4.hadoop2:~/

这个实际应该在一开始在.bash_profile文件中设置好JAVA_HOME以及将/home/storm/ storm-0.8.1/bin目录设置为PATH路径后即可执行。

4.4运行

在nimbus节点上(及namenode.hadoop主机)上执行如下命令启动nimbus进程

nohup stormnimbus &

在supervios节点上(即datanode1.hadoop2、datanode2.hadoop2 datanode3.hadoop2datanode4.hadoop2)执行如下命令启动supervisor进程

nohup storm supervisor&

在nimbus节点上执行如下命令启动storm的web ui进程

nohup storm UI &

这时,就可以在浏览器输入http://namenode.hadoop2:8080/来打开storm的web ui界面,如下所示


当然,要你的机器识别namenode.hadoop2,需要你设置hosts配置,在windows7 64位版本中是C:\Windows\System32\drivers\etc\hosts文件,我增加了如下的几行

192.168.1.230   namenode.hadoop2

192.168.1.231   datanode1.hadoop2

192.168.1.232   datanode2.hadoop2

192.168.1.233   datanode3.hadoop2

192.168.1.234   datanode4.hadoop2

 

至此,storm-0.8.1版本的storm就安装完毕,可以在上面写个小程序来测试一下了,下一篇继续讲这个方面的内容。


相关内容