码迷,mamicode.com
首页 > 其他好文 > 详细

Storm搭建

时间:2016-07-21 20:07:14      阅读:197      评论:0      收藏:0      [点我收藏+]

标签:storm

Storm简单介绍:

Storm是一个开源的分布式实时计算框架,最初是由Twitter开发的,现在是Apache的顶级项目之一。Storm适用于处理潜在无限的流式数据。Storm之与实时数据计算相当于Hadoop之与批处理。


Storm特点:

  1. 简单的编程模型:类似于MapReduce降低了并行批处理复杂性,Storm降低了进行实时处理的复杂性。

  2. 容错性:Storm会管理工作进程和节点的故障。

  3. 水平扩展:计算是在多个线程、进程和服务器之间并行进行的。

  4. 可靠的消息处理:Storm保证每个消息至少能得到一次完整处理。任务失败时,它会负责从消息源重试消息。

  5. 快速:系统的设计保证了消息能得到快速的处理,使用MQ作为其底层消息队列。

  6. 多语言支持:你可以在Storm之上使用各种编程语言。默认支持Clojure、Java、Ruby和Python,要增加对其他语言的支持,只需实现一个简单的Storm通信协议即。


Storm处理流程:

技术分享


Storm的适用场景:

(1) 信息流处理(Stream Processing) :Storm可以用来实时处理新数据和更新数据库,兼具容错性和可扩展性。

(2) 连续计算(Continuous Computation) :Storm可以进行连续查询并把结果即时反馈给客户,比如将Twitter上的热门话题发送到客户端。

(3) 分布式远程过程调用(Distributed RPC) :Storm可以用来并行处理密集查询,Storm的拓扑结构(后文会介绍)是一个等待调用信息的分布函数,当它收到一条调用信息后,会对查询进行计算,并返回查询结果。


Storm部署:

搭建步骤:

- 安装zookeeper

- 安装storm

- 启动storm

- 访问storm ui

  • 安装zookeeper

安装脚本:

#!/bin/bash
name=zookeeper1
SERVER_ID=1
HOST1=192.168.1.1
port=22181
image=docker.ttxsgoto.com:5000/zk.ttxsgoto.com:v20160712
run(){
docker run -d --name $name -e "SERVER_ID=$SERVER_ID" -e "ADDITIONAL_ZOOKEEPER_1=server.1=$HOST1:2181:3181" -p ${port}:2181 -v /opt/zookeeper/data:/opt/zookeeper/data $image
}
pullimage(){
docker pull $image
if [ $? -ne 0 ];then
echo "Docker pull $image fail."
exit 1
fi
}
case $1 in
deploy)
pullimage
run
;;
stop)
docker stop $name
;;
rm)
docker stop $name
docker rm $name
;;
start)
docker start $name
;;
redeploy)
pullimage
docker stop $name
docker rm $name
run
;;
*)
echo "Usage $0 [deploy|start|stop|rm|redeploy]"
;;
esac

 

1.需修改脚本中SERVER_ID,HOST1,port

2.添加执行权限并执行chmod +x zkstart.sh  && ./zkstart.sh deploy


  • 安装storm

安装脚本:

#!/bin/bash
if [ -z "$1" ]; then
echo "Usage error exit"
echo "./build.sh [appname] [ver]"
exit 2
fi
if [ -z "$2" ]; then
echo "Usage error please input docker version . exit"
echo "./build.sh [appname] [ver]"
exit 2
fi
docker build --no-cache=true -t docker.ttxsgoto.com:5000/$1.ttxsgoto.com:$2 .
docker push docker.ttxsgoto.com:5000/$1.ttxsgoto.com:$2
d=`date "+[%Y-%m-%d %H:%M:%S]"`
echo -e "$d\t$*" >> build.txt


1.添加执行权限 chmod +x build.sh

2.传参数执行脚本(eg: ./build.sh storm v20160712)


PS:deploy/redeploy之前需要修改/etc/hosts文件,更新nimbus节点的hostname和ip的映射关系。


  • storm 启动 

启动脚本:

#!/bin/bash
image="docker.ttxsgoto.com:5000/$1.ttxsgoto.com:$2"
log="/var/logs/$1.ttxsgoto.com.$2.$3"
port=$5
name=$3
mode=$4

run(){
docker run --net=host -it -d --name $name -v $log:/opt/apache-storm-1.0.1/logs "$image" /bin/sh -c "/opt/apache-storm-1.0.1/bin/storm $mode"
}
 
pullimage(){
docker pull $image
if [ $? -ne 0 ];then
echo "Docker pull $image fail."
exit 1
fi
}
 
case $5 in
deploy)
pullimage
run
;;
redeploy)
pullimage
docker stop $name
docker rm $name
run
;;
*)
echo "Usage: $0 [appname version container_name mode deploy|redeploy]"
esac

1.修改storm.yaml文件,配置zookeeper节点信息(storm.zookeeper.servers+storm.zookeeper.port),如:

storm.zookeeper.servers:
- "192.168.1.1"
storm.zookeeper.port: 22181
storm.local.dir: "/opt"
nimbus.seeds: ["ub"]
supervisor.slots.ports:
- 6700
- 6701
- 6702
- 6703

2.添加执行权限 chmod +x storm.sh

3.传参执行 storm.sh

eg:
./storm.sh storm v20160712 ui ui deploy
./storm.sh storm v20160712 nimbus nimbus deploy
./storm.sh storm v20160712 supervisor supervisor deploy
  • 访问storm UI界面

eg:http://192.168.1.1:8080

技术分享技术分享


本文出自 “天天向上goto” 博客,请务必保留此出处http://ttxsgoto.blog.51cto.com/4943095/1828445

Storm搭建

标签:storm

原文地址:http://ttxsgoto.blog.51cto.com/4943095/1828445

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!