初探storm in Docker

背景

Storm是一個已經(jīng)被業(yè)界廣泛應用的流處理引擎,主要特點是實時性強,編程模型和接口簡單,易于快速實現(xiàn)流處理功能。在目前的主流大數(shù)據(jù)平臺軟件棧中(如Hortonworks的HDP和Cloudera的CDH),Storm的部署方案都是單實例部署,即部署的是一個Storm集群,租戶的權限控制交給Ranger管理。這樣的優(yōu)點是部署和管理簡單,但是因為storm的資源管理并沒有基于大數(shù)據(jù)平臺的資源管理方案,如果將storm計算節(jié)點和yarn NM復用,有可能發(fā)生資源使用問題。此外,多租戶之間的資源使用也容易發(fā)生搶占問題。因此,關于storm的此類問題,業(yè)界目前有兩種解決思路: 一是Yarn的長時服務,目前的做法是基于Slider的方案。另一種是借助了PASS, 在Docker中運行Storm,采用多實例的做法,不同的租戶使用不同的storm實例,從而做到權限和資源的隔離。

正是基于此,本文嘗試使用k8s example中的storm示例,將Storm運行在K8s集群中的Docker.

準備條件
  • 部署K8s集群


    k8s節(jié)點
  • 準備Zookeeper和Storm image
    可以自己編寫dockerFile,也可以從網(wǎng)上下載別人已經(jīng)編譯好的.(因為Storm是一個通用組件,網(wǎng)上這類比較多)。本文使用mattf/storm的版本.
1. 部署并啟動ZK
  • 使用zookeeper的編排,啟動pod執(zhí)行
kubectl create -f zookeeper.json

zookeeper.json 為 zookeeper.json

  • 創(chuàng)建ZK的service
kubectl create -f zookeeper-service.json

zookeeper-service.json為 zookeeper-service.json

執(zhí)行完成后,可以查看zk是否正常創(chuàng)建和運行。

  • 查看Pod是否正常運行
kubectl get pods
zkPod
  • 查看ZK service是否正常運行
kubectl get services|grep zookeeper
zk service
  • 查看ZK 端口2181是否可以被訪問
    notes: zk的訪問IP和端口可以在ZK的k8s服務中查看,如上圖,本文集群環(huán)境的zk地址為: 10.108.175.212:2181
echo ruok | nc 10.108.175.212 2181; echo
zk 端口正常
2. 部署Storm Nimbus服務
  • 同部署ZK一樣,首先創(chuàng)建Nimbus pod
kubectl create -f storm-nimbus.json

storm-nimbus.json為 storm-nimbus.json

  • 然后創(chuàng)建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。尚未涉及資源的劃分和網(wǎng)絡的隔離,后續(xù)將會進一步探討。

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
【社區(qū)內容提示】社區(qū)部分內容疑似由AI輔助生成,瀏覽時請結合常識與多方信息審慎甄別。
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發(fā)布,文章內容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關閱讀更多精彩內容

友情鏈接更多精彩內容