storm与daemontools安装详解
Storm是什么
1 Storm 是一个分布式实时大数据处理系统,可以帮助我们方便地处理海量数据,具有高可靠、高容错、高扩展的特点。 2 3 Storm 是流式框架,有很高的数据吞吐能力,Strom 本身是无状态的,通过 ZooKeeper 管理分布式集群环境和集群状态。 4 5 Strom 的安装和使用都很简单,但功能强大,可以并行地对实时数据流进行各种处理。
Storm与zookeeper之间关系图
nimbus
1 nimbus进程的主要职责是管理、协调和监控集群上运行的topology(包括topology的发布、任务指派、时间处理时重新指派任务等)。 2 3 topology的发布,需要将预先打成jar的topology和配置信息提交到nimbus服务器,当nimbus接收到topology压缩包,会将jar包分发到足够数量的supervisor节点上。当supervisor节点接收到topology压缩文件,nimbus就会指派task(bolt、spout实例)到每个supervisor并且发送信号指示supervisor生成足够的worker来执行指定task。 4 5 nimbus通过Zookeeper记录所有supervisor节点的状态和分配给它们的task。如果nimbus发现某个supervisor没有上报心跳或已经不可达,它将会把分配给故障supervisor的task重新分配给其他节点。 6 7 严格来讲,nimbus不会出现单点故障。这个特性是因为nimbus进程不参与topology(拓扑)的数据处理过程,仅仅是管理topology的初始化、任务分发和进行监控,所以如果nimbus在topology运行时停止,不会影响topology的运行。
supervisor
1 supervisor进程等待nimbus分配任务后生成并监控worker(jvm进程)执行任务。supervisor与worker运行在不同的jvm上,如果由supervisor启动的某个worker因为错误异常退出(或被kill掉),supervisor会尝试重新生成新的worker进程。
ui
1 ui进程是为Stom集群提供一个web的gui监控界面,对正在运行的nimbus、supervisor、topology进行展示,对正在运行的topology有一定管理功能,提供其统计信息,对监控Storm集群的运转和topology的功能有很大的帮助。ui进程属于Storm的可选服务,可以自由选择启动或不启动。
安装storm
1 wget http://apache.communilink.net/storm/apache-storm-2.0.0/apache-storm-2.0.0.zip 2 3 unzip apache-storm-2.0.0.zip 4 5 mv apache-storm-2.0.0 /apps/ 6 7 cd /apps/ 8 9 mv apache-storm-2.0.0 storm2.0
配置storm.yaml文件
1 storm.zookeeper.servers: 2 - "10.10.1.144" 3 - "10.10.1.145" 4 - "10.10.1.146" 5 storm.zookeeper.port: 2181 6 storm.zookeeper.root: "/storm" 7 8 # storm 数据存储路径 9 storm.local.dir: "/data/storm" 10 11 storm.health.check.dir: "healthchecks" 12 storm.health.check.timeout.ms: 5000 13 14 # nimbus 主机 IP 15 nimbus.seeds: ["10.10.1.131"]
16 # suppervisor可以作为worker进程启动的端口,表明该Supervisor最多可启动8个worker进程 17 supervisor.slots.ports: 18 - 6700 19 - 6701 20 - 6702 21 - 6703 22 - 6704 23 - 6705 24 - 6706 25 - 6707
daemontools安装
1 wget http://cr.yp.to/daemontools/daemontools-0.76.tar.gz 2 3 mkdir /apps/daemontools 4 5 tar xf daemontools-0.76.tar.gz -C /apps/daemontools 6 7 cd /apps/daemontools/amin/daemontools-0.76/ 8 //修改参数,不改会报错,在src下的conf-cc文件的第一行最后添加如下代码即可 -include /usr/include/errno.h 9 10 //修改完参数后编译执行 11 ./package/install
nimbus节点配置守护进程
1 cd /apps/daemontools 2 3 mkdir storm/{nimbus,ui,drpc} -p 4 5 ...]$ cat /apps/daemontools/storm/drpc/run 6 #!/bin/sh 7 exec 2>&1 8 exec /apps/storm2.0/bin/storm drpc 9 10 ...]$ cat /apps/daemontools/storm/ui/run 11 #!/bin/sh 12 exec 2>&1 13 exec /apps/storm2.0/bin/storm ui 14 15 ...]$ cat /apps/daemontools/storm/nimbus/run 16 #!/bin/sh 17 exec 2>&1 18 exec /apps/storm2.0/bin/storm nimbus 19 20 ...]$ chmod 755 /apps/daemontools/storm/{nimbus,ui,drpc}/run
# 启动方法:
nohup supervise /apps/daemontools/storm/nimbus >> /data/logs/storm/nimbus.log &
nohup supervise /apps/daemontools/storm/ui >> /data/logs/storm/ui.log &
nohup supervise /apps/daemontools/storm/drpc >> /data/logs/storm/drpc.log &
supervisor节点配置守护进程
1 cd /apps/daemontools 2 3 mkdir storm/supervisor -p 4 5 ...]$ cat /apps/daemontools/storm/supervisor/run 6 #!/bin/sh 7 exec 2>&1 8 exec /apps/storm2.0/bin/storm supervisor 9 10 # 启动storm supervisor 11 nohup supervise /apps/daemontools/storm/supervisor >> /data/logs/storm/supervisor.log &