JStorm-0.9.6.2安装配置

JStorm是由Alibaba开源的实时计算系统,它使用Java重写了Apache Storm(使用Clojure+Java混编),而且在原来的基础上做了很多改进的地方。使用Java重写,对于使用Java的开发人员来说,可以通过阅读源码来了解JStorm内部的原理和实现,而且可以根据运行错误日志来排查错误。
下面通过安装配置,以及简单使用的验证,来说明JStorm宏观上与Apache Storm的不同之处。

安装配置JStorm Server

首先,要保证JDK成功安装配置,然后在一个节点上下载、安装、配置JStorm。例如,我在hadoop1节点上,下载并解压缩:

1 wget http://42.121.19.155/jstorm/jstorm-0.9.6.2.zip
2 unzip jstorm-0.9.6.2.zip
3 cd jstorm-0.9.6.2

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

01 ########### These MUST be filled in for a storm configuration
02 storm.zookeeper.servers:
03 - "10.10.4.128"
04 - "10.10.4.129"
05 - "10.10.4.130"
06
07 storm.zookeeper.root: "/jstorm"
08
09 # %JSTORM_HOME% is the jstorm home directory
10 storm.local.dir: "/tmp/jstorm/data"
11
12 java.library.path: "/usr/local/lib:/opt/local/lib:/usr/lib"
13
14 supervisor.slots.ports:
15 - 6800
16 - 6801
17 - 6802
18 - 6803

要保证ZooKeeper集群已经成功启动,并在ZooKeeper中创建/jstorm,执行如下命令:

1 ssh zookeeper@10.10.4.128
2 /usr/local/zookeeper/bin/zkCli.sh

然后创建/jstorm,执行如下命令:

1 create /jstorm ""

配置环境变量JSTORM_HOME,修改~/.bashrc文件,增加如下内容:

1 export JSTORM_HOME=/home/kaolatj/jstorm-0.9.6.2
2 export PATH=$PATH:$JSTORM_HOME/bin

使环境变量生效:

1 source ~/.bashrc

配置完上面内容后,需要创建~/.jstorm目录,并将配置好的storm.yaml文件拷贝到该目录下:

1 mkdir ~/.jstorm
2 cp -f $JSTORM_HOME/conf/storm.yaml ~/.jstorm

最好在每个节点都执行上述配置,尤其是在提交Topology的时候,如果没有这个就会报错的。
最后,要将JStorm安装文件拷贝到集群其他从节点上,我这里有2个从节点hadoop2和hadoop3,执行如下命令:

1 scp -r /home/kaolatj/jstorm-0.9.6.2 kaolatj@hadoop2:~/
2 scp -r /home/kaolatj/jstorm-0.9.6.2 kaolatj@hadoop3:~/

同样,在从节点上配置好环境变量JSTORM_HOME。

安装JStorm UI

安装JStorm UI,可以安装在任何一个节点上,只要保证JStorm UI的安装包(WAR文件)的配置文件和JStorm集群相同即可。JStorm UI运行在Web容器之中,可以使用Tomcat。我这里,直接在Nimbus节点上安装Jstorm UI。
首先,安装Tomcat Web容器:

1 wget http://apache.fayea.com/tomcat/tomcat-7/v7.0.57/bin/apache-tomcat-7.0.57.zip
2 unzip apache-tomcat-7.0.57.zip
3 cd apache-tomcat-7.0.57
4 chmod +x bin/*.sh

然后,将jstorm-ui-0.9.6.2.war软件包拷贝到Tomcat的webapps目录下,jstorm-ui-0.9.6.2.war直接在解压缩的jstorm-0.9.6.2.zip包中,拷贝即可:

1 cp ~/jstorm-0.9.6.2/jstorm-ui-0.9.6.2.war webapps/
2 mv ROOT ROOT.old
3 ln -s jstorm-ui-0.9.6.2 ROOT

在启动Tomcat之前,要保证配置文件$JSTORM_HOME/conf/storm.yaml拷贝到目录~/.jstorm下面。
最后,启动Tomcat,并查看日志:

1 bin/catalina.sh start
2
3 tail -100f logs/catalina.out

JStorm UI安装完成后,可以通过访问http://10.10.4.125:8080即可看到Web UI界面。
另外,可以直接通过源码进行构建,将对应的配置配好的文件$JSTORM_HOME/conf/storm.yaml直接打包到WAR文件里面,然后就可以直接发布到Web容器中(如Tomcat),这样可以不用将$JSTORM_HOME/conf/storm.yaml拷贝到目录~/.jstorm下面。

验证JStorm

我这里写了一个相对比较复杂的JStorm程序,原来是基于apache-storm-0.9.2-incubating构建的应用,现在迁移到JStorm计算平台,保留了Apache Storm中一些工具包,像storm-kafka,同时还用到Kafka,在Storm UI上DAG图如下所示:



参考Maven依赖配置如下:

01 <properties>
02 <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
03 <jstorm.version>0.9.6.2-snapshot</jstorm.version>
04 </properties>
05
06 <dependencies>
07 <dependency>
08 <groupId>com.alibaba.jstorm</groupId>
09 <artifactId>jstorm-server</artifactId>
10 <version>${jstorm.version}</version>
11 <scope>provided</scope>
12 </dependency>
13 <dependency>
14 <groupId>com.alibaba.jstorm</groupId>
15 <artifactId>jstorm-client</artifactId>
16 <version>${jstorm.version}</version>
17 <scope>provided</scope>
18 </dependency>
19 <dependency>
20 <groupId>com.alibaba.jstorm</groupId>
21 <artifactId>jstorm-client-extension</artifactId>
22 <version>${jstorm.version}</version>
23 <scope>provided</scope>
24 </dependency>
25
26 <dependency>
27 <groupId>org.apache.storm</groupId>
28 <artifactId>storm-kafka</artifactId>
29 <version>0.9.3-rc1</version>
30 <exclusions>
31 <exclusion>
32 <groupId>log4j</groupId>
33 <artifactId>log4j</artifactId>
34 </exclusion>
35 </exclusions>
36 </dependency>
37 <dependency>
38 <groupId>org.apache.kafka</groupId>
39 <artifactId>kafka_2.9.2</artifactId>
40 <version>0.8.1.1</version>
41 <exclusions>
42 <exclusion>
43 <groupId>org.apache.zookeeper</groupId>
44 <artifactId>zookeeper</artifactId>
45 </exclusion>
46 <exclusion>
47 <groupId>log4j</groupId>
48 <artifactId>log4j</artifactId>
49 </exclusion>
50 </exclusions>
51 </dependency>
52
53 <dependency>
54 <groupId>org.apache.hadoop</groupId>
55 <artifactId>hadoop-client</artifactId>
56 <version>2.2.0</version>
57 <exclusions>
58 <exclusion>
59 <groupId>org.slf4j</groupId>
60 <artifactId>slf4j-log4j12</artifactId>
61 </exclusion>
62 </exclusions>
63 </dependency>
64 <dependency>
65 <groupId>org.apache.hadoop</groupId>
66 <artifactId>hadoop-hdfs</artifactId>
67 <version>2.2.0</version>
68 <exclusions>
69 <exclusion>
70 <groupId>org.slf4j</groupId>
71 <artifactId>slf4j-log4j12</artifactId>
72 </exclusion>
73 </exclusions>
74 </dependency>
75 <dependency>
76 <groupId>com.github.ptgoetz</groupId>
77 <artifactId>storm-hdfs</artifactId>
78 <version>0.1.3-SNAPSHOT</version>
79 </dependency>
80 <dependency>
81 <groupId>commons-configuration</groupId>
82 <artifactId>commons-configuration</artifactId>
83 <version>1.10</version>
84 </dependency>
85 <dependency>
86 <groupId>org.slf4j</groupId>
87 <artifactId>slf4j-api</artifactId>
88 <version>1.7.5</version>
89 <scope>provided</scope>
90 </dependency>
91
92 </dependencies>

提交Topology程序包到JStorm集群,执行如下命令:

1 bin/jstorm jar ~/jstorm-msg-process-0.0.1-SNAPSHOT.jar org.shirdrn.storm.msg.MsgProcessTopology MsgProcessTopology

然后,我们可以通过命令行来查看Topology列表:

1 bin/jstorm list

结果示例如下所示:

1 ClusterSummary(supervisors:[SupervisorSummary(host:hadoop2, supervisor_id:43bb2701-4a3c-4941-8605-68000c66eea5, uptime_secs:89864, num_workers:4, num_used_workers:2), SupervisorSummary(host:hadoop3, supervisor_id:0e72bc94-52d2-4695-8c29-8fbf57d89c9c, uptime_secs:96051, num_workers:4, num_used_workers:3)], nimbus_uptime_secs:226520, topologies:[TopologySummary(id:WordCountTopology-1-1420369616, name:WordCountTopology, status:ACTIVE, uptime_secs:237166, num_tasks:5, num_workers:3, error_info:Y), TopologySummary(id:MsgProcessTopology-3-1420447738, name:MsgProcessTopology, status:ACTIVE, uptime_secs:159044, num_tasks:23, num_workers:2, error_info:)], version:0.9.6.2)

接着再看一下JStorm UI首页的效果图,如图所示:



运行在JStorm集群上的MsgProcessTopology,点击上图中的Topology Name中的链接,就可以看到Topology的效果图,如下所示:



在Jstorm UI首页上,点击Supervisor节点链接,可以查看各个节点上运行的Topology及其Task的消息情况,示例如图所示:



点击Task List中的链接,还可以查看某个Task的明细信息,不再累述。

问题总结

  • 如果原来基于Apache Storm开发的程序,理论上可以无需改动便可以运行在JStorm集群上,只不过在编译打包的时候,指定JStorm依赖:
01 <dependency>
02 <groupId>com.alibaba.jstorm</groupId>
03 <artifactId>jstorm-server</artifactId>
04 <version>${jstorm.version}</version>
05 <scope>provided</scope>
06 </dependency>
07 <dependency>
08 <groupId>com.alibaba.jstorm</groupId>
09 <artifactId>jstorm-client</artifactId>
10 <version>${jstorm.version}</version>
11 <scope>provided</scope>
12 </dependency>
13 <dependency>
14 <groupId>com.alibaba.jstorm</groupId>
15 <artifactId>jstorm-client-extension</artifactId>
16 <version>${jstorm.version}</version>
17 <scope>provided</scope>
18 </dependency>
  • 启动Nimbus和Supervisor进程的时候,一定要在后台启动,否则可能会出现进程无缘无故挂掉的问题,可以执行命令:
1 nohup jstorm nimbus >/dev/null 2>&1 &
2 nohup jstorm supervisor >/dev/null 2>&1 &
  • 如果忘记配置cp -f $JSTORM_HOME/conf/storm.yaml ~/.jstorm,在提交Topology到JStorm集群时,会出现如下错误:
1 [INFO 2015-01-04 17:34:50 CuratorFrameworkImpl:238 main] Starting
2 [WARN 2015-01-04 17:34:50 ClientCnxn:1102 main-SendThread(localhost:2181)] Session 0x0 for server null, unexpected error, closing socket connection and attempting reconnect
3 java.net.ConnectException: Connection refused
4 at sun.nio.ch.SocketChannelImpl.checkConnect(Native Method)
5 at sun.nio.ch.SocketChannelImpl.finishConnect(SocketChannelImpl.java:708)
6 at org.apache.zookeeper.ClientCnxnSocketNIO.doTransport(ClientCnxnSocketNIO.java:361)
7 at org.apache.zookeeper.ClientCnxn$SendThread.run(ClientCnxn.java:1081)
8 [WARN 2015-01-04 17:34:51 ClientCnxn:1102 main-SendThread(localhost:2181)] Session 0x0 for server null, unexpected error, closing socket connection and attempting reconnect
9 java.net.ConnectException: Connection refused

目前,在哪个节点上提交Topology,必须配置将 $JSTORM_HOME/conf/storm.yaml拷贝到~/.jstorm目录下,否则就会报错。
这个配置,我觉得以后JStorm可以做个优化,只要宿主机安装了JStorm程序,实际上就应该根据环境变量$JSTORM_HOME自动找到对应的配置文件$JSTORM_HOME/conf/storm.yaml。

  • 在使用JStorm Maven依赖的时候,你可以无法在网上找到Public Repository,这时,你需要下载指定版本的JStorm源码,然后在你的开发主机上安装到本地Maven Repository,执行如下命令:
1 cd ~/jstorm-0.9.6.2
2 mvn install -DskipTests
  • 查看JStorm运行日志,每个Topology的程序运行日志会写入自己的日志文件,便于查看和排错,如图所示:
时间: 2024-11-03 05:36:37

JStorm-0.9.6.2安装配置的相关文章

CentOS 7.0安装配置LAMP服务器(Apache+PHP+MariaDB)

原文 CentOS 7.0安装配置LAMP服务器(Apache+PHP+MariaDB)     一.配置防火墙,开启80端口.3306端口 CentOS 7.0默认使用的是firewall作为防火墙,这里改为iptables防火墙. 1.关闭firewall: systemctl stop firewalld.service #停止firewall systemctl disable firewalld.service #禁止firewall开机启动 2.安装iptables防火墙 yum i

Shark-0.9.0安装配置运行实践

Shark(Hive on Spark)是UC Lab为Spark设计并开源的一款数据仓库系统,提供了分布式SQL查询引擎,它能够完全兼容Hive.首先,我们通过下面的图,看一下Shark与Hive的关系(http://shark.cs.berkeley.edu/img/shark-hive-integration.png):以前我们使用Hive分析HDFS中数据时,通过将HQL翻译成MapReduce作业(Job)在Hadoop集群上运行:而使用Shark可以像使用Hive一样容易,如HQL.

tomcat6.0 java 1.6 环境配置 免安装版和安装版 tomcat下载地址

tomcat6.0 java 1.6 环境配置 免安装版和安装版 tomcat下载地址 tomcat官网 http://tomcat.apache.org/download-60.cgi 免安装版 1.把jdk放在C:\Program Files目录下: 1)在环境变量Path前面添加 C:\Program Files\jdk_10\bin; 2)添加环境变量JAVA_HOME 值为 C:\Program Files\jdk_10 2.把tomcat安装在C:\Program Files目录下:

Linux Tomcat 6.0安装配置实践总结

系统环境: Red Hat Enterprise Linux Server release 5.7 (Tikanga)  64位 Tomcat下载 从官方网站 http://tomcat.apache.org/下载你需要的Tomcat版本,目前Tomcat主要版本有Tomcat 6.0.Tomcat 7.0.Tomcat 8.0三个版本,下面我们以6.0(6.0.39)版本为例, 下载URL地址:http://tomcat.apache.org/download-60.cgi ,如果你需要下载T

Tomcat7.0安装配置详细(图文)_Tomcat

 说明:Tomcat服务器上一个符合J2EE标准的Web服务器,在tomcat中无法运行EJB程序,如果要运行可以选择能够运行EJB程序的容器WebLogic,WebSphere,Jboss等 Tomcat的下载: http://tomcat.apache.org/  1.进入上面的网站然后如下操作使用Window Service Installer(为Window 添加服务) 2.然后我们进行安装 说明一下: 以前的版本是没有关于Role的设定,到了7.0的时候就有有关的设定,这也说明Tomc

IIS 7.0安装配置方法图文教程(win7)_win服务器

今天小编为大家带来一篇Win7系统下IIS7的详细安装配置图文教程,需要的朋友可以看看! Win7系统下IIS7安装方法: 1.通过用户界面安装 1.单击"开始"/"控制面板"/"程序",选择"打开或关闭Windows功能" 2.在Windows 功能对话框中,选中"Internet信息服务" 3.单击"确定",这时Windows Vista就会启动IIS的安装过程; 系统之家提醒您:如

Hadoop-2.2.0集群安装配置实践

Hadoop 2.x和1.x已经大不相同了,应该说对于存储计算都更加通用了.Hadoop 2.x实现了用来管理集群资源的YARN框架,可以面向任何需要使用基于HDFS存储来计算的需要,当然MapReduce现在已经作为外围的插件式的计算框架,你可以根据需要开发或者选择合适的计算框架.目前,貌似对MapReduce支持还是比较好的,毕竟MapReduce框架已经还算成熟.其他一些基于YARN框架的标准也在开发中. YARN框架的核心是资源的管理和分配调度,它比Hadoop 1.x中的资源分配的粒度

《VMware vSphere 6.0虚拟化架构实战指南》——第2章 安装配置VMware ESXi 6.0 2.1VMware vSphere 6.0虚拟化介绍

第2章 安装配置VMware ESXi 6.0 2014年10月,VMware vForum 2014大会在北京召开,VMware公司针对了VMware vSphere 6.0发布时间作了统一的回复,将于2015年1季度发布VMware vSphere 6.0正式版本.2015年2月3日,作为软件定义数据中心 基础.面向混合云的最新版本虚拟化 解决方案 VMware vSphere 6.0正式发布,3月12日官方网站开始提供下载.VMware ESXi 6.0作为VMware vSphere 6

ElasticSearch-2.0.0集群安装配置与API使用实践

ElasticSearch是基于全文搜索引擎库Lucene构建的分布式搜索引擎,我们可以直接使用ElasticSearch实现分布式搜索系统的搭建与使用,都知道,Lucene只是一个搜索框架,它提供了搜索引擎操作的基本API,如果要实现一个能够使用的搜索引擎系统,还需要自己基于Lucene的API去实现,工作量很大,而且还需要很好地掌握Lucene的底层实现原理. ElasticSearch是一个完整的分布式搜索引擎系统,它的一些基本特性包括如下: 全文检索 提供插件机制,可以共享重用插件的功能

Linux下安装配置MongoDB 3.0版本数据库教程

说明: 操作系统:CentOS 5.X 64位 IP地址:192.168.21.128 实现目的: 安装配置MongoDB数据库 具体操作: 一.关闭SElinux.配置防火墙 1.vi /etc/selinux/config #SELINUX=enforcing #注释掉 #SELINUXTYPE=targeted #注释掉 SELINUX=disabled #增加 :wq! #保存退出 setenforce 0 #使配置立即生效 2.vi /etc/sysconfig/iptables #编