Apache Storm 2.0分布式计算系统可用

看到了光 分布式事件处理系统的重大发布 阿帕奇风暴2.0,值得注意的是它过渡到用 Java 实现的新架构,而不是以前使用的 Clojure 语言。

该项目允许您实时组织各种事件的保证处理。 例如,Storm可用于实时分析数据流、运行机器学习任务、组织连续计算、实现RPC、ETL等。 系统支持集群、创建容错配置、有保障的数据处理模式,并且具有高性能,足以在一个集群节点上处理每秒百万级以上的请求。

支持与各种队列处理系统和数据库技术的集成。 Storm 架构涉及使用任意复杂处理器接收和处理非结构化、不断更新的数据流,并且能够在不同的计算阶段之间进行分区。 Twitter 收购了最初开发该框架的公司 BackType 后,该项目被移交给 Apache 社区。 在实践中,Storm 在 BackType 中被用来分析微博中事件的反映,通过动态比较新推文和其中使用的链接(例如,评估 Twitter 上发布的外部链接或公告如何被其他参与者转播) )。

Storm的功能与Hadoop平台相比,主要区别在于数据不存储在仓库中,而是从外部摄取并实时处理。 Storm没有内置存储层,分析查询开始应用于传入数据,直到被取消(而Hadoop使用有限时间的MapReduce作业,Storm使用连续运行“拓扑”的思想)。 处理程序的执行可以分布在多个服务器上 - Storm 自动使用不同集群节点上的线程并行化工作。

该系统最初是用 Clojure 编写的,并在 JVM 虚拟机内运行。 Apache 基金会发起了一项将 Storm 迁移到用 Java 编写的新内核的计划,其结果在 Apache Storm 2.0 版本中提出。 该平台的所有基本组件均用 Java 重写。 保留了对在 Clojure 中编写处理程序的支持,但现在以绑定的形式提供。 Storm 2.0.0需要Java 8。多线程处理模型已经完全重新设计,允许 实现 性能显着提高(对于某些拓扑,延迟减少了 50-80%)。

Apache Storm 2.0分布式计算系统可用

新版本还提供了新类型的 Streams API,允许您使用函数式编程风格的操作来定义处理程序。 新的 API 在标准基础 API 之上实现,并支持自动合并操作以优化其处理。 用于窗口操作的Windowing API 添加了对后端保存和恢复状态的支持。

支持在做出决策时考虑额外资源,但不限于
CPU 和内存,例如网络和 GPU 设置。 进行了大量改进以确保与平台的集成 卡夫卡。 访问控制系统已扩展为包括创建管理员组和委托令牌的功能。 添加了与 SQL 和指标支持相关的改进。 管理员界面中出现了用于调试集群状态的新命令。

Storm的应用领域:

  • 实时处理新数据流或数据库更新;
  • 连续计算:Storm可以运行连续查询并处理连续流,将处理结果实时交付给客户端。
  • 分布式远程过程调用 (RPC):Storm 可用于提供资源密集型查询的并行执行。 Storm 中的作业(“拓扑”)是分布在节点之间的功能,它等待需要处理的消息到达。 函数接收到消息后,在本地上下文中对其进行处理并返回结果。 使用分布式 RPC 的一个示例是并行处理搜索查询或对大量集合执行操作。

风暴特点:

  • 简单的编程模型,大大简化了实时数据处理;
  • 支持任何编程语言。 模块可用于 Java、Ruby 和 Python,由于通信协议非常简单,只需大约 100 行代码即可支持,因此很容易适应其他语言;
  • 容错性:要运行数据处理作业,您需要生成带有代码的jar文件。 Storm将独立地在集群节点上分发这个jar文件,连接与其关联的处理程序,并组织监控。 当作业完成后,该代码将在所有节点上自动禁用;
  • 水平可扩展性。 所有计算均以并行模式进行;随着负载的增加,只需将新节点连接到集群即可;
  • 可靠性。 Storm 确保每条传入消息至少被完全处理一次。 仅当消息通过所有处理程序时没有错误时,才会处理一次;如果出现问题,则将重复不成功的处理尝试。
  • 速度。 Storm 的代码在编写时考虑了高性能,并使用该系统进行快速异步消息传递 零MQ.

来源: opennet.ru

添加评论