jstorm0.9.6.2安装(转载的)
来源:互联网 发布:扒一扒淘宝靠谱的代购 编辑:程序博客网 时间:2024/05/29 15:07
原始地址:http://shiyanjun.cn/archives/1019.html
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的程序运行日志会写入自己的日志文件,便于查看和排错,如图所示:
- jstorm0.9.6.2安装(转载的)
- jstorm0.9.6.3 hbase1.1.5整合,本地pom文件配置
- jdom的安装(转载)
- jdk的安装(转载)
- fortran安装2(转载)
- 硬盘安装freebsd6.2的笔记 (转载)
- 【转载】Win7下ArcGIS9.2的安装
- NRPE的安装配置(转载)
- fedora14 安装后的设置(转载)
- Linux下MySQL的安装(转载)
- liunx 下mysql 的安装(转载)
- RabbitMQ安装遇到的问题(转载)
- Zookeeper的安装和配置(转载)
- Openssl的安装 (转载)
- QTP9.2安装问题汇总(转载)
- boost 安装(转载)
- intellij idea的安装,转载
- 【转载】安装苹果的参数
- 任何先入为主的思想都是不可有的!
- Make My Choice
- redis客户端
- 2014年度个人工作总结报告
- 【Android-悬浮窗】天天动听 悬浮歌词(迷你歌词)效果解读
- jstorm0.9.6.2安装(转载的)
- 深入理解Fragment(三)
- zookeeper应用
- position的四个属性值
- An error was encountered while running(Domain=FBSOpenApplicationErrorDomain, Code=4)
- Tab 模块 总结
- hibernate的数据库连接dao类
- Unity3d 导出 xcode 项目 编译错误解决方案 xcode6 U3DScreenToNGUIScreen
- uva 11029 【快速幂】