2015-05-23 90 views
17

我一般以下形式的Apache星火应用程序/脚本一对夫妇的使用情况,:阿帕奇星火应用程序部署的最佳实践

一般ETL使用情况 - 更具体的是卡桑德拉列家族的转型包含许多事件(将事件采购视为各种聚合列家族)。

流媒体使用案例 - 事件到达系统时的实时分析。

对于(1),我需要定期启动Spark应用程序。

对于(2),只需在启动时启动长时间运行的Spark Streaming进程并让它启动。

(注意 - 我使用星火独立的集群管理器,所以没有纱线或mesos)

我试图找出为Spark应用中最常见/最佳实践部署策略。

到目前为止,我可以看到的选项:

  1. 部署我的程序作为一个罐子和运行的各种任务火花提交 - 这似乎是一路火花文档推荐。关于这种策略的一些想法:

    • 你如何开始/停止任务 - 只使用简单的bash脚本?
    • 调度如何管理? - 只需使用cron?
    • 有什么韧性? (例如,是谁安排的工作如果司机服务器死机运行?)
  2. 创建一个单独的Web应用程序作为驱动程序。

    • 产生火花上下文编程交谈的火花集群
    • 允许用户通过使用Quartz HTTP接口
    • 揭开序幕任务(例如)管理调度
    • 可以使用集群饲养员选举弹性
  3. 星火作业服务器https://github.com/ooyala/spark-jobserver

    • 对于我来说,我认为没有太大的好处,因为我还没有许多团队和项目与Spark交谈,并且仍然需要一些应用程序与作业服务器交谈
    • 没有调度内置据我可以看到

我想了解的普遍共识WRT一个简单但强大的部署策略 - 我一直无法通过拖网确定一个网络,至今。

非常感谢!

回答

6

即使你不使用Mesos的火花,你可以看看

- Chronos提供分布式和容错的cron

- Marathon长期运行的应用程序

一个Mesos框架请注意,这并不意味着您必须将spark部署移至mesos,例如你可以使用chronos触发spark -submit。

我希望我能正确理解你的问题,这可以帮助你一点点!

+0

非常感谢,Chronous似乎做了我想做的事情,但我希望远离部署Mesos集群(我宁愿将基础结构的复杂性保持在小一点,因为Spark初始用例很简单)。尽管如此,请仔细观察一下 - 谢谢! – lucas1000001