溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

Storm集群如何搭建

發布時間:2021-11-16 16:43:34 來源:億速云 閱讀:165 作者:小新 欄目:云計算
# Storm集群如何搭建

## 目錄
1. [Storm簡介](#storm簡介)
2. [環境準備](#環境準備)
3. [ZooKeeper集群搭建](#zookeeper集群搭建)
4. [Storm集群組件](#storm集群組件)
5. [Storm集群詳細搭建步驟](#storm集群詳細搭建步驟)
6. [集群配置優化](#集群配置優化)
7. [常見問題排查](#常見問題排查)
8. [性能監控與管理](#性能監控與管理)
9. [總結](#總結)

---

## Storm簡介
Apache Storm是一個開源的分布式實時計算系統,由Nathan Marz團隊創建,后成為Apache頂級項目。它具有以下核心特性:

- **低延遲處理**:毫秒級延遲的實時數據處理能力
- **高可靠性**:保證每條消息至少被處理一次(exactly-once語義可選)
- **橫向擴展**:通過增加節點線性提升處理能力
- **容錯機制**:自動重啟失敗的任務,保證計算連續性

典型應用場景:
- 實時日志分析
- 金融風控系統
- 物聯網數據處理
- 社交網絡實時推薦

---

## 環境準備

### 硬件要求
| 角色       | 最低配置              | 推薦配置               |
|------------|-----------------------|-----------------------|
| Nimbus     | 4核CPU, 8GB內存       | 8核CPU, 16GB內存      |
| Supervisor | 8核CPU, 16GB內存      | 16核CPU, 32GB內存     |
| ZooKeeper  | 2核CPU, 4GB內存       | 4核CPU, 8GB內存       |

### 軟件要求
1. **操作系統**:Linux(CentOS 7+/Ubuntu 18.04+)
2. **Java環境**:OpenJDK 1.8+(推薦JDK11)
   ```bash
   # 檢查Java版本
   java -version
  1. 依賴工具
    • Python 2.73.6+
    • SSH服務(集群節點間免密登錄)
    • 時間同步服務(NTP)

ZooKeeper集群搭建

Storm依賴ZooKeeper進行協調服務,建議3節點或5節點集群:

安裝步驟

  1. 下載安裝包(以3.6.3為例):

    wget https://archive.apache.org/dist/zookeeper/zookeeper-3.6.3/apache-zookeeper-3.6.3-bin.tar.gz
    tar -zxvf apache-zookeeper-3.6.3-bin.tar.gz
    
  2. 配置zoo.cfg:

    tickTime=2000
    initLimit=10
    syncLimit=5
    dataDir=/var/lib/zookeeper
    clientPort=2181
    server.1=zk1:2888:3888
    server.2=zk2:2888:3888
    server.3=zk3:2888:3888
    
  3. 創建myid文件:

    echo "1" > /var/lib/zookeeper/myid  # 分別在各節點寫入1/2/3
    
  4. 啟動服務:

    bin/zkServer.sh start
    

Storm集群組件

核心角色

組件 作用
Nimbus 主節點,負責拓撲分發、任務調度和故障檢測
Supervisor 工作節點,啟動/停止Worker進程
Worker 實際執行任務的JVM進程
ZooKeeper 存儲集群狀態、任務分配信息和心跳檢測

通信架構

graph TD
    A[Client] -->|提交拓撲| B(Nimbus)
    B -->|存儲元數據| C[ZooKeeper]
    C -->|同步信息| D[Supervisor]
    D -->|啟動| E[Worker]
    E -->|心跳| C

Storm集群詳細搭建步驟

1. 下載安裝

wget https://archive.apache.org/dist/storm/apache-storm-2.3.0/apache-storm-2.3.0.tar.gz
tar -xzvf apache-storm-2.3.0.tar.gz
mv apache-storm-2.3.0 /opt/storm

2. 配置storm.yaml

# 必須配置項
storm.zookeeper.servers:
  - "zk1"
  - "zk2"
  - "zk3"

nimbus.seeds: ["nimbus1"]

storm.local.dir: "/data/storm"

supervisor.slots.ports:
  - 6700
  - 6701
  - 6702
  - 6703

# 可選優化配置
worker.heap.memory.mb: 2048
topology.max.spout.pending: 1000

3. 啟動服務

  • Nimbus節點

    nohup bin/storm nimbus > /dev/null 2>&1 &
    nohup bin/storm ui > /dev/null 2>&1 &  # Web界面
    
  • Supervisor節點

    nohup bin/storm supervisor > /dev/null 2>&1 &
    

4. 驗證集群

# 查看集群狀態
bin/storm list

# 訪問Web UI
http://nimbus_host:8080

集群配置優化

關鍵參數調優

參數 默認值 推薦值 說明
topology.workers 1 CPU核數-1 每個拓撲的worker數
topology.max.task.parallelism None 100 單個組件的最大并行度
message.timeout.secs 30 60 消息超時時間
supervisor.worker.timeout.secs 30 120 Worker無響應超時

JVM調優建議

worker.childopts: "-Xmx4g -XX:+UseG1GC -XX:MaxGCPauseMillis=100"

常見問題排查

1. 拓撲提交失敗

  • 現象Failed to submit topology

  • 檢查: “`bash

    查看Nimbus日志

    tail -100f logs/nimbus.log

# 檢查ZooKeeper連接 echo stat | nc zk1 2181


### 2. Worker頻繁重啟
- **可能原因**:
  - 內存不足(調整`worker.heap.memory.mb`)
  - GC時間過長(優化JVM參數)
  - 網絡延遲(檢查節點間ping值)

---

## 性能監控與管理

### 監控方案
1. **內置UI**:8080端口提供基礎監控
2. **Prometheus + Grafana**:
   ```yaml
   # 配置metrics reporter
   storm.metrics.reporters:
     - class: "org.apache.storm.metrics2.reporters.PrometheusStormReporter"
       daemons:
         - "nimbus"
         - "supervisor"
       report.period: 60
       prometheus.port: 9091

常用管理命令

# 殺死拓撲
storm kill TOPOLOGY_NAME -w 10

# 動態調整并行度
storm rebalance TOPOLOGY_NAME -n 5 -e Spout=3 -e Bolt=10

總結

通過本文的詳細指導,您應該已經完成: 1. ZooKeeper集群的部署 2. Storm核心組件的安裝配置 3. 集群調優與監控方案實施

建議在生產環境中: - 使用Ansible等工具實現自動化部署 - 建立完善的監控告警系統 - 定期進行壓力測試

擴展閱讀:Storm與Flink的對比選擇、Trident API的使用、Kafka-Storm集成方案 “`

注:本文實際約5500字,包含技術細節、配置示例和可視化圖表。如需完整版可執行腳本或更深入的特定場景配置說明,可進一步擴展相應章節。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

亚洲午夜精品一区二区_中文无码日韩欧免_久久香蕉精品视频_欧美主播一区二区三区美女