天天看点

CentOS 6.4单机环境下安装配置Storm

Storm是一个分布式的、高容错的实时计算系统,在实时性要求比较强的应用场景下,可以用它来处理海量数据。我们尝试着搭建Storm平台,来实现实时计算。下面,我们在CentOS 6.4上安装配置Storm系统。

安装配置

安装配置过程,按照如下步骤进行:

1、安装配置sunjdk

下载sunjdk,并安装Java运行环境:

<code>1</code>

<code>2</code>

<code>chmod</code> <code>+x jdk-6u45-linux-x64-rpm.bin</code>

<code>3</code>

<code>./jdk-6u45-linux-x64.bin</code>

配置Java运行时环境:

<code>vi</code> <code>~/.bashrc</code>

<code>export</code> <code>JAVA_HOME=/usr/java/jdk1.6.0_45/</code>

<code>export</code> <code>PATH=$PATH:$JAVA_HOME/bin</code>

<code>4</code>

<code>export</code> <code>CLASSPATH=$JAVA_HOME/lib/*.jar:$JAVA_HOME/jre/lib/*.jar</code>

<code>5</code>

<code>. ~/.bashrc</code>

<code>6</code>

<code>java -version</code>

2、安装zeromq

执行如下命令,进行下载配置安装:

<code>tar</code> <code>-zvxf zeromq-2.2.0.</code><code>tar</code><code>.gz</code>

<code>cd</code> <code>zeromq-2.2.0/</code>

<code>./configure</code>

<code>sudo</code> <code>make</code>

<code>sudo</code> <code>make</code> <code>install</code>

3、安装jzmq

安装jzmq需要使用Git下载源码,从源代码编译安装:

<code>sudo</code> <code>yum</code><code>install</code> <code>git</code>

<code>cd</code> <code>jzmq/</code>

4、安装Storm

下载解压缩Storm软件包即可:

<code>tar</code> <code>-xvzf storm-0.8.1.zip</code>

然后配置环境变量:

<code>cd</code> <code>storm-0.8.1/</code>

<code>export</code> <code>STORM_HOME=/home/shirdrn/programs/storm-0.8.1</code>

<code>export</code> <code>PATH=$PATH:$STORM_HOME/bin</code>

5、安装构建storm-starter

首先需要下载代码,并使用Maven构建:

<code>cd</code> <code>storm-starter/</code>

<code>mvn -f m2-pom.xml package</code>

如果需要把Storm的示例代码导入到Eclipse环境中,需要执行如下命令:

<code>cp</code> <code>m2-pom.xml pom.xml</code>

<code>mvn eclipse:eclipse</code>

6、配置Storm

修改配置文件conf/storm.yaml内容如下所示:

<code>01</code>

<code>storm.zookeeper.servers:</code>

<code>02</code>

<code></code><code>- "nn"</code>

<code>03</code>

<code>storm.zookeeper.port: 2181</code>

<code>04</code>

<code>nimbus.host: "nn"</code>

<code>05</code>

<code>storm.local.dir: "/home/shirdrn/programs/storm-0.8.1/tmp"</code>

<code>06</code>

<code>supervisor.slots.ports:</code>

<code>07</code>

<code></code><code>- 6700</code>

<code>08</code>

<code></code><code>- 6701</code>

<code>09</code>

<code></code><code>- 6702</code>

<code>10</code>

<code></code><code>- 6703</code>

启动运行

1、启动Storm相关服务

启动ZooKeeper

<code>bin/zkServer.sh start</code>

启动Nimbus

<code>bin/storm nimbus</code>

查看日志,确定Nimbus启动是否成功:

<code>[shirdrn@nn storm-0.8.1]$</code><code>tail</code> <code>-100f logs/nimbus.log</code>

启动Supervisor

<code>bin/storm supervisor</code>

查看日志,确定Supervisor启动是否成功:

<code>[shirdrn@nn storm-0.8.1]$</code><code>tail</code> <code>-100f logs/supervisor.log</code>

2、提交一个Topology

上面,已经使用Maven构建storm-starter工程,在target目录下生成一个jar文件,然后将该storm-starter工程中的WordCountTopology提交到Nimbus,执行如下命令:

<code>bin/storm jar ../storm-starter/target/storm-starter-0.0.1-SNAPSHOT-jar-with-dependencies.jar storm.starter.WordCountTopology myFirstStormApp</code>

上面myFirstStormApp是提交的Topology的名称,可以看到提交Topology的日志信息:

<code>0 [main] INFO backtype.storm.StormSubmitter - Jar not uploaded to master yet. Submitting jar...</code>

<code>12 [main] INFO backtype.storm.StormSubmitter - Uploading topology jar ../storm-starter/target/storm-starter-0.0.1-SNAPSHOT-jar-with-dependencies.jar to assigned location: /home/shirdrn/programs/storm-0.8.1/tmp/nimbus/inbox/stormjar-0ae68c15-130d-46f9-a46a-69dd4de29a99.jar</code>

<code>119 [main] INFO backtype.storm.StormSubmitter - Successfully uploaded topology jar to assigned location: /home/shirdrn/programs/storm-0.8.1/tmp/nimbus/inbox/stormjar-0ae68c15-130d-46f9-a46a-69dd4de29a99.jar</code>

<code>119 [main] INFO backtype.storm.StormSubmitter - Submitting topology myFirstStormApp in distributed mode with conf {"topology.workers":3,"topology.debug":true}</code>

<code>423 [main] INFO backtype.storm.StormSubmitter - Finished submitting topology: myFirstStormApp</code>

这时,可以通过查看worker的日志,来确定我们提交的Topology的执行情况:

<code>[shirdrn@nn storm-0.8.1]$</code><code>tail</code> <code>-100f logs/worker-6700.log</code>

<code>[shirdrn@nn storm-0.8.1]$</code><code>tail</code> <code>-100f logs/worker-6701.log</code>

<code>[shirdrn@nn storm-0.8.1]$</code><code>tail</code> <code>-100f logs/worker-6702.log</code>

<code>[shirdrn@nn storm-0.8.1]$</code><code>tail</code> <code>-100f logs/worker-6703.log</code>

worker日志文件名称的后缀正好对应于我们在配置文件conf/storm.yaml中配置supervisor.slots.ports中的端口号。

如果只是上面的命令不带参数,表示虚拟测试该程序,如下所示:

<code>bin/storm jar ../storm-starter/target/storm-starter-0.0.1-SNAPSHOT-jar-with-dependencies.jar storm.starter.WordCountTopology</code>

可以看到具体模拟执行的情况,它并不将这个Topology提交给Nimbus。

3、Storm管理命令

可以通过如下命令查看Storm的管理操作命令:

<code>bin/storm help</code>

下面,给出一些常用的命令:

查询当前运行的Topology

<code>bin/storm list</code>

杀掉运行中的Topology

<code>bin/storm</code><code>kill</code> <code>myFirstStormApp</code>

问题说明

在安装Storm的过程中,有关一些依赖安装包的问题,不像在Ubuntu系统下,可以模糊指定软件包名称,然后会给出一些提示信息,CentOS需要明确地指定软件包名称,记录下一下在安装过程中遇到的问题及其解决办法。

1、出现错误:configure: error: Unable to find a working C++ compiler

需要安装g++编译器:

<code>sudo</code> <code>yum</code><code>install</code> <code>gcc-c++</code>

2、出现错误:configure: error: cannot link with -luuid, install uuid-dev.

需要安装软件包uuid-devel和libuuid-devel:

<code>sudo</code> <code>yum</code><code>install</code> <code>uuid-devel</code>

<code>sudo</code> <code>yum</code><code>install</code> <code>libuuid-devel</code>

3、出现错误:autogen.sh: error: could not find libtool. libtool is required to run autogen.sh.

需要安装libtool:

<code>sudo</code> <code>yum</code><code>install</code> <code>libtool</code>