Apache Apex – 简介

已发表: 2015-12-29

Apache Hadoop 已成为可靠、可扩展、分布式和大规模计算的事实上的软件框架。 自成立以来,Hadoop 一直是批处理的首选框架。 从大型银行到在线零售巨头,每个人都在使用 Hadoop 进行定期报告生成、计算和更多用例。 通常,这些用例是面向批处理的过程,需要几个小时才能从数据中获得意义。 当今的快速世界几乎在生成原始数据时就需要其意义或行动。 这导致了流处理的概念。 尽管最初认为 Hadoop 不适合流处理,但 YARN(Hadoop 2.0)的发明使其成为它的理想选择。 目前Hadoop生态系统中有多种流处理框架,Apex是进入这个拥挤市场的全新框架。

什么是 Apache Apex?

Apache Apex 是基于 YARN 的原生平台,可帮助应用程序开发人员编写面向流和面向批处理的应用程序。 它旨在以分布式、高性能、容错的方式处理动态数据。 冰上一层是简单的 API,它使用户能够在有限的流处理知识的情况下编写他们的 java 代码。

Apex 基于单独的功能和操作规范,而不是将它们组合在一起。 这使得应用程序开发人员可以专注于编写用户定义的函数,而不必考虑他们将如何在分布式环境中运行。

Apache Apex 拥有丰富的常用函数库。 这些是作为 Apache Apex-Malhar 库的一部分添加的。 该库具有访问不同文件系统、数据库、消息队列的操作员。 社区每天都在增加运营商,使应用程序开发人员的生活更加轻松。

Apache Apex 的核心块是什么?

Apex 的架构非常简单。 Apex 有 Malhar,一个可以使用的算子库和核心引擎。 Apex 的核心可以描述如下,它们通常被称为 Apache Apex 的主要块。

Apache Apex 的核心块

您可以清楚地分离图层,并可以在适合的位置获得概览。 让我们看看有关这些块的信息。

  1. StrAM 流应用程序大师)
    StrAM 是 YARN 应用大师。 它的职责包括流应用程序启动、资源分配、调度逻辑 DAG。 除了这些 YARN 操作,StrAM 还初始化操作符、流。 StrAM 还从其子代收集统计数据。
  2. 状态快照
    流处理框架无法承受丢失处理结果的后果。 此外,他们必须知道他们已经处理了多少才能在从故障中恢复后正确处理记录。 所以周期性地,检查点在流处理中很重要。 在 Apex 中,StrAM 跟踪检查点,并且在操作员边界处,定期检查点在 HDFS 上执行。
  3. REST API
    StrAM 是 REST API 的访问点。 外部工具可以访问此 REST API 并与任何外部应用程序集成。
  4. 工具
    Apex 提供 CLI 来启动和监控 Apex 应用程序。 甚至我们可以在 REST API 的帮助下构建自己的。 与 CLI 一起,应用程序可以配置静态配置脚本以自动启动。
  5. 分区
  6. Apex 提供基于键和动态负载平衡的分区。 甚至用户也可以定义自己的分区方案。

  7. 动态修改
  8. Apache Apex 具有这个非常有用且独特的功能。 它支持逻辑 DAG 更改、物理执行计划更改。

  9. 服务水平协议分析
    Apache Apex 会定期自行进行 SLA 分析。 它进行延迟、瓶颈和吞吐量分析,并添加更多资源以满足配置的 SLA。
  10. 安全
  11. Apex 支持 Kerberos。 作为底层安全 Hadoop 集群,它可以通过固有的 Kerberos 集成进行访问。

  12. 高可用性
    Apache Apex 利用 YARN 的重新启动功能并从上次检查点状态重新启动。
  13. 马尔哈尔
    Apache Apex –Malhar 是具有众多运算符的运算符库。 这些运算符分为
    • 输入/输出运算符
      在这个类别下,目前 Malhar 有操作员可以读取/写入
    • 文件系统
    • 关系型数据库管理系统
    • NoSQL 存储
    • 消息队列
    • 内存数据库
    • 社交媒体
  14. 计算运算符 –
  15. Malhar 有许多有助于实际业务逻辑实现的运算符。 这个图书馆有

        • 模式匹配
        • 统计和数学
        • 机器学习
        • 解析器
        • 社交媒体
      • 缓冲服务器

      缓冲服务器位于每个运营商边界。 在数据的情况下,本地运算符缓冲服务器可以在运算符字符串之后。 它们的主要目的是在转发到下一个之前在边缘临时保存数据。 当节点从故障中恢复时,它们起着重要作用。 缓冲服务器从最后一个检查点状态加载数据以重播

      什么是 Apex 应用程序编程模型?

      这具有丰富的框架和 Malhar 库,这意味着应用程序开发人员只需要连接运营商并启动应用程序。 因此,您的应用程序只不过是一系列运算符。

      Apex 应用程序编程模型

      这就是丰富的框架使开发人员的生活变得轻松的方式。 那么让我们看看这个演示应用程序是如何运行的

      Apache Apex 演示

      因此,让我们从“ Hello World of Big Data J”开始,这是一个使用 Apache Apex 进行字数统计的小演示。

      设置 Apache Apex

      要运行此演示,我们需要配置 Apex。 您可以在现有集群上安装 Apache Apex,或者有简单的试用方法,您可以从此处从 DataTorrent 网站下载预安装沙箱 VM。 对于此演示,我们将使用预安装的 VM。

      演练 Apex UI 控制台

      Apex 带有一个非常直观且设计精美的 UI 控制台,您可以使用它来启动、监控和管理应用程序。 它包括有关已部署的不同组件的各种统计信息。

      之后,您已经下载了沙盒虚拟机,解压缩它并将其加载到您最喜欢的虚拟机播放器中(我使用 VMWare 虚拟机播放器)。 运行 Apex 所需的所有软件和工具都已在此 VM 中配置,并且所有启动脚本都配置为在操作系统启动时执行。 因此,当您的 VM 启动时,您将拥有正在运行的 Apache Apex 实例。 现在,要查看控制台,只需在您喜欢的 Web 浏览器中点击 http://locahost:9090 并登录到控制台。 默认用户名:沙盒 VM 的密码为 dtadmin:dtadmin。 您将看到如下控制台

      Apache Apex UI 控制台

      此页面为我们提供了所有系统的完整概述,例如 CPU 和内存使用情况、应用程序、性能、问题等。

      要部署应用程序,请转到页面顶部的开发选项卡。

      数据洪流

      在这里,您可以部署应用程序包,并可以管理 Apex 内数据的元组模式。

      Apex 为您提供了许多开箱即用的应用程序,您可以在下面看到这些应用程序:

      数据洪流

      字数演示

      现在,让我们启动 wordcount 应用程序。 您可以通过单击 DataTorrent Wordcount Demo 旁边的启动应用程序选项来执行此操作。 接下来,您可以提供不同的应用程序并根据需要修改配置详细信息(我们不会这样做,因为大多数默认设置都可以正常工作,我们只需将应用程序名称修改为“MyWordCountDemo”)。 您将看到一条消息,说明应用程序已成功部署,并带有指向该应用程序的链接。 单击该链接。

      字数演示

      这将打开一个新页面。 等待几秒钟,直到应用程序状态从 Accepted 变为 Running。 您现在将看到一个充满各种统计数据和信息的页面。 接下来的两个屏幕截图描述了它们。

      字数演示

      Apache Apex UI 控制台

      该页面向我们展示了各种信息,例如应用程序的逻辑、物理和度量视图,以及应用程序每秒处理的各种元组/记录的统计信息。 它显示了发出的元组的图形表示和延迟等。

      您可以单击任何逻辑运算符,检查其记录,甚至记录样本。 让我们为控制台操作员这样做。 点击控制台操作员,您将获得有关操作员的详细信息,如下所示:

      Apache Apex UI 控制台

      接下来,选择其中一个分区并单击记录样本。

      Apache Apex UI 控制台

      几秒钟后,您将看到元组已填充,单击元组以查看其内容。 从内容可以看出,应用程序已经对基于windows的数据进行了wordcount,在这个window的第0个输入元组中有2个“to”、4个“the”、4个“a”等。 您现在可以通过单击应用程序主页上的“关闭”或“终止”来停止应用程序。

      就是这样,我们已经成功部署并运行了 wordcount 应用程序。

      结论

      这就是对新流媒体工具 Apache Apex 的介绍,并在 Apache Apex 中成功运行了应用程序。 Apache Apex 具有许多显着的特性,使其优于其他现有框架,我将在后续文章中介绍。