数客联盟

初探storm in Docker

2017-07-28  本文已影响155人  biggeng
背景

Storm是一个已经被业界广泛应用的流处理引擎,主要特点是实时性强,编程模型和接口简单,易于快速实现流处理功能。在目前的主流大数据平台软件栈中(如Hortonworks的HDP和Cloudera的CDH),Storm的部署方案都是单实例部署,即部署的是一个Storm集群,租户的权限控制交给Ranger管理。这样的优点是部署和管理简单,但是因为storm的资源管理并没有基于大数据平台的资源管理方案,如果将storm计算节点和yarn NM复用,有可能发生资源使用问题。此外,多租户之间的资源使用也容易发生抢占问题。因此,关于storm的此类问题,业界目前有两种解决思路: 一是Yarn的长时服务,目前的做法是基于Slider的方案。另一种是借助了PASS, 在Docker中运行Storm,采用多实例的做法,不同的租户使用不同的storm实例,从而做到权限和资源的隔离。

正是基于此,本文尝试使用k8s example中的storm示例,将Storm运行在K8s集群中的Docker.

准备条件
1. 部署并启动ZK
kubectl create -f zookeeper.json

zookeeper.json 为 zookeeper.json

kubectl create -f zookeeper-service.json

zookeeper-service.json为 zookeeper-service.json

执行完成后,可以查看zk是否正常创建和运行。

kubectl get pods
zkPod
kubectl get services|grep zookeeper
zk service
echo ruok | nc 10.108.175.212 2181; echo
zk 端口正常
2. 部署Storm Nimbus服务
kubectl create -f storm-nimbus.json

storm-nimbus.json为 storm-nimbus.json

kubectl create -f storm-nimbus-service.json

storm-nimbus-service.json为 storm-nimbus-service.json

kubectl get pods|grep nimbus
kubectl get services|grep nimbus
3. 部署Storm Worker
kubectl create -f storm-worker-controller.json

storm-worker-controller.json为storm-worker-controller.json

4. 运行Storm topology
docker run -it -w /opt/apache-storm mattf/storm-base sh
runDocker
./bin/storm jar examples/storm-starter/storm-starter-topologies-0.9.3.jar storm.starter.RollingTopWords
/configure.sh  10.108.175.212 10.100.140.82
./bin/storm jar examples/storm-starter/storm-starter-topologies-0.9.3.jar storm.starter.RollingTopWords  production-topology remote
./bin/storm list
storm topology

这样就完成了简单的在Docker 里的Storm部署和运行。

注意: 本文只是简单的使用K8s管理调度Storm Docker。尚未涉及资源的划分和网络的隔离,后续将会进一步探讨。

上一篇下一篇

猜你喜欢

热点阅读