美文网首页数客联盟
初探storm in Docker

初探storm in Docker

作者: biggeng | 来源:发表于2017-07-28 15:17 被阅读155次
    背景

    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.

    准备条件
    • 部署K8s集群


      k8s节点
    • 准备Zookeeper和Storm image
      可以自己编写dockerFile,也可以从网上下载别人已经编译好的.(因为Storm是一个通用组件,网上这类比较多)。本文使用mattf/storm的版本.
    1. 部署并启动ZK
    • 使用zookeeper的编排,启动pod执行
    kubectl create -f zookeeper.json
    

    zookeeper.json 为 zookeeper.json

    • 创建ZK的service
    kubectl create -f zookeeper-service.json
    

    zookeeper-service.json为 zookeeper-service.json

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

    • 查看Pod是否正常运行
    kubectl get pods
    
    zkPod
    • 查看ZK service是否正常运行
    kubectl get services|grep zookeeper
    
    zk service
    • 查看ZK 端口2181是否可以被访问
      notes: zk的访问IP和端口可以在ZK的k8s服务中查看,如上图,本文集群环境的zk地址为: 10.108.175.212:2181
    echo ruok | nc 10.108.175.212 2181; echo
    
    zk 端口正常
    2. 部署Storm Nimbus服务
    • 同部署ZK一样,首先创建Nimbus pod
    kubectl create -f storm-nimbus.json
    

    storm-nimbus.json为 storm-nimbus.json

    • 然后创建Nimbus Service
    kubectl create -f storm-nimbus-service.json
    

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

    • 检查nimbus pod是否正常运行
    kubectl get pods|grep nimbus
    
    • 检查nimbus service是否正常运行
    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
    docker run -it -w /opt/apache-storm mattf/storm-base sh
    
    runDocker
    • 本地模式运行Storm topology
    ./bin/storm jar examples/storm-starter/storm-starter-topologies-0.9.3.jar storm.starter.RollingTopWords
    
    • remote模式运行Storm topology

      • 配置ZK和nimbus
    /configure.sh  10.108.175.212 10.100.140.82
    
    • 提交storm topology
    ./bin/storm jar examples/storm-starter/storm-starter-topologies-0.9.3.jar storm.starter.RollingTopWords  production-topology remote
    
    • 在Storm中查看提交的topology
    ./bin/storm list
    
    storm topology

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

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

    相关文章

      网友评论

        本文标题:初探storm in Docker

        本文链接:https://www.haomeiwen.com/subject/pzsxlxtx.html