Storm集群安装配置详细方法

Storm-0.10.0 集群安装和配置

        最近要做毕业设计,需要用到storm流式计算架构,工欲善其事必先利其器,第一步当然是配置环境,借鉴师姐的总结加上自己在实战中的理解,总结出此步骤,如果有错误和遗漏请通过 379226749@qq.com 交流指正,谢谢!

1. 所需的安装包和版本

安装在home的storm下,路径均为 /home/qj/storm/

2.     创建Ubuntu14.04 LTS虚拟机

虚拟机OS:ubuntu-14.04.2-desktop-amd64

(下载地址:http://www.ubuntu.com/download/desktop)

磁盘:100G

内存:2G

CPU:2个

选择的是第二种安装方式,自动安装vmwaretools,比较简单

如果需要自动分区应该选择第三个



(1)   激活root账户

Ubuntu14.04安装完成后,系统默认的Root账号是关闭的。这主要是为了保护系统的安全性,但有些时候为了安装软件或进行其它操作时需要获得root权限,就得使用root账号

命令:

sudopasswd root

若要切换到root:  sudo root

若要退出到一般用户:su用户名

(2)   安装搜狗中文输入法

sudoapt-get install aptitude

sudoaptitude install fcitx

安装后右上角system settings  -->  Language Support -->  输入密码后安装组件 --> 最下面选择fcitx --> 注销

右上角出现键盘标志  

进入浏览器,下载搜狗Linux版,双击.deb文件,输入密码安装,注销,点击键盘标志,出现搜狗即为成功

3.     集群节点

配置七台主机:1台nimbus主节点、3台supervisor工作节点、3台zookeeper集群节点。注意,ip地址应该按照自己的需求修改,在原来的网段,只要没有被占用,就可以设置,查询命令:nm-tool

主机名(节点)

IP地址

内存(GB)

VCPU

()

硬盘(GB)

节点运行进程

Nimbus

192.168.200.21

2

2

100

Nimbus、DRPC

Supervisor1

192.168.200.22

2

2

100

Supervisor、Worker

Supervisor2

192.168.200.23

2

2

100

Supervisor、Worker

Supervisor3

192.168.200.24

2

2

100

Supervisor、Worker

Zookeeper1

192.168.200.25

2

2

100

Leader/Follower

Zookeeper2

192.168.200.26

2

2

100

Follower/ Leader

Zookeeper3

192.168.200.27

2

2

100

Follower/ Leader(zookeeper集群中只有一个Leader)

           













克隆七台主机,修改每台主机的主机名、hosts文件,为每台主机配置静态IP地址、设置SSH免秘钥登录,

(1)   修改主机名字

七台分别为:nimbus、supervisor1~supervisor3、zookeeper1~zookeeper3。

hostname     //查看主机名

sudo vi /etc/hostname

linux vi操作:x 删除原来的主机名, 点insert 输入新主机名, esc 之后,:wq

保存之后退出

修改完之后需要注销,否则hosts文件无法打开

(2)   配置hosts

sudo gedit /etc/hosts

 

127.0.0.1         localhost

#127.0.1.1       nimbus

192.168.200.21  nimbus

192.168.200.22 supervisor1

192.168.200.23 supervisor2

192.168.200.24 supervisor3

192.168.200.25 zookeeper1

192.168.200.26 zookeeper2

192.168.200.27 zookeeper3

 

# The following lines are desirable for IPv6 capable hosts

::1     ip6-localhostip6-loopback

fe00::0 ip6-localnet

ff00::0 ip6-mcastprefix

ff02::1 ip6-allnodes

ff02::2 ip6-allrouters

注意不要忘了第二行的#,注释掉一个地址

(3)   配置网络

点edit connections

 

          配置之后有可能不能马上上网,可以尝试重启,或者重连,等待片刻   

(4)   ssh无密码登陆

         Storm集群内节点间发送命令时需要通过ssh进行发送,用户不希望每发送一次命令就输入一次密码,因此需要实现节点间的SSH免秘钥登录。

$ sudo apt-get install ssh

ssh-keygen –t rsa  // 一路回车就阔以了

第一次时:

scp ~/.ssh/id_rsa.pub qj@192.168.200.22:~/.ssh/authorized_keys

后面:

scp ~/.ssh/id_rsa.pub qj@192.168.200.23:~/.ssh/nim_key  //nim_key是新建的文件,之后追加到authorized_keys

cat ~/.ssh/nim_key >> ~/.ssh/authorized_keys

A若想无密码访问B,就需要把公钥发送给B,B把A发来的公钥添加到自己的授权文件里。

 

有时会出现ssh登录不上的问题,这里有几种解决方案可供参考:

①        查看集群节点的IP地址是否有冲突

本人在实验室服务器上为自己的Storm集群虚拟机配置静态IP地址时,没有询问其他人IP地址的占用情况,结果导致个人集群某节点的IP地址与其他机器冲突。修改后正常登陆ssh

②        关闭Ubuntu14.04的防火墙

root@XXX:~# sudo ufw disable

防火墙在系统启动时自动禁用

③        Ubuntu系统上安装、启动sshd服务

sudo apt-get install openssh-server

sudo /etc/init.d/ssh restart 

④        ssh还不能登录上,就修改sshd的默认配置,即ssh出现permission denied (publickey)问题:

修改/etc/ssh/sshd-config文件,将其中的PermitRootLogin no修改为yes,PubkeyAuthenticationyes修改为no,AuthorizedKeysFile .ssh/authorized_keys前面加上#屏蔽掉,PasswordAuthenticationno修改为yes就可以了。

(5)   安装JDK

下载jdk1.7.0压缩包到虚拟机的/home/storm文件夹下,jdk下载官网:http://www.oracle.com/technetwork/java/javase/downloads/index.html;这里下载jdk-1.7.0_80(http://www.oracle.com/technetwork/java/javase/downloads/java-archive-downloads-javase7-521261.html#jdk-7u80-oth-JPR)

找到压缩包所在目录

tar –zxvf jdk-7u80-linux-x64.tar.gz

sudo gedit /etc/profile         //编辑profile文件

if [ -d /etc/profile.d ]; then

  for i in/etc/profile.d/*.sh; do

    if [ -r $i ]; then

      . $i

    fi

  done

 

  # Java Environment Path

  export JAVA_HOME=/home/qj/storm/jdk1.7.0_80

  export PATH=$PATH:$JAVA_HOME/bin

 

  unset i

fi

 

然后,使/etc/profile 文件生效,在终端输入:

        source/etc/profile

最后,在终端使用java –version命令测试Java是否可以正常运行,如输出JDK的版本信息,则安装成功。

 

4.     搭建zookeeper集群

Zookeeper是针对分布式应用的高性能协调服务,是高效可靠的协同工作系统,提供的功能包括配置维护、名字服务、分布式同步、组服务等。在IP地址为192.168.1.75~77的3台主机上搭建zookeeper-3.4.6集群,zookeeper官网:http://zookeeper.apache.org/。

首先,先部署zookeeper集群的第一个节点,部署完成后将zookeeper文件和config配置文件拷贝到其他zookeeper集群节点即可(保持一致)。

(1)  单节点下载及安装zookeeper

在终端进入storm用户,输入Linux命令:

cd/home/storm                //进入/home/storm文件夹

wgethttp://mirrors.cnnic.cn/apache/zookeeper/zookeeper-3.4.6/zookeeper-3.4.6.tar.gz                          //在线下载zookeeper

tar–zxvf zookeeper-3.4.6.tar.gz        //解压文件到当前目录

(2)配置zoo.cfg文件

  到zookeeper目录下 sudo gedit conf/zoo.cfg

内容如下:

tickTime=2000

dataDir=/home/qj/storm/zookeeper-3.4.6/data

dateLogDir=/home/qj/storm/zookeeper-3.4.6/logs

clientPort=2181

initLimit=5

syncLimit=2

server.1=zookeeper1:2888:3888

server.2=zookeeper2:2888:3888

server.3=zookeeper3:2888:3888

其中,dataDir指定Zookeeper的数据文件目录;其中server.id=host:port:port,id是为每个Zookeeper节点的编号,保存在dataDir目录下的myid文件中,zoo1~zoo3表示各个Zookeeper节点的hostname,第一个port是用于连接leader的端口,第二个port是用于leader选举的端口。

(3)新建data和logs文件夹

    mkdir /home/qj/storm/zookeeper-3.4.6/data

     mkdir /home/qj/storm/zookeeper-3.4.6/logs

         (4)修改profile文件,添加系统环境变量

sudo gedit /etc/profile

  # Java Environment Path

  export JAVA_HOME=/home/qj/storm/jdk1.7.0_80

  export ZK_HOME=/home/qj/storm/zookeeper-3.4.6

  export PATH=$PATH:$JAVA_HOME/bin:$ZK_HOME/bin

source/etc/profile      //使profile文件生效

                 完成以上3步之后,将zookeeper文件和/etc/config配置文件scp到其他zookeeper集群节点(保持一致)。

集群模式下,需要在datadir配置项的目录下创建一个myid文件,myid文件的编码格式为ANSI。myid文件中写入的内容是一个数字,该数字和server.x中的x数字相对应,Zookeeper启动时会读取myid文件。

touch /home/qj/storm/zookeeper-3.4.6/data/myid

echo 1 > /home/qj/storm/zookeeper-3.4.6/data/myid

 

测试是否安装成功:

在目录下:bin/zkServer.sh start (三个都需要启动)

查看状态bin/zkServer.sh status


关闭zookeeper服务

bin/zkServer.sh stop

 

5.     安装Storm依赖库

 

(1)   安装Zeromq-2.1.7

//下载安装包

wgethttp://download.zeromq.org/zeromq-2.1.7.tar.gz

// 解压缩包

tar –zxvf zeromq-2.1.7.tar.gz

//进入压缩包目录

cd zeromq-2.1.7

然后进行编译、安装,命令如下:

./configure                           //用来检测安装平台的目标特征

碰到问题:

Q1:configure: error: Unable to find a workingC++ compiler

             solution:安装C++/C编译器,命令:

sudo apt-get install g++;

sudo apt-get install gcc;

Q2:configure: error: cannot link with-luuid, install uuid-dev.

 

solution:sudo apt-get install uuid-dev会出现上图问题,

要先:sudo apt-get update 如果还不行,就重启!!

 

sudomake     //用来编译,它从Makefile中读取指令,然后编译。

sudomake install      //用来安装,它从Makefile中读取指令,安装到指定目录

(2)   安装JZMQ

//安装git

sudoapt-get install git

//下载jzmq包

gitclone https://github.com/nathanmarz/jzmq.git

//进入jzmq安装包

cdjzmq

然后进行编译、安装,命令如下:

命令:./autogen.sh

./configure

注意:

②                为了保证jzmq正常工作,一般需要先完成java的安装及配置;

②        在运行脚本./autogen.sh时,碰到问题:

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

solution:  sudo apt-get install libtool

Q2:autogen.sh:error: could not find autoreconf. autoconf and automake are required to runautogen.sh.

solution:sudoapt-get install autoreconf*

 

命令:sudo make

③        在编译的过程中,可能会出现以下问题:

Q1:storm@nimbus:~/jzmq$make

Makingall in src

make[1]:Entering directory `/home/storm/jzmq/src'

make[1]:*** No rule to make target `classdist_noinst.stamp', needed by`org/zeromq/ZMQ.class'.  Stop.

make[1]:Leaving directory `/home/storm/jzmq/src'

make:*** [all-recursive] Error 1

solution:

需要touch “classdist_noinst.stamp”,命令如下:

touchsrc/classdist_noinst.stamp

Q2:$make

...

make[1]:*** No rule to make target `org/zeromq/ZMQException.class, needed by`all'.  Stop.

make:*** [all-recursive] Error 1

        solution:

        编译class,命令如下:

         $ cd src/org/zeromq/

$javac  *.java

$cd ..

$sudomake

...  success!

 

命令:sudo make install

 

(3)   安装Python-2.7.10

//下载python-2.17.10

wgethttps://www.python.org/downloads/release/python-2710/Python-2.7.10.tgz

        //编译安装Python-2.7.10

       $ tar –zxvf Python-2.7.10.tgz

       $ cd Python-2.7.10

       $ ./configure

       $ make

       $ sudo make install

       //测试

       $ python -V

(4)   安装unzip

执行命令安装unzip:

$sudo apt-get install unzip

 

6.     安装Storm发行版

需要在Nimbus和Supervisor节点上安装Storm发行版

(1)  下载Storm-0.10.0

 $ wgethttp://mirror.bit.edu.cn/apache/storm/apache-storm-0.10.0/apache-storm-0.10.0.tar.gz

(2)  解压到安装目录/home/storm

$tar –zxvf apache-storm-0.10.0.tar.gz

$mv apache-storm-0.10.0 storm-0.10.0    //修改文件名 mv [原文件名] [修改后文件名]

7.     配置storm.yaml文件

Storm发行版本解压目录下有一个conf/storm.yaml文件,用于配置Storm。conf/storm.yaml中的配置选项将覆盖defaults.yaml中的默认配置。以下配置选项是必须在conf/storm.yaml中进行配置的:

gedit/home/qj/storm/storm-0.10.0/conf/storm.yaml

 

########### These MUST be filled infor a storm configuration

storm.zookeeper.servers:

  - "192.168.200.25"

  - "192.168.200.26"

  - "192.168.200.27"

nimbus.host:"192.168.200.21"

storm.local.dir:"/home/qj/storm/storm-0.10.0/workdir"

supervisor.slots.ports:

  - 6700

  - 6701

  - 6702

  - 6703

 

# ##### These may optionally befilled in:

#   

## List of custom serializations

# topology.kryo.register:

#     - org.mycompany.MyType

#     - org.mycompany.MyType2:org.mycompany.MyType2Serializer

#

## List of custom kryo decorators

# topology.kryo.decorators:

#     - org.mycompany.MyDecorator

#

## Locations of the drpc servers

drpc.servers:

 - "192.168.200.21"

8.     启动Storm各个守护进程

(1)       先开启zookeeper服务

(2)       然后分别在nimbus节点和supervisor节点开启后台守护进程

①       nimbus节点启动:nimbus、drpc、ui


②        supervisor节点启动:supervisor


然后,打开浏览器,输入默认的Storm UI 网址(nimbus:8080)。若可以看到Storm UI界面(如下),storm集群安装成功。

 

至此,Storm-0.10.0集群的安装与部署工作完成!如果开七台虚拟机太卡的话,可以将zookeeper配置在supervisor上,注意zoo.cfg、storm.yaml的正确配置即可!


常见的问题和解决:

(1)   在查看zookeeper状态时bin/zkServer.sh status 

如果出现报错Error contacting service. It is probably not run,那么可能是zoo.cfg配置出错,请认真检查

(2)   启动nimbus 时报错

可能是storm.yaml配置,注意认真检查

(3)   开启UI报错

重新启动nimbus服务

(4)   虚拟机强制关闭,出现cannot find a valid peer process toconnect to

可以删掉 虚拟机目录下面的 ".vmss" 文件,然后重启。


  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值