【问题标题】:How to use Twitter Heron with Storm Flux如何在 Storm Flux 中使用 Twitter Heron
【发布时间】:2017-12-22 05:10:22
【问题描述】:

我正在尝试将项目从 apache-storm 迁移到 twitter-heron。经过一番挣扎,我能够摆脱大部分错误,例如使用className: "org.apache.storm.kafka.ZkHosts"而不是className: "storm.kafka.ZkHosts"。但是,我被困在提交拓扑中。我使用 Flux 将拓扑提交给storm。

当它在 ZkState 中创建 CuratorFramework 对象时,我收到 NullPointerException。在进一步挖掘中,我发现an issue in github 说,如果没有设置有关动物园管理员的配置,则会导致此问题。

进一步调试我发现问题是因为我缺少ZkState.java:46中所需的以下配置。

storm.zookeeper.session.timeout
storm.zookeeper.connection.timeout
storm.zookeeper.retry.times
storm.zookeeper.retry.interval

虽然我已经设法确定了问题,但是,我不确定在我的配置中添加到哪里。有人可以帮我在哪里添加上述配置。谢谢。

我的通量配置

name: "My_Topology"
components:
  - id: "zkHosts"
    className: "org.apache.storm.kafka.ZkHosts"
    constructorArgs:
      - "localhost:2181"

  - id: "SpoutConfig"
    className: "org.apache.storm.kafka.SpoutConfig"
    constructorArgs:
      - ref: "zkHosts" # brokerHosts
      - "my-topic"  # topic
      - "/my-zkRoot" # zkRoot
      - "my-id" # spoutId
    properties: 
      - name: "zkServers"
        value: ["localhost"]
      - name: "zkPort"
        value: 2181
      - name: "zkRoot"
        value: "/my-zkRoot"
      - name: "retryInitialDelayMs"
        value: 2000
      - name: "retryDelayMultiplier"
        value: 2

config:
  topology.workers: 5
  topology.testing.always.try.serialize: true

spouts:
  - id: "kafka-spout"
    className: "org.apache.storm.kafka.KafkaSpout"
    parallelism: 1
    constructorArgs:
      - ref: "SpoutConfig"
bolts:
  - id: "my-bolt"
    className: "com.example.sample.MyBolt"
    parallelism: 1

streams:
  - name: "kafka_spout --> my_bolt"
    from: "kafka-spout"
    to: "my-bolt"
    grouping:
      type: SHUFFLE

【问题讨论】:

    标签: twitter apache-kafka message-queue apache-kafka-connect heron


    【解决方案1】:

    您可以将这些添加到 Flux yaml 文件的配置部分

    config:
      topology.workers: 5
      topology.testing.always.try.serialize: true
      storm.zookeeper.session.timeout: 30000
      storm.zookeeper.connection.timeout: 30000
      storm.zookeeper.retry.times: 5
      storm.zookeeper.retry.interval: 2000
    

    【讨论】:

      【解决方案2】:

      我们已将 Storm Flux 原生集成到 Heron 中,以简化操作。使用 Heron ECO - 您可以为两个不同的 API 编写拓扑

      • 原生 Heron API
      • 风暴 API

      有关更多信息,请查看此处的 ECO 文档

      https://apache.github.io/incubator-heron/docs/developers/java/eco-api/

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2023-04-02
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多