【问题标题】:Packaging storm and cassandra into an executable jar using maven使用maven将storm和cassandra打包成可执行jar
【发布时间】:2014-01-20 09:29:09
【问题描述】:

有没有办法将storm和cassandra打包到一个可执行的jar中,这样作为运行jar的一部分,一个单节点storm和cassandra将被部署并为程序提供服务。

谢谢。

【问题讨论】:

  • 您是否计划在未来使用 Zookeeper 来最终使用节点集群?如果没有,我会在“主”java 中构建一个 LocalCluster 并构建一个 Exec jar,它应该可以工作。
  • @zenbeni 谢谢。这是一个没有集群的简单示例,但既然您已经提到它,我可能需要某种消息代理,例如 apache kafka,我认为它们通常配对在一起。可以在“main”中以相同的方式构建吗?

标签: java maven cassandra apache-storm


【解决方案1】:

我认为您对 Storm 架构的工作方式有些困惑,除非您真的打算在本地模式下运行 Storm,在这种情况下,如果您有 Cassandra 集群,我不确定您为什么要这样做:本地模式仅用于测试,许多情况下的性能会比实际集群差。您只需编写多线程代码即可在本地获得更好的性能,而无需引入所有 Storm 功能,这些功能实际上旨在帮助在可能不可靠的集群上进行稳健的流处理。

在我看来,您可能真正想要做的是让每个 Cassandra 节点也成为运行一个(或多个)工作人员的 Storm 主管节点。您还需要在某个地方拥有一个 Nimbus 服务器和一个 Zookeeper 集群来完成整个工作。

考虑到这一切,我想理论上可以将它们全部放在一个罐子里,但这似乎比它的价值更麻烦。 Cassandra 节点和 Storm 管理器的设置已经非常简单,而且它们没有理由不能在同一台服务器上一起运行,所以我建议不要这样做。

此外,我不清楚您的用例,但很难想象您真正想要这样做的情况。唯一想到的事情是(a)您的 Cassandra 工作负载非常重,节点上没有发生真正的计算,或者(b)您有过度配置的物理硬件,您希望在这些硬件上占用闲置容量。否则,我认为为 Storm 和 Cassandra 使用单独的机器几乎肯定会更好。

【讨论】:

  • @Gordon 感谢您的彻底回答。正如您所提到的,这不是通常的用例。我正在尝试设置一个开箱即用,没有部署/安装消息/简单分析引擎。
  • 它仍然需要能够承受合理的工作负载而不会丢失数据——这就是为什么使用 Storm 拓扑进行简单解析、cassandra 作为快速读/写数据库以及 kafka 用于消息传递的原因经纪人似乎是个好主意。
猜你喜欢
  • 2017-05-12
  • 1970-01-01
  • 2013-04-20
  • 2016-12-18
  • 1970-01-01
  • 2015-03-15
  • 1970-01-01
  • 2013-06-15
  • 2020-05-21
相关资源
最近更新 更多